ตัวอย่าง
เมื่อถึงเวลาที่เขียนคำตอบนี้คำตอบที่โพสต์อื่น ๆ ทั้งหมดนี้ผิด
แทนที่จะถามว่า Domain-Driven Design นั้นดีสำหรับเกมหรือไม่ คุณควรถามว่า "การสร้างแบบจำลองโดเมน" นั้นดีสำหรับเกมหรือไม่
การสร้างแบบจำลองโดเมนดีสำหรับเกมหรือไม่
คำตอบคือ: บางครั้งมันก็สุดยอดจริงๆ อย่างไรก็ตามหากคุณกำลังสร้างเกมเรียลไทม์เช่น platformer หรือ FPS หรืออะไรก็ตาม (เกมหลายประเภท) ไม่ต้องทำ มันไม่เหมาะอย่างยิ่งสำหรับระบบเหล่านั้น อย่างไรก็ตามอาจมีระบบที่เกมเหล่านั้นที่ใช้รูปแบบโดเมนมีประสิทธิภาพ
ดังที่คนอื่น ๆ ได้กล่าวถึงที่นี่เฟรมเวิร์กเอนทิตีส่วนประกอบมักจะได้รับความนิยมมากและด้วยเหตุผลที่ดี อย่างไรก็ตามในวัฒนธรรมการพัฒนาเกมดูเหมือนว่าจะไม่มีสถาปัตยกรรมชั้นที่แตกต่างกัน อีกครั้งนี่เป็นเหตุผลที่ดีเนื่องจากเกมส่วนใหญ่ที่ผู้คนกำลังจะพัฒนากลายพันธุ์เพียงแค่หน่วยงานและปล่อยให้ผลที่ตามมาเกิดขึ้นเป็นเกม
ซอฟต์แวร์ทั้งหมดไม่ใช่ซอฟต์แวร์ที่คุณกำลังเขียน บางคนค่อนข้างแตกต่างจากคนอื่น ๆ
ตัวอย่างของโดเมนที่การสร้างแบบจำลองโดเมนทำงานได้ดีคือเกมไพ่เกมกระดานและระบบประเภทอื่น ๆ ที่ขับเคลื่อนด้วยเหตุการณ์
เกมที่ทำงานที่อัตราเฟรม X พร้อมการเคลื่อนไหวและอื่น ๆ ที่พิจารณาตามเวลาที่กำหนดเนื่องจากแนวคิดหลักของโดเมนอาจไม่เหมาะสม ในกรณีนี้ "โดเมน" ของเรามักจะง่ายจนไม่จำเป็นต้องสร้างแบบจำลองโดเมน การตรวจจับการชนการวางไข่ของเอนทิตีใหม่อิทธิพลของกองกำลังต่อเอนทิตีที่มีอยู่ ฯลฯ มักจะครอบคลุมการเล่นเกมส่วนใหญ่
อย่างไรก็ตามเมื่อทุกอย่างซับซ้อนขึ้นคุณจะเริ่มเห็นนักพัฒนาใช้โมเดลโดเมนภายในเอนทิตีของพวกเขาเพื่อจัดการกับพฤติกรรมและการคำนวณบางประเภท
รูปแบบโดเมนในสถาปัตยกรรมเกม
เอ็นจิ้นเกมของคุณ (เช่น Unity3D) มักจะเป็นส่วนประกอบของเอนทิตี ใน platformer คุณอาจมีเอนทิตีสำหรับตัวละครของคุณและสถานะของมันจะกลายพันธุ์อยู่ตลอดเวลาเพื่ออัพเดทตำแหน่งเป็นต้น
อย่างไรก็ตามในเกมที่เน้นเหตุการณ์มากขึ้นมีแนวโน้มว่าบทบาทของเฟรมเวิร์กเอนทิตีคอมโพเนนต์จะมีอยู่มากขึ้นในฐานะส่วนต่อประสานผู้ใช้ คุณจบลงด้วยสถาปัตยกรรมแบบเลเยอร์
UI แสดงสถานะเกมให้กับผู้ใช้ ผู้ใช้โต้ตอบกับ UI เรียกคำสั่งในชั้นบริการ บริการเลเยอร์โต้ตอบกับวัตถุโดเมน วัตถุโดเมนยกเหตุการณ์โดเมน ผู้ฟังเหตุการณ์จะได้ยินเหตุการณ์และทำให้เกิดการเปลี่ยนแปลงใน UI
UI> เลเยอร์บริการ> โมเดลโดเมน
ในระยะสั้นจบลงด้วย model-view-controller ด้วยการใช้งานเลเยอร์บริการ
เมื่อใช้สถาปัตยกรรมนี้คุณจะมีแกนเกมที่ทดสอบได้อย่างสมบูรณ์ (ความหายากในวัฒนธรรมการพัฒนาเกมและแสดงให้เห็น) ด้วยอินเทอร์เฟซที่ขับเคลื่อนด้วยเหตุการณ์
ตกลงตอนนี้ DDD คืออะไร?
การออกแบบที่ขับเคลื่อนด้วยโดเมนโดยเฉพาะคือวัฒนธรรม / การเคลื่อนไหวของการเน้นรูปแบบการวิเคราะห์ที่ใช้ในการเรียนรู้เกี่ยวกับโดเมนเพื่อที่คุณจะได้สร้างสิ่งที่ถูกต้องและจากนั้นรูปแบบการใช้งานที่ช่วยให้คุณสามารถใช้ แนวคิดในรูปแบบโดเมนโดยใช้สำนวนภาษาของคุณ DDD มาจากชุมชนที่ทำงานกับโดเมนที่ซับซ้อนและมักจะมองหาวิธีการจัดการความซับซ้อนสูงในแอปพลิเคชันของพวกเขาโดยมุ่งเน้นที่การสร้างแบบจำลองโดเมน
DDD นั้นทำได้ไม่ดีนักหากเป้าหมายของคุณคือการเริ่มเขียนโค้ดเล่นกับระบบแล้วหาว่าคุณต้องการสร้างอะไรในภายหลัง ฯลฯ สมมติว่ามีโดเมนอยู่ไม่มากก็น้อย ดังนั้นถ้าคุณไม่รู้ว่าเกมของคุณจะเป็นอย่างไร .. จากนั้นมันจะไม่ทำงาน