เกมหรือเอ็นจินที่อิงกับโอเพ่นซอร์ส


15

ฉันได้อ่านบางส่วนเกี่ยวกับการออกแบบเกมที่อิงองค์ประกอบ แต่ยังคงมีปัญหาบางอย่างเกี่ยวกับวิธีการใช้งานมัน มีตัวอย่างที่ดีของเกมที่ใช้ส่วนประกอบหรือเกมเอ็นจิ้นที่ฉันสามารถอ่านเพื่อทำความคุ้นเคยกับสิ่งนี้ได้ดีขึ้นหรือไม่?

คำตอบ:


7

โดยส่วนตัวฉันไม่คิดว่าจะมีตัวอย่างที่ดีใด ๆส่วนใหญ่เป็นเพราะคำจำกัดความของ "ระบบที่อิงองค์ประกอบ" สำหรับเกมนั้นมีการกำหนดไว้อย่างหลวม ๆ ว่ามันอาจหมายถึงอะไรถัดจากอะไรก็ได้

คุณอาจพบว่าบางส่วนของการสนทนาในคำตอบนี้เป็นประโยชน์: วิธีการใช้ระบบที่ใช้องค์ประกอบสำหรับรายการในเกมบนเว็บ

โดยรวมแล้ววิธีการนี้เป็นเพียงการเปลี่ยน GameObject หรือ Actor จากคลาสขนาดใหญ่ที่จัดการพฤติกรรมทั้งหมดให้เป็นคลาสที่เรียบง่ายกว่าที่ถือวัตถุที่มีพฤติกรรม ฉันคิดว่าการทำงานด้วยตัวคุณเองและสร้างส่วนประกอบที่เหมาะสมกับเกมของคุณมักจะเป็นวิธีที่ดีที่สุดในการดำเนินการต่อ


ฉันได้ยินสิ่งนั้น เมื่อพยายามค้นหาแหล่งข้อมูลที่ดีฉันพบว่าเกือบทุกคนใช้คำศัพท์ต่าง ๆ เพื่ออธิบายสิ่งต่าง ๆ ทำให้เป็นการยากที่จะเปรียบเทียบการใช้งานที่แตกต่างกันเมื่อคุณใช้เวลาครึ่งแปลโครงสร้างพื้นฐาน ระบบเอนทิตี, ระบบคอมโพเนนต์, วัตถุเกม, เทมเพลต, การประกอบ, การรวมส่วนประกอบ ฯลฯ ...
ผ่อนปรน

2

นี่ทรัพยากรบางอย่างที่คุณอาจชอบ:
นอกจากนี้หัวข้อที่น่าตื่นตาตื่นใจ มันไม่ใช่เอ็นจิ้นเกม แต่การออกแบบและการสนทนานั้นยอดเยี่ยม
คำถามเกี่ยวกับStackOverflowในหัวข้อที่คล้ายกันมาก

เพื่อตอบคำถามเดิมกรอบช้างใน C # นั้นเป็นสิ่งที่คุณต้องการอย่างแน่นอนมันถูกยกเลิกแล้ว แต่ยังคงมีอยู่ที่นี่เพื่อใช้อ้างอิง


1

ไซต์นี้เริ่มต้นใช้งานพื้นฐาน

บทความข้างต้นส่วนใหญ่ได้รับแรงบันดาลใจจากบทความนี้ที่ T = Machine

ฉันเริ่มต้นใช้งานขั้นพื้นฐานซึ่งได้รับแรงบันดาลใจจากลิงค์ทั้งสองข้างต้น ฉันค่อนข้างมั่นใจว่าฉันเบี่ยงเบนไปจากทฤษฎีที่บริสุทธิ์ของระบบส่วนประกอบและมีข้อผิดพลาดอย่างแน่นอน แต่มันอาจพิสูจน์ได้ว่ามีประโยชน์หากคุณกำลังมองหาตัวอย่างง่ายๆ

Bricle (C # / XNA)

ตอนนี้มันเพิ่งโหลดเอนทิตีพื้นฐานบางอย่างจัดการเหตุการณ์บางอย่าง ฯลฯ ตำแหน่งหลักที่คุณกำลังค้นหาคือโฟลเดอร์ Engine.EntitySystemและอาจเป็นหน้าจอPlayScreenที่สร้างเอนทิตีจริง

การสร้างที่เก็บส่วนประกอบตามประเภทอย่างง่ายและซ่อนอยู่เบื้องหลัง EntityManager ทั่วไปนั้นค่อนข้างตรงไปตรงมา

ความท้าทายแรกที่ฉันพบคือเมื่อแต่ละระบบอาจต้องใช้องค์ประกอบหลายประเภท (เช่นองค์ประกอบทางกายภาพและ InputMoveable) เพื่อใช้ภาษาฐานข้อมูลเชิงสัมพันธ์ฉันต้องหาวิธีที่จะทำแบบสอบถามเข้าร่วม สำหรับสิ่งนั้นฉันได้สร้างคอลเล็กชั่นประเภทอื่นสำหรับเอนทิตีที่สร้างขึ้นจากการสืบค้นประเภทองค์ประกอบที่ตรงกัน - แต่ละคอลเลกชันของเอ็นติตี้ขอเกี่ยวกับเหตุการณ์ OnEntityCreate และตรวจสอบว่ามันตรงกันหรือไม่ ยังมีข้อบกพร่องอยู่บ้าง

ความท้าทายประการที่สองคือการสร้าง 'เกมวัตถุ' - ฉันเรียกมันว่าเทมเพลต ที่นี่ฉันอาจไม่บริสุทธิ์มากตามข้อกำหนดของ T = Machine แต่ดูเหมือนจะใช้งานได้ เทมเพลตจัดกลุ่มการรวมกันของการสร้างอินสแตนซ์ของส่วนประกอบและช่วยให้การจัดองค์ประกอบเอนทิตีง่ายขึ้น

หวังว่าจะเป็นประโยชน์ - ระบบเอนทิตี / ส่วนประกอบอาจเป็นสิ่งที่ท้าทายในการฝ่าฟันอุปสรรคแรกเริ่ม


1

อีกคนหนึ่งที่ฉันไม่ได้ใช้ แต่มองผ่านรหัสบิตเป็นอาร์ทิมิส แสดงความคิดเห็นดีและค่อนข้างใช้งานอยู่ เดิมทีเป็นเฟรมเวิร์ก Java แต่ได้รับการพอร์ตไปยัง C # / XNA

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.