2
นี่เป็นสถาปัตยกรรมที่เหมาะสมสำหรับเกมบนมือถือ MMORPG ของเราหรือไม่
ทุกวันนี้ฉันพยายามออกแบบสถาปัตยกรรมของเกม MMORPG บนมือถือใหม่สำหรับ บริษัท ของฉัน เกมนี้คล้ายกับ Mafia Wars, iMobsters หรือ RISK แนวคิดพื้นฐานคือการเตรียมกองทัพให้พร้อมเพื่อต่อสู้กับคู่ต่อสู้ของคุณ (ผู้ใช้ออนไลน์) แม้ว่าก่อนหน้านี้ฉันเคยทำงานกับแอพมือถือหลายตัว แต่นี่เป็นสิ่งใหม่สำหรับฉัน หลังจากการต่อสู้อย่างหนักฉันได้พบกับสถาปัตยกรรมที่แสดงด้วยความช่วยเหลือของแผนภาพการไหลระดับสูง: เราตัดสินใจที่จะไปกับรูปแบบไคลเอนต์ - เซิร์ฟเวอร์ จะมีฐานข้อมูลส่วนกลางบนเซิร์ฟเวอร์ ลูกค้าแต่ละรายจะมีฐานข้อมูลท้องถิ่นของตัวเองซึ่งจะยังคงซิงค์กับเซิร์ฟเวอร์ ฐานข้อมูลนี้ทำหน้าที่เป็นแคชสำหรับจัดเก็บสิ่งต่าง ๆ ที่ไม่เปลี่ยนแปลงบ่อยครั้งเช่นแผนที่ผลิตภัณฑ์สินค้าคงคลังเป็นต้น ด้วยรุ่นนี้ฉันไม่แน่ใจว่าจะแก้ไขปัญหาต่อไปนี้ได้อย่างไร: อะไรจะเป็นวิธีที่ดีที่สุดในการซิงโครไนซ์เซิร์ฟเวอร์และฐานข้อมูลลูกค้า เหตุการณ์ควรถูกบันทึกลงในฐานข้อมูลท้องถิ่นก่อนที่จะอัปเดตไปยังเซิร์ฟเวอร์หรือไม่ ถ้าแอพยุติลงด้วยเหตุผลบางอย่างก่อนที่จะบันทึกการเปลี่ยนแปลงในฐานข้อมูลส่วนกลาง คำร้องขอ HTTP แบบง่ายจะมีจุดประสงค์ในการซิงโครไนซ์หรือไม่ จะทราบได้อย่างไรว่าผู้ใช้คนใดที่เข้าสู่ระบบอยู่ในปัจจุบัน? (วิธีหนึ่งอาจให้ไคลเอนต์ส่งคำขอไปยังเซิร์ฟเวอร์หลังจากทุก ๆ x นาทีเพื่อแจ้งว่ามีการใช้งานอยู่มิฉะนั้นให้ถือว่าไคลเอ็นต์ไม่ทำงาน) การตรวจสอบด้านลูกค้าเพียงพอหรือไม่ หากไม่มีวิธีการคืนค่าการกระทำหากเซิร์ฟเวอร์ไม่ได้ตรวจสอบบางอย่าง? ฉันไม่แน่ใจว่านี่เป็นวิธีแก้ปัญหาที่มีประสิทธิภาพหรือไม่ ฉันจะขอบคุณมาก ๆ ถ้าคนที่ทำงานในแอพนั้นสามารถแบ่งปันประสบการณ์ซึ่งอาจช่วยให้ฉันได้เจอสิ่งที่ดีกว่า ขอบคุณล่วงหน้า. ข้อมูลเพิ่มเติม: ฝั่งไคลเอ็นต์ถูกนำไปใช้ในเอ็นจิ้นเกม C ++ ที่เรียกว่ามาร์มาเลด นี่คือเอ็นจิ้นเกมข้ามแพลตฟอร์มซึ่งหมายความว่าคุณสามารถเรียกใช้แอพของคุณในระบบปฏิบัติการมือถือที่สำคัญทั้งหมด เราสามารถบรรลุเธรดได้อย่างแน่นอนและยังแสดงให้เห็นในแผนภาพการไหลของฉัน …