Saya memulai pemrograman C #, untuk kemudian mengembangkan game dengan XNA. Saya membaca buku pengembangan game yang bagus untuk C #. Karena saya sudah tahu bahasa lain, saya bisa dengan cepat mempelajari fitur C # dan kode sintaks. Saya kemudian melangkah ke XNA. Karena buku yang saya baca agak tua, saya mengesampingkannya, dan mulai melihat tutorial pengembangan game tentang XNA melalui Internet. Saya dapat mencapai dan memahami sebagian besar dari mereka, menggunakan grafik 2D. Saya membuat sprite animasi, membuat karakter saya bergerak ke segala arah, menggulir latar belakang saya bersama dengan gerakan karakter saya, dan sebagainya. Semuanya dilakukan dengan XNA "mentah".
Saya menemukan beberapa hal yang sulit untuk dipahami, dan saya menemukan bahwa beberapa hal sudah dimasukkan dalam kerangka kerja. Saya menemukan mesin permainan lain, yang saya dapat dengan jelas memahami setidaknya kode garis sederhana, seperti " FlatRedBall " , " Aksioma " dan " Mesin Mulai Cepat " . Saya sudah tahu yang terkenal, seperti "OGRE" , "Unreal" dan "Unity" . Pada saat yang sama, saya tergoda untuk membuang semuanya, dan mulai belajar beberapa pemrograman mesin game yang terkenal. Saya ingin tetap dengan XNA, karena saya butuh waktu untuk belajar; waktu saya tidak ingin membuangnya.
Kali ini, saya serahkan kepada yang berpengalaman. Bisakah saya melewati beberapa mesin game, dan menggunakan apa yang ditawarkan, bahkan jika saya mulai dengan pengembangan game? Beberapa orang dapat berpikir bahwa itu baik untuk membiasakan diri dengan rutinitas membosankan dari kerangka telanjang. Jika demikian, apa yang akan direkomendasikan untuk memulai? Saya mendengar bahwa itu bervariasi dari pasar ke pasar. Kita mungkin dapat mempertimbangkan bahwa saya menginginkan RPG-spesifik.
Jawaban:
Itu tergantung pada apa yang ingin Anda pelajari. Jika Anda ingin "cukup membuat game" Anda bisa menjadi ahli dengan mesin. Saya pribadi tidak merekomendasikan ini.
Jika Anda ingin benar-benar memahami cara kerja komputer grafik, Anda harus lebih dalam dan mempelajari semua hal. Dari menyegarkan aljabar linier Anda (setidaknya matriks, vektor, dan spasi linear) hingga memahami cara kerja saluran pipa grafis. XNA adalah kerangka kerja terbaik untuk memulai. Game pertama saya ada di dalamnya (maksud saya game sebenarnya, aplikasi 3D pertama adalah tank tempur di openGL). Jika Anda ingin memulai pemrograman 3D, tidak memiliki rencana ambisius seperti itu, Anda tidak dapat melakukan RPG sekarang. Anda harus mencoba membuat permainan di mana Anda terbang di ruang yang penuh dengan kubus dan mencoba menembak yang merah, untuk mempelajari dasar-dasarnya. Mungkin akan membawa Anda lebih banyak waktu daripada yang Anda pikirkan :). Tapi itu akan mengajarimu banyak.
Dan lakukan! Pemrograman grafis 3D adalah hal terbaik yang dapat Anda lakukan untuk hidup. Sulit, menyenangkan, dan kreatif dalam satu paket.
sumber
Tidak ada yang salah dengan menggunakan mesin yang ada, semuanya bermuara pada tujuan Anda.
Jika Anda paling tertarik untuk hanya membangun beberapa game atau desain game, semakin cepat Anda mendapatkan kode gameplay yang lebih baik. Sesuatu seperti Unity sangat bagus di sini, karena Anda dapat menggunakan pengetahuan C # dan mulai melampirkan skrip ke objek dan memiliki sesuatu yang segera berjalan.
Jika Anda ingin menjadi programmer game, maka Anda perlu memahami hal-hal di level yang lebih rendah. Kerangka kerja seperti XNA adalah tempat awal yang baik. Anda bisa mengandalkan kerangka kerja untuk menyelesaikan dan menjalankan dan kemudian mulai mengganti bagian-bagian kerangka kerja dengan kode Anda sendiri saat Anda belajar cara membangun setiap komponen permainan Anda.
sumber
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. **
sumber