Untuk pengembang perangkat lunak tujuan umum yang solid, apa yang secara khusus berbeda tentang pengembangan game, baik secara mendasar atau hanya perbedaan derajat?
Saya telah melakukan permainan mainan seperti Tic-tac-toe, Tetris, dan pemecah sudoku brute-force (dengan UI) dan saya sekarang memulai proyek menengah (menengah untuk menjadi pengembang tunggal dan tidak memiliki melakukan banyak permainan) dan satu hal yang saya temukan dengan proyek khusus ini adalah bahwa pemisahan kekhawatiran jauh lebih sulit karena semuanya mempengaruhi keadaan, dan setiap objek dapat berinteraksi dengan setiap objek lainnya dalam berbagai cara.
Sejauh ini saya telah berhasil menjaga kode itu cukup bersih untuk kepuasan saya, tetapi saya menemukan bahwa menjaga kode bersih dalam permainan non-sepele jauh lebih sulit daripada untuk pekerjaan sehari-hari saya.
Gim yang sedang saya kerjakan berbasis giliran dan grafiknya akan cukup sederhana (berbasis web, sebagian besar melalui manipulasi DOM) sehingga pekerjaan waktu nyata dan 3d tidak benar-benar berlaku bagi saya, tetapi saya masih akan tertarik pada jawaban mengenai hal-hal tersebut jika itu menarik. Paling tertarik pada logika game umum.
PS Jangan ragu untuk mengulangi ini, saya tidak begitu yakin tag apa yang berlaku.
sumber
Saya terutama adalah pengembang game dan bukan pengembang perangkat lunak tradisional, tetapi saya pikir ada beberapa perbedaan utama.
Ini jelas beberapa generalisasi dan tidak komprehensif:
Tim yang lebih besar. Latar belakang yang lebih bervariasi (artis, programmer, produser, dengan masing-masing variasi bahkan lebih). Siklus pengembangan yang lebih lama. Standar kinerja yang lebih tinggi. Skala proyek yang lebih besar. Risiko kegagalan yang lebih besar dan lebih mahal. Lingkungan yang lebih stres.
Adapun interaksi objek dan meletakkan arsitektur Anda, Anda masih dapat memisahkan sistem dengan benar. Objek dan perilaku gameplay Anda, jelas akan memiliki ketergantungan satu sama lain dan pada sistem ini. Itu adalah sifat dari permainan itu (pun intended), itu menggabungkan semua sistem ini menjadi satu, unit kohesif, dan tidak ada yang salah dengan itu. Ini mungkin tampak begitu karena skala semua itu lebih besar daripada yang biasa Anda lakukan.
Beberapa sistem mudah diidentifikasi dan dipisahkan?
sumber
Saya tidak berpikir pemrograman game berbeda dari domain aplikasi lain dari sudut pandang itu menjadi lebih sulit untuk memilih pemisahan yang tepat dari kekhawatiran. Setiap kali Anda membawa keahlian Anda ke jenis domain aplikasi yang berbeda, Anda akan menemukan bahwa transisi tidak semulus yang Anda harapkan karena selalu ada perbedaan. Apa yang berfungsi di aplikasi basis data Anda memiliki banyak pola / idiom yang tidak berfungsi dengan baik di aplikasi tertanam Anda, yang memiliki banyak pola / idiom yang tidak bekerja dengan baik dalam sistem waktu nyata yang juga memiliki banyak pola / idiom yang tidak bekerja dalam pemrograman game. Namun, programmer game memiliki masalah yang sama ketika mereka meninggalkan domain pemrograman game mereka. Ini semua hanya masalah apa yang biasa Anda lakukan.
Dengan mengatakan itu, saya pikir pemrograman game tampaknya lebih sulit bagi banyak orang karena mengharuskan Anda untuk bekerja dengan bagian-bagian komputer yang sebagian besar programmer tidak perlu berurusan dengan pekerjaan mereka yang sebenarnya (grafis dan suara tingkat rendah) dan matematika yang lebih banyak diterapkan daripada banyak orang merasa nyaman dengan dan bukan karena pemisahan kekhawatiran. Meskipun selalu ada kesulitan dalam menentukan pilihan yang tepat untuk pemisahan masalah, saya pikir kesulitan dengan pemisahan masalah yang Anda alami hanyalah pindah ke domain masalah baru. Setelah Anda membangun beberapa aplikasi maka itu akan menjadi seperti yang lain, Anda akan belajar apa yang Anda suka dan tidak menggunakan apa yang tidak Anda sukai.
sumber
Saya pikir Anda punya jawaban di sana, ada banyak interaksi. Saya membuat beberapa game dengan XNA (C #), sekarang saya sedang melakukan game ukuran sedang seperti yang Anda katakan, sebuah game simulasi strategi, telah mengerjakannya selama hampir 2 bulan sekarang, dan saya melakukannya sendiri tanpa bantuan, jadi saya harus menjaga kode saya sederhana. Satu perbedaan besar menurut saya, adalah memahami dan mendesain beberapa kelas untuk fungsionalitas, dan lainnya untuk menggambar, ini membantu dan membuat program Anda lebih bersih. Tentu saja, jika Anda melakukan permainan, Anda harus memiliki lebih banyak sumber daya, seperti gambar (2d atau 3d) dan musik (atau suara). Jadi ada perbedaan, saya pikir ini lebih sulit, tetapi sangat lucu.
sumber
Saya pikir Pemrograman Game lebih menyenangkan. Anda dapat terus menguji game Anda, Anda menerapkan fisika yang berbeda, yang menghasilkan perilaku yang berbeda.
Dari pengalaman saya, pemrograman game sebenarnya jauh lebih menyenangkan dibandingkan dengan pengembangan perangkat lunak. Dalam pengembangan perangkat lunak Anda memiliki aturan bisnis tertentu untuk dipatuhi, itu menjadi sedikit membosankan. Anda sedang membuat perangkat lunak, itu tidak menyenangkan. Menggunakan perangkat lunak itu bagus, bermanfaat, bermanfaat, tetapi tidak menyenangkan.
Game itu menyenangkan. Mungkin itu hanya saya, tetapi saya menemukan pengembangan game jauh lebih menarik dan menyenangkan daripada pengembangan perangkat lunak tradisional, terlepas dari alat yang digunakan.
PS: Saya menggunakan alat terbaru untuk pengembangan perangkat lunak, HTML5, Asp.Net, C #, dll. Saya masih menemukan DirectX, UDK, XNA, Unity lebih menyenangkan untuk dikodekan.
sumber