Apa itu desain yang digerakkan oleh data? [Tutup]

11

Saya telah membaca banyak artikel yang membahas desain berbasis data untuk game. Tampaknya turun ke:

  • Tidak ada kode yang sulit
  • Tidak ada kode khusus game di mesin
  • Scripting untuk AI, cutscene, dan lain-lain.
  • Generalisasi kode untuk dapat digunakan kembali
  • Desain komponen
  • Modularitas
  • Kopling rendah
  • Editor (untuk data, peta, skrip)
  • Pengambilan data eksternal
  • Konstanta disimpan dalam file teks ( .iniatau lainnya)
  • Paparkan data melalui editor untuk skrip dan manipulasi oleh desainer

Sekarang, pertanyaan saya adalah, apakah pemahaman ini benar?

OmniOwl
sumber
3
Selamat datang di situs ini. Anda memiliki dua pertanyaan di sini (umumnya Anda hanya perlu mengajukan satu pertanyaan per posting), dan pertanyaan kedua tentang "bagaimana memulai" dianggap di luar topik, jadi saya telah mengeditnya, dan juga menguranginya. Jika Anda ingin berdiskusi tentang cara memulai sesuatu, pertimbangkan untuk mengunjungi Obrolan Pengembangan Game .
@ JoshPetrie Tapi itu yang paling penting karena saya sudah ke banyak situs sekarang dan tidak mendapat jawaban apa pun. Bahkan tidak menyodok ke arah. Pasti ada BEBERAPA orang yang mendapat sedikit wawasan tentang mata pelajaran ini.
OmniOwl
1
Mungkin itu yang paling penting bagi Anda, tetapi di luar topik di sini (lihat faq ). Saya bisa saja menutup pertanyaan. Kunjungi Obrolan Pengembangan Game atau forum diskusi aktual seperti GDNet jika Anda ingin mengajukan pertanyaan tentang cara memulai.
1
@Vipar Pop ke obrolan jika Anda ingin bantuan dengan pertanyaan off topic. Tidak menjamin Anda akan mendapatkan bantuan tetapi banyak orang pintar berkeliaran di sana.
ClassicThunder

Jawaban:

10

Saya akan mengatakan ini tidak benar. Saya percaya ide paling penting dalam desain yang didorong data adalah memisahkan data Anda dari apa yang mengubah (atau memperbarui) data .

Jadi beralih dari hierarki mendalam OO standar seperti ini:

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

ke keadaan dan sistem yang terpisah

class CreatureState{
    vector postion;
}

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

Salah satu paradigma DDD yang paling berpengaruh saat ini adalah Sistem Entitas. Beberapa sumber yang bagus untuk dicari adalah:

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

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

Tentu saja karena dengan semua paradigma / ide tidak ada definisi yang tepat dan tidak semua orang mengerti ide yang sama ketika berbicara DDD tetapi ini adalah apa yang saya percaya sebagai hal yang paling penting.

Roy T.
sumber
Ya saya lupa menyebutkan bagian pemisahan. Dan ini persis hal yang ingin saya lihat. Saya hanya bisa membaca begitu banyak teori. Saya perlu melihat beberapa contoh nyata. Terima kasih. Juga akan melihat artikel!
OmniOwl
Oh tunggu akhirnya menemukan penjelasan terbaik yang saya baca beberapa waktu lalu. Ternyata itu adalah jawaban atas pertanyaan yang saya ajukan di sini gamedev.stackexchange.com/questions/48971/… : D
Roy T.
4

Saya pikir Anda terlalu rumit definisi. Tentu saja, banyak prinsip yang terkandung dalam daftar poin Anda adalah yang baik dari perspektif rekayasa perangkat lunak, tetapi semuanya tidak selalu merupakan bagian dari definisi "yang didorong oleh data". Banyak dari mereka memiliki beberapa tumpang tindih, atau paling baik diimplementasikan menggunakan pendekatan berbasis data, tetapi tidak merupakan tindakan sesuatu yang mendorong data.

Definisi aktual pengembangan perangkat lunak berbasis data umumnya cukup sederhana: program melakukan tindakan terutama berdasarkan beberapa informasi dari luar (sepotong data level, data skrip, dan lain-lain) alih-alih memiliki serangkaian langkah yang telah ditentukan dan diperbaiki dalam kode. sendiri yang menentukan aliran kontrol.


sumber
Anda kemungkinan besar benar bahwa saya terlalu rumit. Itu sesuatu yang cenderung saya lakukan. Tapi saya tidak bisa membungkus pikiran saya tentang cara mulai mengkode ini.
OmniOwl
1
Saya memposting jawaban untuk pertanyaan Anda di GDNet . Inti dari masalah ini adalah: berhenti berusaha keras, pilih satu aspek sederhana dari apa yang akhirnya Anda inginkan dan bangun permainan kecil dengannya.
Saya melihat dan saya juga membalas. Terima kasih telah meluangkan waktu untuk berbicara dengan saya tentang ini.
OmniOwl