รหัสปรัชญา / โครงสร้างของนามธรรม / การออกแบบโปรแกรมจะอนุญาตให้เกมที่จะใช้กับกราฟิก 2D และ 3D (แยก) โดยไม่ต้องรหัสตรรกะเกมอีกครั้ง?
เรากำลังพูดถึงการใช้รหัสเดียวกันเปลี่ยนสิ่งต่าง ๆ น้อยที่สุด (ตัวอย่างเช่นแลกเปลี่ยนชื่อไฟล์สำหรับเนื้อหา 2 มิติด้วยชื่อไฟล์สำหรับเนื้อหา 3 มิติ) และอาจเสียบปลั๊กเฉพาะในคลาสพื้นฐานต่อ generics / เทมเพลต
หากต้องการวางไว้ในบริบทที่เหมาะสม: ลองนึกภาพเกมที่มีผู้เล่นหลายคนผ่าน LAN ซึ่งมีไคลเอนต์ 3 มิติที่มีประสิทธิภาพและยอดเยี่ยมสำหรับผู้เล่นที่มีนักเล่นเกมที่ยอดเยี่ยมและเป็นลูกค้า 2D ที่น่ารักมากกว่าเดิม กล่องฝุ่นที่มีคนพบในห้องใต้หลังคาของพวกเขา แต่มันยังคงเป็นเกมเดียวกัน - มีการลงทะเบียนเหตุการณ์เดียวกัน (มีคนหยิบเหรียญ) ใช้โปรโตคอลเครือข่ายเดียวกันโลกต่าง ๆ เป็นต้น
หากต้องการวางไว้ในบริบท MVC: ตัวควบคุมเหมือนกัน (การกดปุ่ม "ขึ้น" จะตั้งค่าการเร่งความเร็วของผู้เล่นที่ 3.5 หน่วย / วินาที) มุมมองจะแตกต่างกันโดยสิ้นเชิง (2D กับ 3D) และโมเดลจะเหมือนกัน ยกเว้นสิ่งที่เกี่ยวข้องโดยตรงกับกราฟฟิค (ตรวจสอบการชนกันของสภาพแวดล้อมทุก 5 วินาทีและใช้อัลกอริธึมเดียวกันโปรดทราบว่านี่หมายความว่ามีพิกัด Z สำหรับวัตถุเกมทั้งหมดในรุ่น 2D แต่มันเป็น เพียงเพิกเฉยหรือแสดงต่อผู้ใช้ในอีกทางหนึ่งตัวอย่างเช่นเงาที่ปรากฏขึ้นทางด้านซ้ายเมื่อผู้เล่นอยู่ในอากาศ)
สิ่งที่ทำให้สิ่งนี้เป็นหัวข้อที่น่าสนใจคือมันจะบังคับให้นักพัฒนามีความคิดที่ชัดเจนว่าโครงสร้างข้อมูลของเขาและวิธีการควบคุมการไหล โปรดทราบว่าสิ่งนี้ไม่ได้หมายถึงการใช้สิ่งอื่นนอกเหนือจากห้องสมุดกราฟิกเช่น SDL, D3DX หรือ OpenGL ไม่มีเอ็นจิ้นเกม!
เนื่องจากนี่เป็นคำถามเชิงทฤษฎีส่วนใหญ่ฉันจะปล่อยให้ภาษาการเขียนโปรแกรมออกไปจากมัน แต่ถ้าคุณต้องการยกตัวอย่างคุณสามารถใช้ภาษาใดก็ได้ที่คุณชอบ C ++ ถ้าคุณต้องการที่จะไปทั้งหมูหรือแม้แต่ Brainfuck ถ้าคุณรู้สึก ขึ้นกับความท้าทาย (คำตอบที่เป็นรูปธรรมใด ๆ จะได้รับการชื่นชมเช่นเดียวกับคนที่เป็นนามธรรม!)