Paradigma
Pada saat jawaban ini ditulis, jawaban yang diposkan di sini semuanya salah.
Alih-alih bertanya apakah Domain-Driven Design baik untuk game. Anda harus bertanya apakah "Pemodelan Domain" cocok untuk gim.
Apakah pemodelan domain baik untuk game?
Jawabannya adalah: kadang-kadang sangat menakjubkan. Namun, jika Anda membuat game real-time seperti platformer atau FPS atau apa pun (banyak jenis game) maka tidak ada. Ini belum tentu cocok untuk sistem tersebut. Namun, mungkin ada sistem di mana game-game di mana menerapkan pola model domain efektif.
Seperti yang disebutkan orang lain di sini, kerangka kerja komponen-entitas cenderung sangat populer, dan untuk alasan yang baik. Namun, dalam budaya pengembangan game tampaknya ada kekurangan arsitektur berlapis. Sekali lagi, ini untuk alasan yang baik karena sebagian besar permainan yang orang akan kembangkan hanya bermutasi pada entitas dan membiarkan konsekuensi yang muncul menjadi permainan.
SEMUA PERANGKAT LUNAK BUKAN PERANGKAT LUNAK YANG ANDA MENULIS. Beberapa sangat berbeda dari yang lain.
Beberapa contoh domain di mana pemodelan domain berfungsi dengan baik adalah permainan kartu, permainan papan, dan jenis sistem lainnya yang dikendalikan oleh peristiwa.
Game yang dijalankan pada laju bingkai X dengan gerakan dll ditentukan oleh delta waktu sebagai konsep domain inti mungkin tidak cocok. Dalam hal ini, "domain" kami seringkali sangat sederhana sehingga tidak perlu untuk pemodelan domain. Deteksi tabrakan, pemijahan entitas baru, pengaruh kekuatan pada entitas yang ada, dll. Cenderung mencakup sebagian besar permainan.
Namun, ketika segala sesuatunya menjadi rumit, Anda mulai melihat pengembang menerapkan model domain dalam entitas mereka untuk menangani jenis perilaku dan perhitungan tertentu.
Pola model domain dalam arsitektur game
Mesin game Anda (misalnya, Unity3D) seringkali berorientasi komponen-entitas. Di platformer, Anda mungkin memiliki entitas untuk karakter Anda dan kondisinya terus-menerus bermutasi untuk memperbarui posisi dll.
Namun, dalam permainan yang lebih digerakkan oleh peristiwa, lebih mungkin bahwa peran kerangka kerja entitas-komponen lebih hanya ada sebagai Antarmuka Pengguna. Anda berakhir dengan arsitektur berlapis.
UI membuat status permainan kepada pengguna. Pengguna berinteraksi dengan UI, memicu perintah di lapisan layanan. Lapisan layanan berinteraksi dengan objek domain. Objek domain mengangkat peristiwa domain. Pendengar acara mendengar kejadian dan memicu perubahan di UI.
UI> Lapisan Layanan> Model Domain
Singkatnya, berakhir dengan model-view-controller dengan implementasi lapisan layanan.
Menggunakan arsitektur ini, Anda memiliki inti game yang sepenuhnya dapat diuji unit (Jarang terjadi dalam budaya pengembangan game, dan ini menunjukkan) dengan antarmuka yang digerakkan oleh peristiwa.
Ok sekarang, apa itu DDD?
Desain Berbasis Domain secara khusus adalah budaya / gerakan penekanan pada pola analitik yang digunakan untuk mempelajari tentang domain, sehingga Anda benar-benar membangun hal yang benar, dan kemudian pola implementasi yang memberdayakan Anda untuk menerapkan lapisan model yang mewakili konsep dalam model domain menggunakan idiom bahasa Anda. DDD keluar dari komunitas yang bekerja dengan domain rumit dan selalu mencari cara untuk mengelola kompleksitas tinggi dalam aplikasi mereka dengan berfokus pada pemodelan domain.
DDD tidak melakukannya dengan baik jika tujuan Anda hanya memulai pengkodean, bermain-main dengan sistem dan kemudian mencari tahu apa yang ingin Anda bangun nanti, dll. Asumsi bahwa ada lebih atau kurang sebuah domain yang ada. Jadi, jika Anda tidak tahu akan seperti apa permainan Anda .. Lalu, itu tidak akan berhasil.