Memo ke pengembang game komputer pemula


Artikel ini ditujukan untuk anak sekolah, siswa, dan mereka yang lebih tua, yang belum pernah mencoba, tetapi benar-benar ingin mulai menulis permainan komputer. Siapa di masa kecil yang tidak bermain game komputer, dan tidak ingin menulis game sendiri, yang akan lebih baik daripada GTA atau Crysis? Dan saya ingin, dan anehnya, saya masih ingin. Dan selama beberapa tahun berlatih mengajar programmer yang sama, saya mendapat beberapa catatan tentang ke mana harus pergi dan apa yang harus dilakukan.

Artikel ini tidak mengklaim sepenuhnya akurat dan dapat diandalkan, artikel ini ditulis hanya oleh satu orang yang telah mengumpulkan pengalamannya hanya dalam beberapa tahun. Juga, itu hanya mempertimbangkan sisi praktis dan romantis: itu tidak mencakup masalah monetisasi dan mendapatkan manfaat apa pun dari permainan selain memuaskan orang yang dicintai, dan mungkin orang lain.

1. Di mana untuk memulai?


Dari latihan. Anda dapat mulai dengan C murni dan OpenGL / DirectX, ini adalah cara samurai, karena untuk mempelajarinya dari awal, tanpa abstraksi, cukup sulit.

Anda dapat menggunakan kerangka kerja seperti SDL, atau LibGDX / PyGame / LÖVE2D tingkat lebih tinggi jika C / C ++ tampaknya terlalu membingungkan. Di sini level abstraksi sedikit lebih tinggi, jadi bekerja sedikit lebih mudah, tetapi Anda harus mengerjakan sendiri seluruh organisasi dari struktur internal game, menyadari apa itu loop game dan bagaimana mengatur sistem acara di dalamnya. Pendekatan ini memberikan tingkat pengetahuan dan keterampilan yang baik, tetapi, pada awalnya, itu tidak memberikan insentif untuk naik ke kedalaman belantara besi.

Dan akhirnya, Anda dapat mengambil mesin game seperti Unity / Unreal / CryEngine / Godot, dan membuat mainan di atasnya.

Jadi, bagaimana kita memilih dari semua keragaman ini? Tetapi ini hanya sebagian kecil. Jebakan khas yang dimiliki pemula yang bukan pengembang adalah pilihan alat. Kerangka / mesin dan bahasa. Banyak artikel dibaca, tutorial video ditonton, di suatu tempat hal-hal besar dikatakan tentang sesuatu, di suatu tempat hal-hal buruk diberitahu tentang hal yang sama ... Tidak ada sistem yang ideal dan tidak ada, jika tidak, Mesin Game Ideal akan ditemukan sejak lama (bersama dengan Ideal Bahasa Pemrograman), dan semua perusahaan hanya akan mencari "programmer," bukan programmer dalam ekosistem tertentu. Kami hanya mengambil alat yang lebih sesuai dengan tugas kami, atau hanya menyukainya dengan lebih baik, dan orang yang tidak dapat memilih dapat tinggal di tempat yang sama selama bertahun-tahun, tanpa kemajuan apa pun.
Jadi bagaimana cara memilih? Kita bisa mengambil yang pertama, dan mulai mengerti. Tidak suka bila menggunakannya lebih dari satu atau dua minggu? Kami mengambil yang berikut ini, dan segera menulis sesuatu yang sederhana seperti ular, di sepanjang jalan membaca dokumentasi untuk alat yang dipilih dan mencari yang lainnya di Google, dan menulis dokumen desain untuk Super Game kami, yang akan membunuh Diablo dan Doom pada saat yang sama. Mengapa memulai dengan sesuatu yang sederhana ketika kita sudah memiliki gagasan tentang Super Game? Semuanya sangat sederhana, tingkat keterampilan pengembang pemula selalu sangat rendah sehingga ia akan menulis ulang Super Game-nya dua puluh kali, hasilnya tidak akan memenuhi harapan, dan di balik frustrasi ini adalah pendinginan total untuk ide menulis game dan pemrograman Anda secara umum. Pada awal pelatihan, kami melakukan hal-hal sederhana yang dapat segera Anda rasakan dan mainkan dengan teman-teman di sana, bersaing dalam catatan. Ini adalah insentif kami, ini adalah kegembiraan kami dari pendidikan mandiri dan aktivitas otak yang produktif, ini adalah sesuatu yang tidak memungkinkan kami kelelahan. Setelah ular, pertama-tama Anda dapat melihat ular ini dan mencoba untuk menulis ulang dengan cara "normal", karena ular pertama, bahkan yang bekerja dengan sempurna, akan memiliki struktur internal seperti monster, mengubah tampilan ular akan sangat sulit, dan menambahkan bonus baru akan lebih sulit lagi. . Dan kemudian menulis ulang lagi, atau beralih ke sesuatu yang lain, kalau tidak ular ini sudah duduk di hati. Sekarang kita akan membuat, misalnya, bola melompat dari dinding, yang perlu masuk ke ring, tidak masalah apa, pada kenyataannya, akan menjadi ide.

