ข้อจำกัดความรับผิดชอบ: เกมประเภทที่ฉันชอบตลอดเวลานั้นเป็นแบบข้อความและฉันเขียนสิ่งนี้เป็นโปรแกรมเมอร์ตัวเก่าของ MUD เก่า
ฉันคิดว่าคำถามสำคัญที่คุณต้องถามตัวเองคือ: คุณต้องการเธรดหรือไม่ ฉันเข้าใจว่าเกมกราฟิกอาจมีการใช้งาน MT มากกว่า แต่ฉันคิดว่ามันขึ้นอยู่กับกลไกของเกมด้วย (มันอาจจะคุ้มค่าเมื่อพิจารณาด้วย GPUs, CPU และทรัพยากรอื่น ๆ ที่เรามีในปัจจุบันมีพลังมากกว่าซึ่งทำให้คุณกังวลเกี่ยวกับทรัพยากรที่เป็นปัญหาอย่างที่คุณเห็น นอกจากนี้ยังขึ้นอยู่กับวิธีที่คุณกำหนด 'ตัวละครทั้งหมดในครั้งเดียว' คุณหมายถึงในเวลาเดียวกันแน่นอน? คุณจะไม่มีสิ่งนั้นในขณะที่ปีเตอร์ชี้ให้เห็นอย่างถูกต้องดังนั้นในครั้งเดียวนั้นไม่เกี่ยวข้องในความหมายที่แท้จริง มันจะปรากฏแบบนี้เท่านั้น
สมมติว่าคุณจะไปกับเธรด: คุณไม่ควรพิจารณา 100 เธรด (และฉันจะไม่พิจารณาด้วยซ้ำว่า CPU ของคุณมีมากเกินไปหรือไม่; ฉันอ้างถึงภาวะแทรกซ้อนและการใช้งานจริงเท่านั้น)
แต่โปรดจำไว้ว่าการทำเธรดหลายอันไม่ใช่เรื่องง่าย (ดังที่ Philipp ชี้ให้เห็น) และมีปัญหามากมาย คนอื่นมีประสบการณ์มากกว่า (มาก) กับ MT แต่ฉันจะบอกว่าพวกเขาก็จะแนะนำสิ่งเดียวกัน (แม้ว่าพวกเขาจะมีความสามารถมากกว่าที่ฉันจะเป็น - โดยเฉพาะอย่างยิ่งไม่มีการฝึกฝนในส่วนของฉัน)
บางคนโต้แย้งว่าพวกเขาไม่เห็นด้วยกับหัวข้อที่ว่าไม่มีประโยชน์และบางคนโต้แย้งว่าวัตถุแต่ละอันควรมีเธรด แต่ (และอีกครั้งนี่เป็นข้อความทั้งหมด แต่แม้ว่าคุณจะพิจารณามากกว่าหนึ่งเธรดที่คุณไม่ต้องการ - และไม่ควรพิจารณามันสำหรับแต่ละวัตถุ) เนื่องจาก Philipp ชี้ให้เห็นว่าเกมมีแนวโน้มที่จะวนซ้ำในรายการ แต่ถึงกระนั้นมันก็ไม่เพียง (ตามที่เขาแนะนำแม้ว่าฉันจะรู้ว่าเขาตอบสนองต่อพารามิเตอร์ของคุณของวัตถุเพียงเล็กน้อยเท่านั้น) สำหรับวัตถุจำนวนน้อย ใน MUD ฉันเป็นโปรแกรมเมอร์สำหรับเรามีดังต่อไปนี้ (และนี่ไม่ใช่กิจกรรมทั้งหมดที่เกิดขึ้นตามเวลาจริงดังนั้นโปรดจำไว้ด้วย)
(จำนวนอินสแตนซ์จะแตกต่างกันไปตามหลักสูตร - สูงและต่ำ)
โทรศัพท์มือถือ (NPC เช่นตัวละครที่ไม่ใช่ผู้เล่น): 2614; ต้นแบบ: 1360 วัตถุ: 4457; ต้นแบบ: 2281 ห้อง: 7983; แบบตัวอย่าง: 7983 แต่ละห้องมีตัวอย่างของตัวเองโดยปกติ แต่เรายังมีห้องแบบไดนามิกที่จะพูดห้องภายในห้อง; หรือห้องที่อยู่ในมือถือเช่นท้องของมังกร หรือห้องในวัตถุเช่นคุณป้อนวัตถุวิเศษ) โปรดทราบว่าห้องไดนามิกเหล่านี้มีอยู่ตามวัตถุ / ห้อง / มือถือที่กำหนดไว้จริง ใช่นี่เป็นเหมือน World of Warcraft (ฉันไม่เล่น แต่เพื่อนให้ฉันเล่นเมื่อฉันมีเครื่อง Windows สักครู่) ความคิดของอินสแตนซ์ยกเว้นเรามีมันมานานก่อนที่ World of Warcraft จะมีอยู่
สคริปต์: 868 (ปัจจุบัน) (คำสั่งสถิติของเราไม่พอแสดงจำนวนต้นแบบที่เรามีดังนั้นฉันจะเพิ่มที่) ทั้งหมดนี้จัดขึ้นในพื้นที่ / โซนและเรามีทั้งหมด 103 แห่ง นอกจากนี้เรายังมีขั้นตอนพิเศษที่ proc ในเวลาที่ต่างกัน เรายังมีกิจกรรมอื่น ๆ จากนั้นเรายังมีซ็อกเก็ตเชื่อมต่อ โทรศัพท์เคลื่อนที่ไปมาทำกิจกรรมต่าง ๆ (นอกเหนือจากการต่อสู้) มีปฏิสัมพันธ์กับผู้เล่นและอื่น ๆ (เช่นเอนทิตีประเภทอื่น ๆ )
เราจะจัดการทั้งหมดนี้ได้อย่างไรโดยไม่ชักช้า?
ซ็อกเก็ต: select (), คิว (อินพุต, เอาท์พุท, เหตุการณ์, สิ่งอื่น ๆ ), บัฟเฟอร์ (อินพุต, เอาต์พุต, สิ่งอื่น ๆ ) ฯลฯ สิ่งเหล่านี้มีการสำรวจ 10 ครั้งต่อวินาที
ตัวละคร, วัตถุ, ห้องพัก, การต่อสู้, ทุกอย่าง: ทั้งหมดอยู่ในวงวนกลางในพัลส์ที่แตกต่างกัน
นอกจากนี้เรายัง (การนำไปใช้ของฉันตามการสนทนาระหว่างผู้ก่อตั้ง / โปรแกรมเมอร์อื่น ๆ และตัวฉันเอง) มีการติดตามรายการที่เชื่อมโยงอย่างกว้างขวางและการทดสอบความถูกต้องของตัวชี้และเรามีแหล่งข้อมูลฟรีมากกว่าที่เพียงพอหากเราต้องการ ทั้งหมดนี้ (ยกเว้นที่เราขยายโลกออกไป) มีอยู่เมื่อหลายปีก่อนเมื่อมี RAM น้อยกว่า, พลัง CPU, พื้นที่ว่างในฮาร์ดดิสก์ ฯลฯ และแน่นอนว่าแม้เราจะไม่มีปัญหาก็ตาม ในลูปที่อธิบาย (สคริปต์ทำให้สิ่งนี้เป็นพื้นที่ทำซ้ำ / repopulations เช่นเดียวกับสิ่งอื่น ๆ ) อสุรกายวัตถุ (รายการ) และสิ่งอื่น ๆ กำลังถูกสร้างปลดปล่อยและอื่น ๆ การเชื่อมต่อยังได้รับการยอมรับการสำรวจและทุกสิ่งที่คุณคาดหวัง