Saya ingin membuat permainan ekonomi berdasarkan peradaban kuno. Saya tidak yakin bagaimana mendesainnya. Jika saya mengerjakan game yang lebih kecil, seperti salinan "Space Invaders," saya tidak akan kesulitan menyusunnya seperti ini:
- Kelas Kontrol Utama
- Kelas Grafik
- Kelas Pemain
- Kelas musuh
Saya tidak mengerti bagaimana saya melakukan ini untuk proyek yang lebih besar seperti permainan ekonomi saya. Apakah saya membuat kelas negara yang berisi banyak kota? Apakah kota-kota berisi banyak kelas bangunan, sebagian besar berisi kelas orang? Apakah saya membuat jalur menemukan kelas yang dapat diakses pemain untuk berkeliling?
java
architecture
Matius G.
sumber
sumber
Jawaban:
Tentu.
Tentu.
Tentu.
Segala sesuatu yang Anda sarankan di atas tampaknya masuk akal. Ini mungkin bukan cara terbaik bagi Anda dalam jangka panjang, tapi itu tidak masalah. Ini jelas masuk akal bagi Anda karena model organisasi yang pertama kali datang kepada Anda. Sangat penting bagi Anda untuk mengambilnya dan memulai implementasi darinya. Ini akan membantu Anda memulai, membantu Anda mengatasi "kelumpuhan desain" awal ini yang sering menjangkiti pengembang di awal tugas, dan (jika terbukti cacat dalam beberapa cara) mengajari Anda satu atau dua hal tentang pro dan kontra dari pendekatan khusus untuk desain.
Anda secara alami telah mengambil konsep di kepala Anda dan mengelompokkannya ke dalam kode sesuai dengan beberapa aturan sederhana:
Person
kelas itu, tetapi jika game hanya peduli tentang mereka secara agregat, seperti dalam versi SimCity sebelumnya, Anda mungkin tidak memerlukan tipe atau instance dari tipe itu untuk membuat pemetaan 1: 1 populasi kota (int populationCount
mungkin cukup).Meskipun sederhana, menjawab pertanyaan-pertanyaan itu dapat memberi Anda banyak manfaat ketika mencoba memutuskan apakah dan bagaimana mengubah konsep mental menjadi kode sumber. Anda mungkin juga ingin membaca prinsip SOLID dari desain berorientasi objek .
Perhatikan bahwa saran dari sistem entitas / komponen yang dibuat dalam komentar juga merupakan pendekatan yang valid, meskipun saya akan menghindarinya di sini kecuali jika Anda melakukan re-lingkup proyek Anda menjadi lebih kecil (hanya karena mengambil dua tantangan besar baru dalam satu proyek dapat terlalu menakutkan dan dapat mencairkan manfaat pendidikan yang seharusnya Anda terima dari hanya berfokus pada satu). Dalam model berorientasi komponen, "tipe" dalam pertanyaan di atas menjadi lebih implisit: bukan tipe konkret dalam kode, tetapi tipe implisit yang didefinisikan oleh kumpulan komponen yang membentuk suatu entitas. Prinsip panduan yang sama dapat diterapkan.
sumber
Apa yang telah Anda gambarkan (kelas untuk setiap jenis utama objek game logis) sangat masuk akal sebagai game sederhana. Jika ini adalah pertama kalinya Anda menulis game jenis ini, saya sarankan melakukannya dengan cara ini.
Hanya beberapa tips:
Dalam permainan yang lebih kompleks, ada teknik yang lebih maju yang dapat Anda gunakan, tetapi saya sarankan tidak menggunakan ini sampai Anda sangat nyaman dengan pendekatan OOP dasar (yaitu berhasil membuat beberapa permainan selesai). Pendekatan yang lebih maju mungkin termasuk:
sumber
Ada beberapa metode yang dapat Anda gunakan untuk mendekati mengatur entitas dan set data Anda. Saya lebih suka menulis dokumen spreadsheet dan menguji data bolak-balik untuk memastikan saya efisien. Jika Anda membuat game sendiri ingat bahwa itu perlu masuk akal bagi Anda. Terkadang rute yang paling efisien adalah menjadi sedikit kurang efisien dalam kode untuk membuat proyek lebih sederhana.
Jika Anda ingin mendapat lebih banyak bantuan dalam menyusun konten Anda, cari kode sumber game lama yang menggunakan struktur atau gaya yang sama dan temukan solusinya. Kemudian perbaiki dan perbaiki sesuai keinginan Anda.
sumber