SARAN DARI AMATEUR
// Dari Nol ke Amatir selama Bertahun-tahun Belajar
Saya pasti akan menjauh dari mesin tingkat tinggi seperti Unity atau Torque2D MIT. Mereka bagus untuk prototipe kecil, tetapi saya tidak akan pernah menganggapnya serius untuk mengembangkan video game saya sendiri. Mengapa saya harus? Apa gunanya kecuali itu tidak lebih dari SideScroller atau Arcade remake yang sederhana?
Sebagian besar mesin gim, perpustakaan, atau kerangka kerja tidak lebih dari tugas yang paling sederhana dengan banyak kode bengkak dengan fungsi dan fitur yang tidak akan pernah Anda gunakan.
Ketika saya masih baru dalam pengembangan game tahun lalu, saya mulai di atas. Mesin tingkat sangat tinggi. Bukan sesuatu yang terlalu tinggi seperti RPG MAKER, tapi pasti tinggi di sana seperti Unity dan Torque. Lalu saya turun, ke XNA dan C #, karena punya banyak sumber daya dan tutorial. Proyek utama saya membutuhkan kinerja, atau mungkin saya hanya obsesif-kompulsif tentang keinginan kinerja luar biasa dalam perangkat lunak saya, bahkan jika itu bukan proyek besar. XNA tidak memotongnya, dan saya punya banyak masalah dengan mesin yang saya baca membutuhkan sakit kepala untuk memperbaikinya. Apa gunanya menggunakan sesuatu "tingkat yang lebih tinggi" seperti XNA / C # ketika Anda melakukan pekerjaan yang sama (memperbaiki bug & masalah XNA) karena Anda akan memutar mesin Anda sendiri di C ++?
Setelah cukup lama belajar, saya akhirnya belajar tentang bagaimana mesin game dirancang dan mulai melihat ke dalam kode mesin itu sendiri. Membaca apa yang dikatakan sebagian besar profesional dan keluhan para kritikus mesin gim membuat saya sadar, 'Mengapa menggunakan mesin? "
Memoles C ++ saya dan benar-benar membahas beberapa filosofi yang digunakan dalam bahasa itu sangat membantu saya. Namun, saya telah menghabiskan begitu banyak waktu mempelajari begitu banyak sehingga saya hanya ingin mulai membuat game.
Jadi saya berakhir dengan sesuatu dengan cukup banyak pujian, adalah C ++, dan tingkat yang sangat rendah: SDL. Sayangnya, ini sakit kepala. Tingkatnya sangat rendah, saya melihat di samping tidak ada alasan mengapa bahkan menggunakan perpustakaan ini. Saya lebih suka belajar OpenGL dan melakukannya sendiri dari awal. Jujur, itu sebagian besar fakta bahwa saya perlu menerapkan kode saya sendiri untuk melakukan sesuatu yang mendasar seperti membalik gambar (dan implementasi lain tidak berfungsi karena cara saya menangani sprite) yang mendorong saya untuk membuang SDL secara permanen. Sangat bagus jika Anda menginginkan perender perangkat lunak, tetapi IMO saya lebih suka membuangnya agar lebih rendah dengan perangkat keras (OpenGL) atau lebih tinggi (SFML).
Tidak ingin membeli buku lain di amazon dan belajar API lain, saya naik lebih tinggi. SFML sangat luar biasa, belum lagi sangat dipuji di seluruh internet. Saya telah membaca ulasan positif yang hampir tak ada habisnya, dengan hampir tidak ada negatif. Saya tidak bisa mengatakan hal yang sama untuk SDL. Ini menangani semua dasar-dasar ekstrim, tetapi menyerahkan sisanya kepada saya dan perpustakaan lain yang saya pilih. Saya terjebak dengan itu sejak itu.
IMO, mesin game itu konyol. Pustaka tingkat rendah adalah pilihan yang jauh lebih baik untuk programmer ahli dan pemula.
Juga untuk dicatat, saya telah belajar lebih banyak tentang konsep pemrograman dan telah mempertajam keterampilan pengembangan perangkat lunak saya ketika dipaksa untuk menangani hal-hal di tingkat yang lebih rendah daripada yang pernah saya pelajari dengan mesin permainan WYSIWYG tingkat tinggi.
Apa yang sesuatu seperti Unity memberi Anda lebih dari XNA? Pengeditan visual dan penopang. Pemula baru akan belajar bahwa Anda masih harus mengkodekan hampir seluruh permainan seperti yang Anda lakukan jika Anda menggunakan C ++, dan editor visual tidak efisien untuk sesuatu yang dapat Anda buat sendiri.
Apa yang diberikan sesuatu seperti XNA pada SFML atau implementasi OpenGL Anda sendiri dan pustaka bermanfaat lainnya? IMO, absolutley tidak ada yang baik. Kinerja yang lebih buruk, C # bukannya C ++, sejumlah besar tutorial pemula tetapi secara signifikan kurang profesional, dan beberapa penabung sakit kepala bahwa IMO sekali lagi hanya penopang untuk apa yang harus Anda pelajari dengan C ++. Saya awalnya diintimidasi dengan C ++ dan mencintai C #, sebagian besar karena mendengar-katakan dan desas-desus tentang pendapat orang-orang bodoh yang memiliki masalah yang sama saya awalnya dengan C ++: Saya hanya ingin seorang programmer yang cukup baik. Saya menyadari bahwa saya perlu belajar lebih banyak fundamental dan mempertajam kelemahan saya untuk mengatasi masalah yang saya alami dengan C ++, yang C # "dipermudah." Apakah saya pernah melewatkan kesederhanaan beberapa hal dalam C #? Bahkan tidak! Saya tahu bagaimana melakukannya di C ++ tanpa kerumitan.
Jika pustaka tingkat rendah atau mempelajari DirectX / OpenGL mengintimidasi Anda, maka tunggulah sampai Anda mulai memasuki kerumitan membuat gim video lengkap.
Filosofi saya tentang mesin permainan dapat diringkas dalam dua contoh yang menjelaskan redundansi dan kegunaan mesin, kecuali dalam keadaan terisolasi.
Pemula yang diintimidasi dengan perpustakaan tingkat rendah, akan mengalami kejang ketika mereka menemukan bahwa bahkan dengan mesin tingkat tinggi seperti Unity, (selain rendering grafis, pemutaran audio, pemuatan konten; hal-hal dasar yang nyata) itu akan hampir identik dengan membuat permainan dari awal. Kompleksitas dalam rekayasa game, tidak memahami API atau mengembangkan kelas untuk ditampilkan.
Para ahli yang tidak terintimidasi oleh kerumitan menciptakan permainan penuh dalam sesuatu seperti Unity, tidak menggunakan Unity karena waktu yang dibutuhkan untuk percaya diri mempelajari API dan persyaratan mesin tertentu mungkin lebih memusingkan dan lebih banyak waktu daripada yang dibutuhkan untuk membuat kode beberapa kelas yang diperlukan untuk melakukan dasar-dasarnya.
Jadi mesin tidak berguna bagi pemula, karena pemula tidak dapat membuat apa pun dengan mereka karena mereka tidak memiliki keterampilan teknik. Demikian juga, mesin tidak berguna bagi para veteran, karena mereka sudah memiliki keterampilan teknik untuk melakukannya tanpa mesin, dan mungkin juga memutar 'mesin' mereka sendiri lebih efisien daripada harus melalui sakit kepala untuk mempelajari kedua API mesin permainan, fungsi, dan kebiasaan kinerja. Belum lagi mimpi buruk bekerja dengan mesin yang kadang-kadang tidak bisa Anda sentuh karena tidak open source (atau kalaupun ada, membaca kode orang lain kadang-kadang bisa jadi mimpi buruk).
Heck, bahkan beberapa "kerangka kerja" "level rendah" tidak lebih dari beberapa kelas untuk membuat jendela, menampilkan tampilan, dan memutar audio. Ini adalah sesuatu yang dapat dilakukan sendiri oleh seorang profesional dari awal menggunakan perpustakaan lain seperti SDL / SFML atau implementasi OpenGL / DirectX / OpenAL mereka sendiri, dalam waktu yang sangat singkat untuk benar-benar menyelesaikan permainan video penuh.
TLDR;
Jika Anda ingin memprogram, belajarlah untuk menjadi seorang programmer .
Hindari menggunakan mesin , tapi jangan bodoh dan abaikan perpustakaan yang sangat berguna.
Jika Anda ingin menjadi Desainer Game , cobalah mesin WYSIWYG dan pompalah game-game itu!
Jika Anda ingin menjadi Programmer Game , hindari mesin seperti kruk.
Bagi saya , menggunakan mesin game tingkat tinggi melumpuhkan kemampuan saya untuk menjadi seorang programmer. Saat saya mulai menggunakan perpustakaan tingkat bawah sebagai gantinya atau tidak menggunakan perpustakaan sama sekali, saya mulai belajar banyak sehingga saya dengan cepat beralih dari total pemula ke seseorang yang sekarang dapat membuat video game tanpa referensi, tutorial, atau buku di samping saya. Hanya kompiler saya dan banyak teknik dan latihan.
Jumlah pembelajaran yang saya peroleh dari perpustakaan tingkat rendah dalam jumlah waktu SINGKAT jauh lebih besar daripada jumlah yang saya dapatkan dalam jumlah SANGAT PANJANG dengan ENGIN tingkat lebih tinggi. **