การออกแบบเกมแบบดั้งเดิมอย่างที่ฉันรู้นั้นใช้ความหลากหลายและฟังก์ชั่นเสมือนจริงเพื่ออัพเดทสถานะของเกม กล่าวอีกนัยหนึ่งชุดฟังก์ชั่นเสมือนจริงจะถูกเรียกในช่วงเวลาปกติ (เช่น: ต่อเฟรม) ในทุกวัตถุในเกม
เมื่อเร็ว ๆ นี้ฉันค้นพบว่ามีอีกระบบการส่งข้อความที่ขับเคลื่อนด้วยเหตุการณ์เพื่อปรับปรุงสถานะของวัตถุเกม ที่นี่วัตถุมักจะไม่ได้รับการปรับปรุงในแต่ละเฟรม แต่จะมีการสร้างระบบการส่งข้อความเหตุการณ์ที่มีประสิทธิภาพสูงและวัตถุเกมจะได้รับการอัพเดตหลังจากได้รับข้อความเหตุการณ์ที่ถูกต้องเท่านั้น
จัดกิจกรรมขับเคลื่อนสถาปัตยกรรมเกมจะอธิบายได้ดีใน: เกมการเข้ารหัสที่สมบูรณ์โดยไมค์แมคชาฟฟรี
ฉันขอความช่วยเหลือจากคำถามต่อไปนี้:
- อะไรคือข้อดีและข้อเสียของทั้งสองวิธีคืออะไร?
- อันไหนดีกว่าอีกอัน?
- การออกแบบเกมเป็นไปตามหลักสากลและดีกว่าในทุก ๆ ด้านหรือไม่? ดังนั้นจึงแนะนำให้ใช้งานแม้ในแพลตฟอร์ม mombile?
- อันไหนมีประสิทธิภาพมากขึ้นและยากต่อการพัฒนา
เพื่อชี้แจงคำถามของฉันไม่ได้เกี่ยวกับการลบความหลากหลายโดยสิ้นเชิงจากการออกแบบเกม ฉันเพียงต้องการที่จะเข้าใจความแตกต่างและผลประโยชน์จากการใช้การส่งข้อความที่ขับเคลื่อนด้วยเหตุการณ์และการโทรปกติ (ต่อเฟรม) ไปยังฟังก์ชั่นเสมือนจริงเพื่ออัปเดตสถานะเกม
ตัวอย่าง: คำถามนี้ทำให้เกิดความขัดแย้งเล็กน้อยที่นี่ดังนั้นฉันขอเสนอตัวอย่าง: ตาม MVC เครื่องมือเกมแบ่งออกเป็นสามส่วนหลัก:
- Application Layer (การสื่อสารของฮาร์ดแวร์และระบบปฏิบัติการ)
- เกมลอจิก
- มุมมองเกม
ในเกมแข่งรถ Game View รับผิดชอบในการแสดงผลหน้าจอโดยเร็วที่สุดอย่างน้อย 30 เฟรมต่อวินาที Game View รับฟังอินพุตของผู้เล่นด้วย ตอนนี้สิ่งนี้เกิดขึ้น:
- ผู้เล่นกดแป้นคันเร่งเป็น 80%
- GameView สร้างข้อความ "เหยียบเชื้อเพลิงรถยนต์ 2 กดถึง 80%" และส่งไปที่ Game Logic
- เกมลอจิกได้รับข้อความประเมินคำนวณตำแหน่งและพฤติกรรมของรถยนต์ใหม่และสร้างข้อความต่อไปนี้สำหรับ GameView: "Draw Car 2 Fuel Pedal Pressed 80%", "Car 2 Sound Acceleration", "Car 2 Coordinates X, Y" .. .
- GameView ได้รับข้อความและดำเนินการตามนั้น
update
พวกเขา) ครั้งที่สองที่คุณสามารถทำได้ด้วยการส่งข้อความด้วยเหตุผลต่างๆ