Kemungkinan Gandakan:
Di mana saya dapat menemukan contoh kode permainan yang baik (terorganisasi dengan baik)?
Saya telah membuat kode beberapa game C ++ dan sekarang saya sedang membangun mesin dan editor permainan saya sendiri.
Saya memiliki keraguan tentang desain dan saya ingin menemukan contoh yang bagus untuk diikuti.
Apa yang terbaik dirancang menurut Anda?
Harus berorientasi objek. Bahasa pemrograman tidak masalah, tetapi saya lebih suka dalam urutan ini: C ++, C #, Java atau yang serupa lainnya.
Diedit: Untuk lebih memperjelas, saya tidak tertarik pada kode khusus gim. Saya ingin mesin permainan tujuan umum.
Diedit: Artikel ini menjelaskan apa itu mesin permainan: mesin permainan di wikipedia dan berikut adalah daftar mesin permainan yang dikenal: daftar mesin permainan di wikipedia
sumber
Jawaban:
Saya pikir cara terbaik untuk membangun mesin game adalah mulai dengan apa yang sudah Anda ketahui dengan baik dan menambahkan fitur-fitur yang membosankan atau berulang-ulang.
Sebagai contoh, saya melakukan banyak hal dengan Python / pygame (yang merupakan pembungkus SDL) saya menikmati sistem ini cukup banyak, tetapi ada tiga hal yang mengganggu saya:
dapat saya tambahkan dengan mudah ke permainan saya.
Itu relatif mudah untuk membuat pembungkus berorientasi objek di sekitar fitur-fitur ini. Lihatlah bab 10 dan dokumentasi Mesin Game tersedia di sini: http://aharrisbooks.net/pythonGame/
(Ini ditulis sebagai bagian dari buku, tetapi Anda dipersilakan untuk mesin permainan bahkan jika Anda tidak menginginkan buku itu.)
Bab 10 menjelaskan motivasi dan teknik untuk membangun mesin game 2D dasar. Anda mungkin menikmatinya saat Anda membangun sendiri. Bahasa sebenarnya tidak begitu penting (kecuali tentu saja Anda akan memerlukan bahasa OOP untuk mendukung OOP.) Jika Anda sudah menggunakan SDL dengan C ++, Anda mungkin mulai dengan mengadaptasi mesin saya ke C ++ / SDL.
sumber
Desain mesin Quake (ID tech) yang terhormat telah bertahan dalam ujian waktu dan mungkin merupakan desain mesin game paling sukses sepanjang masa. Semuanya selain renderer sebagian besar tidak berubah sejak akhir pertengahan 90-an dan masih digunakan dalam game modern seperti ETQW.
Kode sumber lengkap untuk empat iterasi mesin ini (Gempa 1 hingga 3, plus Wolf ET) tersedia di bawah GPL. Mungkin ada lebih dari seratus mesin game berbasis masyarakat yang dikembangkan secara aktif dan dikembangkan yang membuat mereka tetap relevan di zaman modern. Yang patut dilihat adalah XreaL untuk renderernya yang fantastis dan ioQuake3 untuk pemeliharaan yang setia dari Quake 3 yang dioptimalkan untuk perangkat keras modern. Juga, untuk versi ID "resmi" mesin yang lebih baru, logika permainan (bukan seluruh mesin) juga tersedia.
Bahkan jika Anda tidak menggunakan mesin game ini, layak untuk dipelajari karena arsitektur pemisahan server-klien yang dipikirkan dengan matang dan pemisahan logika game dari detail tingkat rendah.
sumber
Pustaka rendering Ogre3D cukup dekat dengan kode mesin dan dari semua akun yang saya dengar dirancang dengan sangat baik dan sangat OO.
http://www.ogre3d.org/
sumber
Ketika berbicara tentang mesin permainan, saya kira Anda sedang memikirkan apa pun yang bukan mesin render, mesin suara, mesin fisika, mesin input, dll.
Jadi Anda mungkin berpikir tentang arsitektur game, AI, atau pola desain / sistem dll, yang digunakan untuk menyusun perangkat lunak menjadi mengelola data dan komponen lain untuk membuat semacam adegan / ilalang / ilusi, sehingga menghasilkan seperangkat aturan yang dapat dikelola untuk tweak untuk membuat "video game" yang sebenarnya.
Ini adalah lapisan teratas video game yang sebenarnya, dan saya bahkan mencoba belajar sedikit tentangnya, sangat luas, rumit, dan membutuhkan banyak pengetahuan tentang semua subjek lainnya. Bayangkan Anda ingin membuat kembali realitas alternatif dari ketiadaan, melacak dan menghitung setiap peristiwa, dan membuat kembali data yang akurat dari semua itu, pada saat apa pun: untuk setiap jenis permainan ada semacam mesin permainan, dan saya tidak T pikir sebenarnya mungkin untuk membuat mesin generik yang secara matematis cukup cepat. Bahkan untuk gim di mana Anda mengontrol satu karakter, masih ada banyak hal yang bisa bervariasi dan masih bisa mengharuskan gim mengubah seluruh arsitektur.
Industri game tidak terlayani dengan baik oleh open-source seperti bidang ilmu komputer lainnya, hanya karena hiburan memiliki berbagai jenis lisensi, yang melibatkan lisensi artistik: produk game hanya dibayar oleh pelanggan, dan AFAIK, hanya ada beberapa mesin yang tampaknya cukup baik untuk Anda: Hord3d, NeoAxis, blendelf, Panda3D. Tetapi saya tidak dapat meyakinkan Anda bahwa mereka akan semudah digunakan sebagai alat seperti Unity, Torque, C4 dan lainnya; perlu diingat bahwa mesin permainan, dengan renderer grafis, saya pikir jenis perangkat lunak yang paling sulit Anda akan temukan dalam pembuatan game.
sumber
Bagi saya menggunakan Python dengan Pygame adalah solusi yang bagus. Mungkin Python agak lambat tetapi untuk komputer saat ini dan jika Anda hanya mencoba untuk mengoptimalkan permainan Anda ini tidak masalah. Pygame memiliki dokumentasi yang sangat bagus di situs pygame asli. Tapi pertama-tama ambil tutorial awal untuk mempelajari beberapa dasar. Untuk pengoptimalan kecepatan (mengonversi gambar, ...) Anda memerlukan contoh lain yang mudah ditemukan.
sumber