Hanya ada beberapa tips untuk memilih: menurut pendapat saya, Anda tidak boleh mengambil sesuatu yang terlalu rendah, karena kami menulis game di sini, daripada mengganggu bendera bit dan memanjakan pointer. Dengan sesuatu yang tingkatnya sangat rendah, sangat mudah untuk pergi ke hutan yang jauh dan menghabiskan beberapa bulan hampir sia-sia. Dan jangan mengambil sesuatu yang terlalu tinggi (seperti mesin), karena mereka memberikan tingkat abstraksi yang terlalu tinggi. Selama kita tidak tahu bagaimana mesinnya diatur, kita tidak masuk akal untuk menggunakan perkembangan orang lain, kita harus memahami bagaimana itu diatur, karena semua orang di dunia mesin memiliki banyak keterbatasan internal yang harus kita tangani di masa depan, dan kita memiliki tangan dan kaki yang terhubung kurangnya informasi dan pemahaman tentang proses, ditambah segera setelah beberapa lubang di mesin bocor , kami tidak dapat melakukan apa pun sampai kami sepenuhnya memahami struktur internalnya. Keseimbangan kompleksitas belajar dan kebebasan bertindak.

2. Bagaimana cara belajar?


Di sini satu keterampilan yang sangat berguna yang disebut "googling" berguna bagi kita. Internet adalah sumber informasi yang sangat besar, yang untuk beberapa alasan, dalam ingatan saya, biasanya diremehkan, dan halaman kedua dari mesin pencari sudah merupakan sesuatu yang tidak dapat dicapai. Oleh karena itu, kami belajar mengajukan pertanyaan seperti itu ke mesin pencari sehingga memberikan sampel yang kami butuhkan. Secara umum, di awal, tutorial video akan turun. Dan Anda dapat membaca buku teks. Pelajaran video memiliki keuntungan bahwa mereka segera memberikan hasil nyata dalam waktu singkat, yang sangat berguna untuk motivasi, tetapi mereka memiliki masalah besar dengan kelengkapan informasi, sehingga tidak ada yang membatalkan buku teks dan dokumentasi. Anda dapat melihat dan melihat contoh kode di github, ini adalah pelajaran yang sangat berguna, dari mana Anda dapat belajar tidak kurang dari dari buku teks. Kami melihat segala sesuatu yang tidak dapat dipahami dalam kode orang lain, dan mencari di internet apa yang ada di sini. Lalu kita gunakan (atau tidak, hehe). Pencurian ide dan konsep hanya didorong (jika kode itu di bawah lisensi gratis). Jika ada sesuatu yang cukup rumit, tetapi sangat diperlukan - tidak dilarang untuk menghubungi orang lain di forum dan ruang obrolan, tetapi sangat mudah untuk mulai menyalahgunakan metode ini, oleh karena itu tidak disarankan dan hanya jika dipanggang sepenuhnya, dan beberapa jam pencarian yang kompeten tidak berhasil. Dari bidang matematika, saya sangat menyarankan Anda untuk membaca dan memahami aljabar vektor, geometri analitik, teori probabilitas dan banyak kata-kata pintar, karena ini adalah bidang yang cukup universal yang berguna tidak hanya dalam permainan. Dari bahasa - bahasa Inggris yang jelas, sebagian besar dokumentasi ditulis dalam bahasa Inggris. Menggunakan penerjemah tidak dilarang. Sekali lagi, di sini kita paling perlu belajar untuk belajar dan mencari informasi, itu akan berguna di mana-mana dan selalu, tidak hanya di daerah ini. Namun, pelatihan tidak harus menaungi praktik dan sebaliknya. Dianjurkan untuk menjaga rasio waktu antara menulis dan belajar pada level 20/80, dan kemudian, latihan hanya dapat ditambahkan, siswa abadi itu baik, tetapi tidak praktis. Menyeimbangkan waktu.

3. Ingin sesuatu yang lebih serius?


