การออกแบบที่ขับเคลื่อนด้วยข้อมูลคืออะไร? [ปิด]


11

ฉันได้อ่านบทความมากมายเกี่ยวกับการออกแบบที่ขับเคลื่อนด้วยข้อมูลสำหรับเกม ดูเหมือนว่าจะลงไปที่:

  • ไม่มีการเข้ารหัสที่ยาก
  • ไม่มีรหัสเฉพาะของเกมในเอ็นจิ้น
  • การเขียนสคริปต์สำหรับ AI, cutscenes, และ cetera
  • การสรุปรหัสสำหรับการใช้ซ้ำ
  • การออกแบบส่วนประกอบ
  • modularity
  • คลัปต่ำ
  • บรรณาธิการ (สำหรับข้อมูลแผนที่สคริปต์)
  • การดึงข้อมูลภายนอก
  • ค่าคงที่เก็บไว้ในไฟล์ข้อความ ( .iniหรือมิฉะนั้น)
  • เปิดเผยข้อมูลผ่านบรรณาธิการสำหรับการเขียนสคริปต์และการจัดการโดยนักออกแบบ

ตอนนี้คำถามของฉันคือความเข้าใจนี้ถูกต้องหรือไม่


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

@JoshPetrie แต่นั่นเป็นสิ่งที่สำคัญที่สุดที่ฉันเคยไปหลาย ๆ ไซต์แล้วและไม่ได้รับคำตอบใด ๆ เลย ไม่แม้แต่กระตุ้นในทิศทาง จะต้องมีบางคนที่มีความเข้าใจในวิชาเหล่านี้
OmniOwl

1
สิ่งที่เกี่ยวข้อง: gamedev.stackexchange.com/questions/17331/…

1
อาจเป็นสิ่งสำคัญที่สุดสำหรับคุณ แต่เป็นหัวข้อที่นี่ (ดูคำถามที่พบบ่อย ) ฉันสามารถปิดคำถามได้เช่นกัน เยี่ยมชมGame Development Chatหรือฟอรัมสนทนาจริงเช่นGDNetหากคุณต้องการถามคำถามเริ่มต้น

1
@Vipar เข้าสู่การแชทถ้าคุณต้องการความช่วยเหลือในการตอบคำถามหัวข้อ ไม่รับประกันว่าคุณจะได้รับความช่วยเหลือ แต่มีคนฉลาด ๆ มาเที่ยวแถวนั้น
ClassicThunder

คำตอบ:


10

ฉันว่ามันไม่ถูกต้อง ผมเชื่อว่าความคิดที่สำคัญที่สุดในการออกแบบที่ขับเคลื่อนด้วยข้อมูลที่มีการแยกข้อมูลของคุณจากสิ่งที่ปรับเปลี่ยน (หรือการปรับปรุง) ข้อมูล

ดังนั้นไปจากลำดับชั้นลึก OO มาตรฐานเช่นนี้

class MyCreature{
     vector position;
     void update(){ position += 1; }
}

ไปยังสถานะและระบบแยกต่างหาก

class CreatureState{
    vector postion;
}

class MovementSystem{
    list<CreatureState> states;
    void update() {
        for each CreatureState state in states {
            state.position += 1;
        }
}

ในกระบวนทัศน์ DDD ที่มีอิทธิพลมากที่สุดในขณะนี้คือ Entity Systems แหล่งข้อมูลที่ดีในการค้นหาคือ:

http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/

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

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


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

โอ้รอจนพบคำอธิบายที่ดีที่สุดที่ฉันอ่านมานานแล้ว ปรากฎว่ามันเป็นคำตอบสำหรับคำถามที่ฉันถามที่นี่gamedev.stackexchange.com/questions/48971/ … : D
Roy T.

4

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

คำจำกัดความที่แท้จริงของการพัฒนาซอฟต์แวร์ที่ขับเคลื่อนด้วยข้อมูลนั้นค่อนข้างง่าย: โปรแกรมดำเนินการตามข้อมูลภายนอกบางส่วน (ข้อมูลระดับข้อมูลสคริปต์และอื่น ๆ ) แทนที่จะมีชุดของขั้นตอนที่กำหนดไว้ล่วงหน้าและคงที่ภายในรหัส ตัวเองที่กำหนดการไหลของการควบคุม


คุณมีสิทธิ์มากที่สุดที่ฉันจะทำสิ่งที่ซับซ้อนเกินไป มันเป็นสิ่งที่ฉันมักจะทำ แต่ฉันไม่สามารถปิดใจว่าจะเริ่มเขียนโค้ดนี้ได้อย่างไร
OmniOwl

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

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