นี่คือกระบวนการกับคำถามของเธรดโดยทั่วไปแล้วจะไม่แตกต่างกันบางครั้งเธรดเรียกว่ากระบวนการที่มีน้ำหนักเบา ความแตกต่างที่ใหญ่ที่สุดคือกระบวนการแยกต่างหากมีพื้นที่ที่อยู่ของตัวเอง แต่มีความแตกต่างอื่น ๆ (1):
ต่อกระบวนการ
- พื้นที่ที่อยู่
- ตัวแปรทั่วโลก
- เปิดไฟล์
- กระบวนการลูก
- สัญญาณเตือนที่ค้างอยู่อินเตอร์รัปต์และตัวจัดการสัญญาณ
ต่อกระทู้
- โปรแกรมนับ
- ลงทะเบียน
- ซ้อนกัน
- สถานะ
ขึ้นอยู่กับความแตกต่างเหล่านี้มันอาจจะมีประโยชน์ที่จะมีเซิร์ฟเวอร์และเธรดไคลเอนต์ในกระบวนการเดียวกันเพื่อให้คุณสามารถใช้ตัวจัดการไฟล์และตัวแปรร่วม นี่จะเป็นข้อโต้แย้งสำหรับแนวทาง 'ในกระบวนการเดียวกัน' อีกข้อโต้แย้งหนึ่ง (เล็ก ๆ ) ก็คือคุณจะได้รับป๊อปอัป 'Windows Firewall' เพียงรายการเดียวต่อกระบวนการ อาร์กิวเมนต์สำหรับแนวทาง 'กระบวนการที่แตกต่าง' อาจเป็นได้ว่าบุคคลสามารถเรียกใช้เซิร์ฟเวอร์หลายเครื่องโดยไม่ต้องเรียกใช้ไคลเอ็นต์หลายเครื่อง นี่จะเหมาะสำหรับโฮสต์ที่เฉพาะเจาะจงเช่นการตั้งค่าและเป็นวิธีการที่เรามักจะเห็นในนักกีฬาคนแรก
ตอนนี้สำหรับแนวคิดที่จะมีกระบวนการเซิร์ฟเวอร์หรือเธรดแม้สำหรับการเล่นแบบออฟไลน์ (และอาจจะสำหรับผู้เล่นคนเดียว) นี่เป็นความคิดที่ยอดเยี่ยมที่ใช้ในทางปฏิบัติมาก คุณสามารถบอกได้ว่ามีเกมมากมายที่ทำสิ่งนี้โดยการดูที่หน้าจอการโหลดคำแนะนำเล็ก ๆ เช่น 'การรับ' จะให้ไป การทำเช่นนี้มีเหตุผลเพราะหากคุณจะสร้างผู้เล่นหลายคนกฎส่วนใหญ่ของเกมจะอยู่ภายใต้การควบคุมของเซิร์ฟเวอร์ดังนั้นทำไมไม่มีกฎควบคุมพวกเขาสำหรับผู้เล่นคนเดียว สิ่งนี้จะช่วยลดรหัสที่คุณต้องเขียนและให้การแยกที่ชัดเจนระหว่างไคลเอนต์และ 'เกม' ซึ่งจะปรับปรุงคุณภาพรหัสของคุณ
ตอนนี้วิธีการสื่อสารระหว่างกระบวนการและหัวข้อ? การสื่อสารข้ามกระบวนการสามารถทำได้หลายวิธี (ชื่อ -) ไพพ์หน่วยความจำที่แชร์ COM มันขึ้นอยู่กับเทคโนโลยีที่คุณใช้ อย่างไรก็ตามหากคุณกำลังสร้างเซิร์ฟเวอร์คุณอาจต้องการไปกับกลุ่มเครือข่ายโดยใช้ซ็อกเก็ตและบางสิ่งที่ชอบของ TCP นี่เป็นสิ่งที่ LIDGREN จะมีประโยชน์
เทคนิคเหล่านี้จำนวนมากยังใช้ได้กับการสื่อสารข้ามเธรด แต่สิ่งนี้ขึ้นอยู่กับเทคนิคที่คุณใช้ คุณสามารถไปกับ TCP ได้อีกครั้ง แต่บางทีระบบที่เรียบง่ายกว่านั้นก็อาจจะเป็นเหตุการณ์และการจัดระเบียบบางอย่างถึงแม้ว่าสิ่งนี้จะทำให้เกมของคุณไม่วนซ้ำ (2)
แหล่งที่มา
- การออกแบบและการใช้งานระบบปฏิบัติการ (หนังสือ MINIX) ฉบับที่ 3 โดย Andrew S. Tanenbaum
- แก้ไขการประทับเวลาของคุณโดย Glenn Fiedler: http://gafferongames.com/game-physics/fix-your-timestep/