Saya kira-kira seribu baris kode untuk membuat game berbasis ruang 2D saya sendiri, yang menciptakan jaringan sistem bintang yang dihasilkan secara acak dan mengisinya dengan pilihan acak planet, stasiun, kapal, dan senjata.
Mungkin akan ada ratusan stasiun / kapal / dll yang berbeda yang perlu digunakan game - jadi inilah yang saya ingin tahu. Haruskah saya menghabiskan waktu untuk membuat data-loader 'softcoded', yang akan menyimpan semua informasi ini dalam (misalnya) file XML, dan karena itu akan lebih mudah untuk dimodifikasi nanti, atau haruskah saya hanya pergi dengan apa yang saya punya lakukan sekarang - meng-hardcoding semua objek ke mesin utama gim.
Saya satu-satunya orang di proyek ini, dan seperti yang saya katakan, itu hanya hobi yang saya lakukan di waktu luang jauh dari universitas. Tetapi apakah masyarakat merekomendasikan investasi dalam menciptakan seluruh sistem ekstra untuk menyimpan data dalam file tambahan?
Apa manfaat dari data softcoding dengan cara seperti ini, dibandingkan dengan hanya melakukan hardcoding semua melalui konstruktor? Apakah ada manfaat jangka panjang untuk memiliki file eksternal yang dapat dimodifikasi - jika saya tidak mencari game untuk memiliki 'mod', apakah perlu memiliki file eksternal? Jika itu hanya hobi yang mungkin saya hilangkan dalam beberapa minggu atau bulan, haruskah saya membuang waktu untuk hal ini?
sumber
Jawaban:
Iya nih. Anda harus menerapkan sistem untuk memuat konten di luar mesin utama Anda.
Header untuk jawaban singkat.
Tidak. Itu tidak menghabiskan terlalu banyak waktu.
Saya pikir pertanyaan apakah itu alokasi yang sah dari waktu terbatas Anda dapat diperdebatkan; bahkan jika hanya untuk fakta bahwa itu akan menjadi sebagian kecil dari total waktu proyek.
Anda akan menghabiskan ratusan (ribuan) jam untuk proyek game yang Anda ambil sampai selesai. Mungkin bukan pada klon Pong, tapi tentu saja untuk game luar angkasa kompleks Anda. Bandingkan dengan pembaca file konfigurasi. Menerapkan sistem untuk mem-pipe XML ke konstruktor utama Anda, dan selanjutnya memulai kembali ke proses gim, mungkin butuh waktu 10 atau 20 jam. Bahkan jika itu membawa Anda 50 atau 100, itu akan menjadi sebagian kecil dari total waktu proyek.
Itu akan menghemat waktu
Itu bukan pengeluaran waktu; ini adalah investasi waktu. Dan itu akan membuahkan hasil.
Workflow penting, dan memiliki config loader akan membuat alur kerja Anda lebih baik. Dengan membuat sistem yang memungkinkan Anda mengedit konfigurasi dengan cepat, Anda akan menghemat pembangunan kembali yang tak terhitung jumlahnya. Anda dapat melihat permainan saat sedang berjalan, tweak XML, dan periksa kembali dalam hitungan detik. Atau Anda dapat melihat kode, menemukan garis kode (di antara ribuan), mengedit nilainya dengan sangat hati-hati (Anda berada di mesin utama, setelah semua), membangun kembali, mengeksekusi, mengembalikan permainan ke status pengujian, berusaha keras untuk ingat seperti apa sebelum perubahan, dan lihat apakah perubahan Anda memiliki efek yang Anda maksudkan. Dengan asumsi tidak ada kerusakan pada mesin Anda, kereta Anda tentu terganggu.
Dari perspektif komputer yang lebih mendasar, cobalah untuk mengingat bahwa bagian yang paling memakan waktu dari perangkat lunak penulisan adalah tidak memiliki beberapa penekanan tombol atau spasi tambahan. Ini pemburuan serangga. Dan jika Anda menghabiskan sedikit waktu ekstra untuk memperjelas dengan menulis lebih banyak kode verbose, Anda menghemat lebih banyak waktu nanti. Dalam kasus Anda, menulis importir konten menghasilkan kode yang lebih bersih yang akan lebih mudah dibaca. Alih-alih bermil-mil nilai hardcoded, sumber Anda akan menampilkan memuat file sederhana. Demikian juga, Anda dapat membaca file konfigurasi tanpa mengarungi kode mesin game. Kedua bagian menjadi lebih mudah dikelola dan lebih mudah untuk di-debug.
Tim satu anggota paling diuntungkan
Jika Anda menyewa seorang artis untuk menghasilkan beberapa konten itu, Anda perlu membuat alat untuk mereka gunakan. Mereka perlu melakukan pengeditan piksel, dan melihat efeknya dengan cepat. Anda tidak akan berani memaksa mereka untuk membangun kembali kode untuk melihat setiap perubahan. Waktu mereka mahal, dan Anda tidak ingin menyia-nyiakannya.
Sekarang bayangkan artis itu sangat tidak terampil dan lambat (artis programmer), dan punya banyak hal lain yang perlu dikhawatirkan karena mereka juga programmer dan musisi utama. Anda pasti tidak ingin membuang waktu itu, atau proyek tidak akan pernah selesai. Dan, artis jelek itu akan membenci pelatihan untuk menjadi artis yang lebih baik, karena mereka menghabiskan seluruh waktu mereka mengganti nama string aset dalam kode.
Jangan lakukan itu untuk dirimu sendiri. Buat alat, dan Anda akan memiliki lebih banyak waktu untuk membuat game.
sumber
Ini adalah pertanyaan yang bagus dan jawaban terbaik yang bisa saya berikan adalah bahwa hanya pengalaman yang bisa benar-benar memberi tahu Anda saat mengambil jalan yang lebih sulit / menyita waktu. Jika ada yang memberi tahu Anda bahwa Anda harus SELALU melakukannya dengan cara yang 'pantas', maka mereka salah.
Anda sudah mengerti bahwa itu adalah tradeoff. Di satu sisi, hardcoding sangat menggoda karena cepat dan mudah digunakan, tetapi dalam jangka panjang menambahkan fitur dan debugging akan menjadi mimpi buruk. Di sisi lain, menulis sistem yang hebat, fleksibel, dapat dikembangkan membutuhkan investasi awal yang besar, tetapi membuat hidup jauh lebih mudah dalam jangka panjang.
Tujuannya adalah untuk menyelesaikan sesuatu, dan jika Anda terjebak dalam membuat sistem yang hebat, tujuannya akan surut lebih lanjut dan Anda akan kehilangan motivasi. Hal-hal yang sulit dikodekan baik-baik saja dalam beberapa keadaan tetapi Anda harus memahami konsekuensi dari melakukannya. Berikut adalah beberapa alasan mengapa hardcoding adalah ide yang buruk:
Anda mungkin berpikir proyek Anda kecil, tetapi ada kemungkinan proyek itu tumbuh saat Anda memutuskan untuk menambah lebih banyak fitur. Jika Anda memulai hardcoding, akan tiba saatnya ketika energi yang dibutuhkan untuk mempertahankannya (memperbaruinya dengan hal-hal baru dan memperbaiki segudang bug yang tak terhindarkan) akan mulai secara serius melebihi keuntungan awal.
Hal-hal yang sulit dikodekan menurut definisi khusus untuk proyek saat ini. Untuk proyek selanjutnya, Anda harus mulai dari awal lagi, mungkin melakukan hardcoding lagi (karena itulah yang membuat Anda nyaman). Jika Anda telah memasukkan waktu ke dalam sistem pemuatan yang layak, Anda dapat melewati pekerjaan itu dan sakit kepala untuk semua proyek di masa depan.
Anda mungkin bekerja sendiri saat ini, tetapi mungkin ada saatnya Anda ingin membawa orang lain ke dalam proyek. Apakah Anda akan meluangkan waktu untuk menjelaskan sistem parokial menjijikkan Anda dan menulis dokumentasi untuk itu?
Hard-coding sering melibatkan harus tahu apa angka ajaib tertentu, atau dependensi kelas yang rumit. Anda mungkin dapat menyimpan semuanya dalam pikiran Anda sekarang, tetapi tunggulah sampai Anda berada jauh dari kode untuk sementara waktu. Bahkan dengan komentar yang luas, struktur yang dirancang dengan buruk adalah neraka untuk kembali.
Saya akan mengatakan Anda harus merasa bebas untuk hal-hal kode keras hanya pada detail terkecil. Jika Anda memiliki gagasan sekecil apa pun tentang elemen yang sedang Anda kerjakan digunakan oleh orang lain, tumbuh jauh lebih besar, atau digunakan dalam proyek lain, maka luangkan waktu untuk melakukannya dengan benar, sekarang.
Di sisi lain, saya membuat prototipe seperti orang gila dan mengkodekan hal-hal tertentu dengan cepat dan mudah dan membuat Anda bebas berkonsentrasi untuk bereksperimen. Itu agak tergantung pada gaya kerja Anda.
sumber
Apa yang Anda bicarakan adalah pemrograman berbasis data .
Untuk proyek-proyek kecil, mungkin tidak sepadan dengan investasi waktu, karena seringkali ada fitur yang jauh lebih penting yang dapat Anda tingkatkan.
Namun, pemrograman berbasis data bisa SANGAT mudah diimplementasikan. Jika Anda serius tentang hal itu, Anda mungkin harus menggunakan XML, JSON, atau YAML, tetapi Anda juga dapat menggunakan file teks biasa.
Pemrograman Berbasis Data
Pro
Cons
sumber