Josh Petrie tarafından söylendiği gibi :
" Burada inşa edilmemiş sendromu ;"
Ayrıca kendi motorumu yazıyorum ve neden her geliştirici için farklı olacağını varsayalım, ama aslında - genellikle diğer insanların kodlarında çalışmaktan hoşlanmıyorum. Ben kendim inşa edebileceğimi hissedersem, o zaman başka hiçbir şeye karar vermenin bir anlamı olmadığı konusunda mecburum .
Çeşitli oyun motorları test ettim, API ve bunun gibi Ploobs, UNITY WaveEngine, XNAFinalEngine, Love, Ogre, vb. Gibi işlemler yaptım. ve iyi belgelenmiş bir giriş noktası ...
Ancak benim sorunum, o sırada motorun altında ne olduğu hakkında hiçbir fikrim yoktu. İyi kontrol istedim ve elimin arkası gibi bildiğim bir çerçeve istedim. "HEY! Sanırım bu şeyin nasıl çalıştığını ve anlayacağımı öğrenmenin tek yolu , kendi motorumu tamamen ve tamamen sıfırdan oluşturmayı denemek olduğunu düşünüyorum . Programlama geçmişimin çoğu web ve işleme çözümleriyle yapıldı. - Bu benim için yepyeni bir top oyunuydu.
Yaptığım şey buydu.
Bu yüzden, CNA'yı zaten bildiğimden beri nasıl ve nerede başlayacağımı düşünmeye başladım. Bir fikre ihtiyacım vardı.
Buna karar verdim, ne olursa olsun, doğrudan 3D'ye geçeceğim .
Temelleri bulmak harika bir şeydi - sprite parti işleri, ama ilerlediğimde yeni engeller ve engeller keşfettim - ilk gerçek olanı parti limiti . Amacım, istediği zaman görüş açısında en az 10000 varlık yaratabilen bir oyun inşa etmekti.
Shader Based Instancing uygulamasının yeni bir yolculuğuna çıktım (ve oradayken HLSL'yi öğrendim), yerine XNA'ları Model ve Effect nesnelerinde yerleşik olarak değiştirdim. VBO akışlarını ilk başta anlamakta sorun yaşadım; Bir şeyleri kırdım - çevrimiçi olarak instancing işleri hakkında sorular sormaya gittim ve sonunda GPU'nun ne yaptığını anlayana kadar tuttum. Bu ödendi; Şimdi VBO'umu PIX (dxsdk) ile hata ayıklamadan birkaç gün sonra bakış açımda yakınlaştırma yapan yirmi binden fazla test kuruluşu vardı.
Artık boru hatları oluşturma işleminin nasıl çalıştığı hakkında "bazı" fikrim vardı, ancak henüz bitmedi - kendi oyunumu, kameram, post efektlerim ve varlık nesnelerimi oluşturdum; yükleyiciler (XNB olayına karşı kişisel olmayanlar), karmaşık bir derinlik sıralı ve harman halli ayrılmış geometri zinciri oluşturdular ve aynı zamanda hepsi oyun sahnesine yansıtılan hareketli sprite ve yazıya sahipti.
Neredeyse bütün bir yıl boyunca sürekli olarak buna eklemeye, tamir etmeye, değiştirmeye ve denemeye devam ettim. Sonunda, oldukça iyi çıktı. Şimdi kaputun altında neler olup bittiğini anladım, çünkü yarattım - bebeğim.
Şimdi motorum çoğunlukla kararlıydı ve neredeyse bitmek üzere. Mükemmel değil: komut dosyası honky ve GUI hiç de iyi değildi. Ama ben hala onu sevdim. Binlerce kod, varlık ve medya satırı, 2GB özel bir depoda toplandı ve daha önce hiç yapmadığım bir tür gelişme yapmaya çalışırken başımdan geçen tüm sıkıntıları yaşadım. Üstesinden geldiğim her engel, öğrenilen bir ders ve rahatlama oldu.
Neredeyse istediğim her şeyi çıkardım.
Ama sonunda - onu bırakma zamanı olduğuna karar verdim.
Kendi kendime bu kadar büyük bir motor yazarken, ağdan ve diğer gamedev arkadaşlarının tavsiyesiyle kendimi tatmin ettiğim sürece, her şeyi yeniden yapmaya karar verdim - ve daha iyisini yapacağım - çünkü şimdi bu sefer çoğunlukla biliyorum. ben ne yapıyorum.
Bu proje hala GIT depomda duruyor.
Yeni bir motor yazmaktaki ikinci geçişim (bu sefer MonoGame'de) iyi ilerliyor. Bir şey kırıldığında, düzeltilmesi daha kolaydır. Daha az karışıklık Umarım bu yılki oyunumu herkese açık bir şekilde göstereceğim, çünkü koduma eklenmiş bir 'fazla' olma eğilimindeyim.
Sonunda kendi motorum yazıyor, nasıl yapılacağını 'nasıl' öğrendiğimi, her bileşenin tam olarak ne yaptığını ve nasıl çalışması gerektiğini bildiğimi ve anladığımı söyleyebiliyordum. Aslında başkalarının kodunu okumaktan nefret ediyorum, özellikle büyük belgesiz projeler için. Kullandığım her şeyin benim tarafımdan yapılmasını istiyorum.
Bu sadece benim. Önceden yapılmış bir motor kullanacağımdan şüpheliyim, muhtemelen kendi çerçevelerimi yazmak benim için başkasının kodu ile tam kontrol etmekle uğraşmaktan daha eğlenceli.