มีเฟรมเวิร์กอิงส่วนประกอบ FOSS อยู่หรือไม่? [ปิด]


25

กระบวนทัศน์การเขียนโปรแกรมเกมตามองค์ประกอบกำลังเป็นที่นิยมมากขึ้น ฉันสงสัยว่ามีโครงการใดบ้างที่นำเสนอเฟรมเวิร์กองค์ประกอบที่ใช้ซ้ำได้หรือไม่ ในทุกภาษาฉันคิดว่าฉันไม่สนใจเรื่องนั้น ไม่ใช่สำหรับโครงการของฉันฉันแค่อยากรู้

โดยเฉพาะฉันหมายถึงมีโครงการที่รวมEntityคลาสพื้นฐานComponentคลาสพื้นฐานและส่วนประกอบมาตรฐานบางอย่างหรือไม่ ถ้าหากคุณไม่ต้องการที่จะพลิกโฉมพวงมาลัยหรือบางทีคุณอาจต้องการเกมGraphicsComponentที่ทำได้ด้วย Direct3D แต่ถ้าคุณคิดว่ามันทำไปแล้วสิบครั้ง

รวดเร็ว Googling จะเปิดขึ้นRusher มีใครเคยได้ยินหรือเคยใช้มันบ้าง หากไม่มีคนดังแล้วทำไมล่ะ มันยากเกินไปหรือไม่ที่จะทำสิ่งที่สามารถนำมาใช้ซ้ำได้เช่นนี้ ในการดำเนินการของฉันเองฉันพบจำนวนมากสำเร็จรูปที่สามารถผลักดันให้เป็นกรอบ


4
คุณควรเป็นคนแรกที่จะเขียนหนึ่ง! :)
Ricket

1
ฉันเขียนหนึ่งใน C # สำหรับโครงการของฉันเอง บางทีเราทุกคนสามารถมีส่วนร่วม?
Tesserex

ฉันทั้งหมดจะพร้อมสำหรับการทำงานในโครงการ C # ใช่มีมติไม่มากเกี่ยวกับวิธีมาตรฐานควรทำงานได้ แต่บางทีเราสามารถมุ่งเน้นไปที่ XNA (สิ่งที่ลอยเรือของคุณ) เพียงเพราะกลุ่มยักษ์ไม่ได้ประกาศวิธีที่ดีที่สุดในการทำไม่ได้หมายความว่าเราไม่สามารถลอง / ทดสอบได้
Michael Coleman

อาจเป็นเพราะการออกแบบโดยใช้องค์ประกอบดึงดูดผู้จัดการโครงการมากกว่าโปรแกรมเมอร์
M. Utku ALTINKAYA

คำตอบ:


45

หากไม่มีคนดังแล้วทำไมล่ะ

เพราะไม่มีอะไรคล้ายกับฉันทามติเกี่ยวกับวิธีการทำงานของกรอบดังกล่าว

ในหัวข้อบน Gamedev.net ฉันพบว่าเมื่อผู้คนพูดคุยเกี่ยวกับระบบเกมที่ใช้องค์ประกอบมีอย่างน้อย 8 วิธีเรียงสับเปลี่ยนที่เป็นไปได้ของวิธีที่พวกเขาคาดหวังว่าพวกเขาจะทำงานโดยใช้ 3 ปัจจัยที่แตกต่างกัน:

Inboard vs. outboard - ควรมีการรวมส่วนประกอบเข้ากับเอนทิตีหรือควรเป็นส่วนหนึ่งของระบบย่อยและเชื่อมโยงโดย ID เอนทิตี้เท่านั้น

องค์ประกอบแบบคงที่เทียบกับแบบไดนามิก - เอนทิตีควรประกอบด้วยชุดของส่วนประกอบที่รู้จัก (เช่น 1 ฟิสิกส์, 1 แอนิเมชั่น, 1 AI, ฯลฯ ) ที่สามารถสื่อสารในรหัสผ่านอินเทอร์เฟซที่รู้จักกันดีหรือนิติบุคคลสามารถเพิ่มองค์ประกอบ พวกเขา (พร้อมกลยุทธ์ที่เกี่ยวข้องสำหรับการค้นหาส่วนประกอบอื่น ๆ ที่น่าสนใจ)

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

