seperti yang dikatakan oleh Josh Petrie :
" Sindrom tidak dibangun di sini ;"
Saya juga menulis mesin saya sendiri, dan saya kira alasannya akan berbeda untuk setiap pengembang di luar sana, tetapi pada kenyataannya - saya biasanya tidak suka bekerja di kode orang lain. Saya kompulsif dalam arti bahwa jika saya merasa saya bisa membangunnya sendiri, maka tidak ada gunanya puas dengan hal lain .
Saya menguji berbagai jenis mesin permainan, rendering API dan semacamnya, terutama Ploobs, UNITY WaveEngine, XNAFinalEngine, Love, Ogre, dll. Banyak lagi ... Saya ingin mulai menulis game - Saya mengunduh banyak hal untuk mencari kenyamanan yang baik dan titik masuk yang didokumentasikan dengan baik ...
Masalah saya, pada saat itu saya tidak tahu apa yang terjadi di bawah mesin. Saya ingin kontrol yang baik, dan saya ingin kerangka kerja yang saya tahu seperti punggung tangan saya. Saya datang dengan ide "HEY! Saya pikir satu-satunya cara saya akan belajar bagaimana hal itu bekerja dan memahaminya adalah dengan mencoba membangun mesin saya sendiri sepenuhnya dan sepenuhnya dari awal. Sebagian besar sejarah pemrograman saya adalah dengan solusi web dan pemrosesan - Ini adalah permainan bola yang sepenuhnya baru bagi saya.
Itulah yang akhirnya saya lakukan.
Jadi saya memilih untuk mengatur XNA karena saya sudah tahu C #, dan mulai berpikir tentang bagaimana atau di mana saya harus mulai. Saya butuh ide.
Saya memutuskan bahwa, apa pun yang terjadi, saya akan langsung masuk ke 3D .
Mendapatkan dasar-dasar itu keren - hal-hal batch sprite, tetapi ketika saya berkembang saya akhirnya menemukan hambatan dan hambatan baru - yang pertama saya nyata adalah batas batch . Tujuan saya adalah untuk membangun game yang dapat membuat setidaknya 10.000 entitas dalam tampilan frustum setiap saat.
Saya memulai perjalanan baru mengimplementasikan Shader Based Instancing (dan belajar HLSL ketika saya berada di sana), saya membuang objek Model and Effect yang dibuat XNA untuk menulis pengganti saya sendiri. Saya mengalami kesulitan memahami aliran VBO pada awalnya; Saya memecahkan banyak hal - saya online bertanya tentang hal-hal yang dipasang dan terus melakukannya sampai saya akhirnya mengerti apa yang dilakukan GPU. Itu terbayar; sekarang saya memiliki lebih dari dua puluh ribu entitas uji yang diperbesar di viewport saya setelah beberapa hari debugging VBO saya dengan PIX (dxsdk).
Sekarang saya memiliki "beberapa" ide tentang bagaimana cara kerja rendering pipeline, tetapi belum selesai - saya akhirnya membuat game-state, kamera, efek posting, dan objek entitas saya sendiri, menjauh dari XNA Content Pipeline dengan membangun sendiri loader (ketidaksukaan pribadi terhadap hal XNB), menciptakan kedalaman rumit yang diurutkan dan rantai campuran geometri dipisahkan-negara dan juga telah menanamkan sprite dan teks semua diproyeksikan ke dalam adegan permainan.
Saya terus menambahkan, memperbaiki, mengubah dan bereksperimen dengan ini terus menerus selama hampir satu tahun penuh. Pada akhirnya, hasilnya cukup bagus. Saya sekarang memiliki pemahaman tentang apa yang terjadi di bawah tenda, karena saya menciptakannya - bayi saya.
Sekarang mesin saya sebagian besar stabil dan hampir selesai. Itu tidak sempurna: skripnya honky dan GUI tidak bagus sama sekali. Tapi saya masih menyukainya. Ribuan baris kode, aset, dan media - bersembunyi di repositori git 2GB pribadi, dan semua sakit kepala yang harus saya lalui ketika mencoba melakukan jenis pengembangan yang belum pernah saya lakukan sebelumnya. Setiap rintangan yang saya atasi adalah pelajaran yang dipetik - dan melegakan.
Saya melakukan hampir semua yang saya inginkan di dalamnya.
Tetapi pada akhirnya - saya memutuskan sudah waktunya untuk menurunkannya.
Seperti aku puas diri menulis seperti mesin besar sendiri, dengan saran dari jaring, dan teman gamedev lain, saya memutuskan bahwa aku akan melakukannya lagi - dan melakukannya dengan lebih baik - karena sekarang kali ini aku kebanyakan tahu apa yang aku lakukan.
Proyek itu masih tersimpan di repo GIT saya.
Lulus kedua saya saat menulis mesin baru (kali ini di MonoGame), mengalami kemajuan dengan baik. Ketika sesuatu rusak, lebih mudah untuk memperbaikinya. Kurang berantakan. Saya berharap untuk memamerkan permainan saya di depan umum tahun ini, karena saya cenderung agak 'terlalu' melekat pada kode saya.
Pada akhirnya, menulis mesin saya sendiri adalah bagaimana saya belajar 'bagaimana' melakukannya, sambil dapat mengatakan bahwa saya tahu dan mengerti persis apa yang dilakukan setiap komponen, dan bagaimana mereka seharusnya bekerja. Saya sebenarnya BENCI membaca kode orang lain, terutama untuk proyek-proyek besar tanpa dokumen. Saya ingin semua yang saya gunakan dibangun oleh saya.
Ini hanya aku saja. Saya ragu saya akan pernah menggunakan mesin pre-made, mungkin karena saya pikir itu lebih menyenangkan bagi saya untuk menulis kerangka kerja saya sendiri daripada duduk dan berurusan dengan kode orang lain - kontrol penuh.