Setelah tahap terakhir dan beberapa (puluhan) prototipe permainan, kami telah belajar menulis dengan baik, mungkin bahkan dengan jumlah yang tidak terlalu besar jika-elseif-elseif bersarang. Kami menemukan dan membaca beberapa lusinan proyek orang lain, dan bahkan jika setengahnya tidak mengerti, ini masih tidak terlalu menakutkan, karena kami sudah siap melakukan sesuatu yang serius, seperti Super Game? Pegang kudanya. Kami memiliki beberapa prototipe, dan mereka bahkan bermain bagus, tetapi kami bahkan belum mencoba untuk menyelesaikan pekerjaan kami. Begitu sesuatu menjadi lebih atau kurang berfungsi, kami hanya pindah ke sesuatu yang lebih menarik, tetapi kami masih menunggu tahap yang sangat keras, di mana sangat banyak (termasuk saya, hehe) mogok: menciptakan Proyek Selesai. Apa bedanya dengan prototipe kami? Dan inilah: Proyek Selesai adalah prototipe yang sama, tetapi telah dihabiskan tiga kali lebih lama daripada bagian prototipe, ia menyelesaikan semua menu, pengaturan, memeriksa apakah ia bekerja dengan baik pada resolusi layar yang berbeda dan dengan keyboard yang berbeda, setidaknya selusin level atau pilihan tingkat kesulitan sehingga menarik untuk bermain tidak hanya untuk penulis dan teman-temannya, tetapi juga untuk orang-orang acak di sekolah atau universitas. Bagian yang paling rutin, apa yang harus dikatakan, tetapi yang paling berguna, dan akan dilatih dengan sangat baik untuk menang. Jika Anda tidak melewati tahap ini, Anda dapat tetap menjadi penulis prototipe seumur hidup. Seimbangkan diri Anda dalam rutinitas dan kesenangan.

4. Di mana mencari perpustakaan?


Jika Anda hati-hati membaca paragraf kedua, jawabannya tampak jelas: online, di repositori dan dari orang lain. Dan seolah-olah semuanya baik-baik saja, kami menghemat waktu dan segera melakukan sesuatu yang keren. Tapi ketika kita sedang belajar dan kita punya waktu, dan kita memiliki kesempatan untuk membangun sepeda - adalah dosa untuk tidak mengambil kesempatan ini. Jika membaca buku teks dan artikel, dan melihat pelajaran adalah perpanjangan dari pengetahuan kita, maka menulis perpustakaan kita sendiri adalah pendalaman, dan di beberapa bidang sekaligus: menerapkan API yang nyaman (memotong kinerja dan kegunaan yang berlebihan dan menyeimbangkan), memperdalam dan menjelajahi bagian dalam ekosistem bahasa-besi kita , dan pembuatan modul jadi kecil, bahkan jika mereka menduplikasi sebagian fungsionalitas yang sudah ada. Tetapi hal utama di sini adalah tidak berjalan dalam siklus. Kami masih menulis game, dan toolkit untuk mereka, di sini Anda bisa menjadi penulis perpustakaan, dan tidak pernah melakukan satu pun Proyek Jadi. Tetapi ada juga lapisan besar pengalaman umum.

5. Kesimpulan.


Masih banyak pertanyaan yang belum terjawab, beberapa di antaranya akan dijawab secara singkat di sini.
Apa itu dokumen desain dan mengapa itu diperlukan? Ini adalah wiki untuk game yang belum dibuat, semakin penuh semakin baik. Dan hal ini harus dilakukan sebelum permulaan permainan, memperkirakan waktu pengembangan dengan jumlah orang yang tersedia dan memotong fitur.

Mengapa memotong fitur? Melewati tahap-tahap sebelumnya, Anda dapat memperkirakan waktu di mana Anda dan tim Anda akan lelah melakukan proyek ini. Jika kita berada dalam situasi pengembangan indie bawah tanah tanpa dana dan jadwal kerja, ada kemungkinan sangat besar kebingungan dan terguncang alih-alih melaksanakan proyek. Semua hal-hal keren diimplementasikan dengan sangat cepat, dan masih ada banyak rutin, yang perlu dilakukan, dan tugas kita adalah untuk menyeimbangkan kesejukan dan rutinitas sehingga menyelesaikannya tetap sama.

Di mana mencari artis / musisi / desainer? Untuk mulai dengan, Anda dapat membuat Proyek Hampir Selesai, tanpa grafis dan suara, dengan sprite ditulis dalam msPaint dan animasi canggung yang sama dan bercinta-poni dari sumber daya gratis yang ditemukan di jaringan. Saya benar-benar tidak merekomendasikan memuat orang lain dengan sesuatu yang belum selesai dan memiliki peluang tinggi untuk tetap belum selesai.

Sebenarnya, saya akan mendapatkan pekerjaan di Valve, EpicGames atau di mana pun, dan bekerja di sana, mengapa saya membutuhkan semua ini? Sebagian besar programmer di dunia adalah otodidak, seringkali dengan pengalaman "basement" yang luas, apalagi, prototipe dan mainan kecil adalah portofolio yang sangat baik untuk penempatan di perusahaan besar, dan tidak hanya untuk posisi pengembang game.

Bonus: Sebagian besar teknik ini cocok untuk bidang apa pun, tidak hanya pemrograman game, tetapi juga pemrograman saja. Selain itu, Anda bisa mendapatkan pendidikan seni atau belajar cara mengukir, menggunakan instruksi yang sama setelah suntingan kecil di arah yang benar.

Terima kasih telah membaca, artikel ini dapat dikritik dan ditambahkan.

Source: https://habr.com/ru/post/id470199/


All Articles