นอกเหนือจากนั้นยังมีคำถามเพิ่มเติมเกี่ยวกับองค์ประกอบที่ควรสื่อสาร (ผ่านข้อมูลที่แชร์หรือไม่ผ่านตัวชี้ฟังก์ชั่นผ่านสัญญาณ / ช่องเสียบหรือไม่เลย?) พวกเขาควรจะปรับปรุงอย่างไร - ลำดับความสำคัญที่กำหนดในเวลาการสร้าง - ขึ้นอยู่กับการเรียงลำดับทอพอโลยีของการพึ่งพาซึ่งกันและกันของส่วนประกอบ?) ฯลฯ

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

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


1
ฉันขอขอบคุณคำตอบนี้เก่า แต่มันผิด: มีกรอบที่ได้รับความนิยมและมีการถกเถียงกันน้อยมากในหัวข้อ เมื่อเขียนเกมคำถามข้างต้นส่วนใหญ่ไม่สำคัญ: อาจไม่มีผลต่อการออกแบบของรหัสหรือวิธีการหนึ่งนั้นรวดเร็วและสามารถนำกลับมาใช้ใหม่ได้โดยที่คนอื่นไม่ได้ ในทางปฏิบัติมีเฟรมเวิร์กที่ได้รับความนิยมมากมาย - วิกิที่เชื่อมโยงกับหนึ่งในคำตอบอื่น ๆ เป็นจุดเริ่มต้นที่ดี (กลุ่มของเรารักษาไว้เพื่อให้ง่ายต่อการค้นหาเกมที่จัดส่งจริง + เฟรม)
Adam

1
@ อดัม: ฉันต้องการลิงค์เกี่ยวกับรายละเอียดเกี่ยวกับวิธีการที่จะได้รับการแข่งขันดาร์วินวิวัฒนาการ เมื่อฉันพูดรายละเอียดฉันไม่ต้องการที่จะได้ยินเกี่ยวกับ inboard และ outboard ฉันต้องการที่จะได้ยินเกี่ยวกับแผนที่กัญชาเวกเตอร์ผู้จัดสรรส่วนตัวประชาชนลูป const ... รายละเอียดระดับต่ำ
v.oddou

@ v.oddou มีคนโพสต์ลิงก์ไปยังวิกิว่าเป็นคำตอบแล้ว (ดูด้านล่าง) คุณต้องการรายละเอียดไหม? มันเต็มไปด้วยรหัสที่มา
อดัม

10

มีวิกิที่รวบรวมตัวอย่างของสิ่งเหล่านี้ทั้งหมด:

http://entity-systems.wikidot.com/

... พร้อมกับคำอธิบายของความแตกต่างระหว่างวิธีการที่แตกต่างกัน


Ash และ Artemis (ทั้งบนวิกิ) ได้รับความนิยมอย่างแน่นอนทั้งคู่ใช้ในการพัฒนาเกมเชิงพาณิชย์
Adam

4

ตรวจสอบเฟรมเวิร์กเหล่านี้ที่ฉันพบเกี่ยวกับสถาปัตยกรรมนี้ ...

www.burgerengine.com

PushButtonEngine

Arthemis Framework - https://github.com/artemis-esf/artemis-framework/tree/master/src/com/artemis

ดู Unity Api คุณสามารถค้นหาสิ่งต่าง ๆ มากมายเกี่ยวกับสถาปัตยกรรมที่ใช้ Component (จะอัปเดตรายการโดยเร็วที่สุดเท่าที่จะหาอีกได้ ... )

ปรับปรุง:

      https://code.google.com/p/spartanframework/

สิ่งนี้อธิบายเกี่ยวกับระบบเอนทิตีในวิธีที่ดี ... http://piemaster.net/2011/07/entity-component-primer/


2

มีเครื่องมือปุ่มกดสำหรับ Flash: http://pushbuttonengine.com/

และมี Panda3D สำหรับ c ++ / python: panda3d dot com (ขออภัยฉันอนุญาตให้ 1 url ต่อโพสต์เป็น n00b เท่านั้น)

ฉันแน่ใจว่ามีตันอีกมาก :)

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