Setiap kali saya mengajukan pertanyaan tentang pengembangan game di forum online, saya selalu mendapatkan saran seperti mempelajari algoritma menggambar garis, manipulasi gambar level bit, dan dekompresi video dll.
Namun melihat game seperti God of War 3, saya merasa sulit untuk percaya bahwa game ini dapat dikembangkan menggunakan teknik tingkat rendah seperti itu.
Kedahsyatan semata-mata dari permainan seperti itu menentang metodologi pemrograman yang dapat dipahami (untuk saya).
Selain itu hardware gaming benar-benar monster sekarang. Jadi masuk akal bahwa para pengembang akan bekerja pada tingkat abstraksi yang lebih tinggi.
Apa metodologi pengembangan terbaru dalam industri game? Bagaimana mungkin tim yang terdiri dari 30-35 pengembang (yang sebagian besar adalah manajemen dan pemasaran fluff) mampu membuat permainan yang membingungkan seperti itu?
Jika pertanyaannya tampak terlalu umum, bisakah Anda menjelaskan arsitektur God of War 3? Atau bagaimana Anda akan menghasilkan kloning? Itu saya pikir harus jawab secara objektif.
sumber
Jawaban:
Penafian: Saya bukan pengembang video game. Tetapi saya memiliki minat "hobiis" di dalamnya.
Sebagian besar game AAA yang Anda lihat dibuat menggunakan Mesin. Mereka tidak ditulis dari bawah ke atas. Pikirkan mesin seperti kerangka. Anda memiliki .NET framework, Java SDK, Cocoa toolkit.
Semua hal untuk membuat pekerjaan Anda menciptakan perangkat lunak lebih mudah dan mengabstraksi kode kitchen-sink. Itu perlu, tetapi menulisnya setiap saat sangat tidak produktif.
Dengan menggunakan mesin ini, pengembang dapat membuat game mereka dan tidak perlu khawatir tentang beberapa kode yang mendasarinya. ( Jangan salah, pengembangan game adalah salah satu cabang rekayasa perangkat lunak yang paling sulit. )
Misalnya, Unreal Engine 4 memiliki kit dan studio pengembangan pembunuh:
http://www.youtube.com/watch?v=MOvfn1p92_8
Ada banyak mesin yang berbeda di luar sana. Beberapa berbayar, beberapa gratis, beberapa lagi ke logam, yang lain menawarkan abstraksi yang lebih tinggi.
Sebagai contoh:
sumber
Mengacu pada komentar gbjbaanb, beberapa hal yang membuat pemrograman gim menyenangkan adalah masa pakai basis kode yang terbatas dan tidak adanya persyaratan yang diperlukan. Misalnya, jika Anda merancang game FPS, dan algoritme gerakan Anda terkadang menempatkan karakter game Anda beberapa piksel, itu bukan masalah besar dan kemungkinan tidak ada yang akan memerhatikan. Jika Anda merancang perangkat lunak bisnis dan terkadang fungsi penjumlahan Anda memberi Anda beberapa dolar, itu adalah bug yang jauh lebih serius. Jadi ketika merancang game, beberapa aspek bisa menjadi jauh kurang tepat (dan hanya harus melewati pengujian manusia, daripada test suite otomatis yang memeriksa bahwa jawabannya tepat benar).
Pengalaman saya adalah bahwa pemrograman game, terutama untuk game real-time, adalah pengalaman yang jauh berbeda dari ... hampir semua pengembangan perangkat lunak lain yang pernah saya lakukan, mungkin kecuali untuk pekerjaan GUI. Itu sesuatu yang harus kamu coba!
sumber
Jawabannya adalah "mesin". Banyak game dibangun di atas berbagai mesin grafis dan gameplay yang pada dasarnya adalah perpustakaan besar atau kerangka kerja.
Di dunia OSS, lihatlah Ogre sebagai contoh, untuk gim komersial yang Anda miliki seperti Source.
Ada faktor-faktor lain yang berperan, seperti banyak kode yang dapat dibuang dan tidak akan berhasil dalam lingkungan bisnis - tetapi itu karena umur permainan yang terbatas, dan rentang waktu pengembangan yang dipercepat, berarti kode tersebut (hampir) dirancang hanya untuk bekerja, bukan untuk dipertahankan.
sumber
Unity3D sangat bagus. Inilah beberapa poin yang saya sukai:
http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features
http://unity3d.com/unity/licenses
http://unity3d.com/unity/editor/importing (gulir ke bawah sedikit)
Pengkodean (scripting) dapat dilakukan dalam C # yang merupakan bahasa yang bagus, dengan API yang baik dan kompilasi cek waktu. Hadir dengan lingkungan pengembang yang baik (IDE dan segalanya). Jika Anda menginginkan sesuatu yang berbeda, itu mendukung Javascript juga.
Memiliki dukungan fisika yang sangat baik (tumbukan, gravitasi, gaya, dll):
http://docs.unity3d.com/Documentation/Manual/Physics.html
Memiliki toko aset yang memungkinkan Anda membeli berbagai model, skrip, animasi dll, dan tergantung pada keahlian Anda (dan dompet), Anda bisa mendapatkan / memodifikasi mereka untuk dengan cepat mendapatkan sumber daya yang layak untuk permainan Anda.
Terakhir namun tidak kalah pentingnya, ini cukup cepat. Lihat demo seluler, IMHO mereka bergerak cukup baik dan memiliki grafik yang sangat baik:
http://unity3d.com/gallery/made-with-unity/game-list
Inilah satu proyek Unity yang bagus yang saat ini saya tunggu-tunggu:
Tanah Air Brian Fargo 2
Mereka memiliki entri blog yang bagus tentang mengapa mereka memilih Unity , serta yang lainnya membahas bagaimana bekerja dengannya .
sumber
ID Software adalah salah satu vendor yang biasanya menerbitkan game canggih. Beberapa tahun kemudian mereka sering merilisnya sebagai open source. Pada http://fabiensanglard.net/quake3/index.php Anda dapat menemukan analisis kode sumber Quake3. Ini adalah deskripsi yang sangat jelas dan meskipun Quake3 cukup lama sementara konsepnya masih harus relevan untuk game modern.
Dan ya, jika Anda ingin membangun mesin permainan modern dan kompetitif modern yang canggih, Anda harus mengetahui semua bagian level rendah itu. Jika Anda tidak ingin peduli tentang itu: Ada mesin yang berbeda (mesin quake3 atau yang dari jawaban lain) tersedia tetapi, maka Anda tidak membuat game revolusioner baru ;-)
sumber
Seperti banyak jawaban menyebutkan, mesin permainan dan perpustakaan memainkan peran besar. Namun, harap dicatat bahwa ini berlaku untuk game komersial menengah besar lebih dari pada game "indie" kecil.
Sebagai contoh pada platform mobile, sebagian besar game ditulis hanya menggunakan satu set perpustakaan yang relatif primitif daripada mengandalkan engine-engine full-blown frameworks. Mereka memang ada, tetapi sebagian besar tentang menggunakan kembali kode Anda sendiri dari proyek sebelumnya.
sumber