Saya pernah mendengar tentang desain yang didorong oleh data dan telah lama meneliti tentang hal itu. Jadi, saya sudah membaca beberapa artikel untuk mendapatkan konsep.
Salah satu artikelnya adalah Data Driven Design yang ditulis oleh Kyle Wilson. Ketika ia menjelaskan, menurut saya kode aplikasi (yaitu kode untuk mengendalikan sumber daya seperti memori, jaringan ...) dan kode logika permainan harus dipisahkan, dan kode logika permainan harus didorong oleh sumber data eksternal. Pada titik ini, saya bisa membayangkan bahwa pengembang akan menulis semacam editor game yang menerima data eksternal tentang objek dalam game (seperti informasi karakter, informasi senjata, informasi peta ...). Desain skenario akan ditulis dengan bahasa khusus / alat yang ditulis oleh programmer untuk memungkinkan perancang game membuat interaksi di antara objek-objek game. Perancang gim akan menggunakan bahasa skrip yang ada / khusus untuk menulis skrip untuk gim, atau menyeret dan menjatuhkan alat untuk membuat dunia gim. Contoh pendekatan alat yang bisa saya pikirkan adalah World Editor, yang biasanya dikemas bersama dengan game Bliizard.
Namun, artikel lain menentang penggunaan Desain Berbasis Data, Kasus Terhadap Desain Berbasis Data . Penulis menyarankan untuk tidak membiarkan desain game didorong oleh data, karena akan membutuhkan lebih banyak waktu untuk mengembangkan game, karena desainer game memiliki beban pemrograman. Sebagai gantinya, akan ada programmer game untuk memprogram game secara bebas dari desain sketsa, dan diverifikasi oleh perancang game setelah pemrograman game selesai. Dia menyebut ini didorong oleh programmer. Apa yang saya pikirkan tentang metode ini mirip dengan cara yang biasa saya lakukan: Logika permainan adalah aplikasi itu sendiri, sebagaimana diterapkan pada ide di atas, aplikasi tersebut adalah editor permainan, dan permainan yang sebenarnya dirancang berdasarkan pada alat.
Bagi saya, metode pertama tampaknya lebih masuk akal, karena komponen game dapat digunakan kembali untuk banyak proyek. Dengan metode kedua yang menentang desain berbasis data, kode game hanya milik game itu. Inilah mengapa saya pikir Warcraft memiliki begitu banyak genre game di dalamnya, seperti Warcraft asli dan berbagai peta khusus, dan salah satu yang paling terkenal: DOTA yang sebenarnya mendefinisikan genre baru. Untuk alasan ini, saya mendengar orang menyebut Editor Dunia adalah mesin permainan. Benarkah ini seharusnya mesin permainan?
Jadi, setelah semua ini, saya hanya ingin memverifikasi apakah ada kesalahan dalam pemahaman saya tentang ide-ide ini (data driven, drive programmer, scripting dll ...)?
sumber
Jawaban:
Membuat game Anda (atau produk perangkat lunak apa pun) yang didorong data hampir selalu bermanfaat. Satu-satunya masalah nyata adalah Anda mungkin menghabiskan sedikit lebih banyak waktu membangun sistem yang relevan di muka; itu akan membayar selama sisa karir Anda sebagai seorang programmer (bahkan jika Anda tidak menggunakan kembali sistem yang sama sepanjang waktu itu, Anda akan menggunakan kembali teknik yang Anda gunakan untuk membangunnya).
Tantangannya, dan di mana pemutusan dalam dua artikel yang Anda tautkan muncul, adalah apa yang Anda pilih untuk dimasukkan ke dalam data dan siapa yang Anda pilih untuk memberikan akses ke data itu. Pada dasarnya, desain dan pengembangan yang didorong oleh data berarti Anda memasukkan informasi ke dalam penyimpanan eksternal, memuat informasi itu pada waktu berjalan, dan menindaklanjutinya. Kode aplikasi Anda melakukan apa yang diminta oleh data eksternal, alih-alih Anda menulis kode aplikasi yang secara langsung melakukan apa yang Anda pikirkan hasil akhirnya. Itu bukan ide yang kompleks.
Anda tidak harus membangun "arsitektur berbasis komponen" yang kompleks (seperti isinya belakangan ini). Menempatkan konstanta untuk mengubah-ubah fisika (gaya gravitasi, koefisien restitusi) dalam file teks didorong oleh data. Skrip (dalam Lua atau yang lainnya) didorong oleh data. Menjelaskan data level Anda dalam XML. Yang seperti itu.
Anda dapat mengendarai hampir semua komponen perangkat lunak dengan data, dan Anda dapat memilih mana yang ingin Anda gunakan. Waktu pengembang mahal; waktu programmer terutama begitu. Jika Anda dapat menghemat waktu Anda atau programmer lain dengan menempatkan perilaku dan data di penyimpanan eksternal dan tidak memerlukan game untuk dikompilasi ulang untuk setiap perubahan kecil, Anda harus melakukannya. Anda akan menghemat uang dan menyelesaikan sesuatu dengan lebih cepat.
Selain itu, Anda menjalankan risiko besar dalam mencoba membuat "desain desainer" dan membuat programer "membuat desain itu menjadi kenyataan," memaksa seorang programmer untuk tetap ada dalam loop iterasi untuk pekerjaan seorang desainer: Anda menjalankan risiko membuat programmer merasa seperti dia hanya kode monyet, membuat sedikit perubahan sepele untuk desain terus-menerus. Ini dapat secara besar-besaran menurunkan moral bagi sebagian besar programmer, yang ingin bekerja pada tantangan teknis yang menarik dan tidak menjadi proksi desainer.
Untuk pertanyaan spesifik Anda:
"Mesin game" tidak benar-benar memiliki definisi tetap. Umumnya itu adalah kumpulan teknologi dasar yang digunakan untuk membuat game, biasanya didukung oleh banyak alat terkait (dan dengan demikian cukup didorong data). Tetapi itu cukup bervariasi dari konteks ke konteks.
Anda tampaknya kurang lebih berada di jalur yang benar, meskipun Anda mungkin terlalu rumit apa data didorong desain dan pengembangan dengan menggabungkannya dengan sistem berbasis komponen.
sumber
Sebagai penulis posting kedua, saya ingin mengklarifikasi beberapa poin.
Pada akhirnya, tidak ada jawaban benar atau salah. Ini adalah pertanyaan tentang bagaimana Anda dan rekan kerja Anda merasa nyaman bekerja. Ketika saya menulis blog itu beberapa waktu lalu, ada banyak pembicaraan tentang bagaimana semua pekerjaan harus didorong kepada para desainer, dan saya ingin menulis tentang berapa banyak perusahaan game yang sukses yang saya tahu menemukan keseimbangan yang berbeda.
Juga, sebagai catatan tambahan, entri blog saya berusia 5 tahun. Sepertinya lebih banyak studio yang bergerak ke arah bahasa scripting dan yang lainnya akhir-akhir ini tetapi sedang menciptakan alat yang matang untuk men-debug mereka, yang merupakan keluhan utama saya. Ketika saya menulis ini, saya rasa Unreal Kismet tidak ada, yang belum saya gunakan, tetapi sepertinya mereka mencoba untuk menyederhanakan skrip dan ternyata memiliki debugger. (Tidak tahu seberapa baik kerjanya)
Untuk gim berskala lebih kecil, saya pasti tidak berpikir Anda ingin mencoba dan menggunakan bahasa scripting atau fungsi serupa ke dalam teknologi Anda, tetapi jika Anda memiliki tim besar dan banyak waktu untuk mencurahkan teknologi, dimungkinkan untuk melakukan ini investasi yang tepat dan waktu mungkin masuk akal tergantung pada cara tim pengembangan Anda suka bekerja. Secara pribadi, saya mungkin akan berpegang teguh pada C ++ selama mungkin karena bagi saya, ini adalah yang termudah dan tercepat karena saya sering harus mencoba dan mengatasi "fitur" seperti pengumpulan sampah.
sumber
Anda harus melihat Mesin Tek BitSquid . Itu dibangun menggunakan konsep DOD. Blog Niklas Frykholm sangat menarik. Ada banyak artikel tentang bagaimana mesin ini dirancang.
Di GDC 2011, Niklas telah membuat presentasi tentang Data Driven Renderer .
sumber