Bunu çok fazla oyun kaynağına bakmadığımı ya da oyun tarzına çok fazla bakmadığımı söyleyerek başlatacağım.
Ancak, web uygulamalarında 'kurumsal' kodlama uygulamalarını kullanmaya çalışmaktan, oyun kaynak koduna bakmak ciddi bir şekilde beni incitiyor: "Bu iş mantığı ile iş mantığı arasında ne yapıyor? Bu yeniden düzenleme ihtiyacı ... "
Bu, beni bir oyun projesi başlatmak üzere olduğum için endişelendiriyor ve dev işleminin mvc / tdd'yi denemeye çalışacağından emin değilim. Bunu kullanan pek çok oyun örneği görmedim, ya da toplumda daha iyi mimari uygulamalar için daha fazla itici.
Aşağıdakiler prototip oyunlarıyla ilgili harika bir makalenin özetidir , ancak bana göre birçok oyun geliştiricinin üretim oyun kodu yazarken kullandıkları tutum tam olarak görünüyordu:
Hata # 4: Bir sistem kurmak, oyun değil
... doğrudan ileriye doğru hareket etmeyen bir şey üzerinde çalışırken kendinizi bulursanız, orada durun. Programcılar olarak, kodumuzu genelleştirmeye ve onu şık hale getirme ve her durumu ele alma yeteneğine sahibiz. Kaşıntıyı çizilmemesi zor buluyoruz ama nasıl yapılacağını öğrenmemiz gerekiyor. Kodla ilgili olmadığını, sonunda göndereceğiniz oyunla ilgili olduğunu fark etmek yıllar aldı.
Zarif bir oyun bileşeni sistemi yazmayın, editörü tamamen atlayın ve durumu kodda sabitleyin, veriye dayalı, kendiliğinden ayrıştırma, XML çılgınlığı ve sadece lanet olası şeyi kodlayın.
... Ekranda olabildiğince çabuk şeyler olsun.
Ve bir daha asla, “biraz fazla zaman alır ve bunu doğru şekilde yaparsak, oyunda yeniden kullanabiliriz” argümanını kullanmayın. HİÇ.
Oyunlar (çoğunlukla) görsel olarak yönlendirilmiş olduğu için kodun görünümde ağır şekilde ağırlıklandırılması mantıklıdır, bu nedenle eşyaların modellere / denetleyicilere taşınmasının getirdiği faydalar oldukça azdır, bu yüzden neden rahatsız edici?
MVC'nin genel bir performans artışı getirdiği iddiasını duydum, ancak bu bana erken bir optimizasyon gibi görünüyor ve MVC genel giderleriyle ilgili endişelenmeden önce ele almanız gereken daha önemli performans sorunları olduğunu düşünüyorum (örn. Boru hattı oluşturma, AI algoritmaları, veri yapısı geçiş, vb.)
TDD için de aynı şey. Sık sık test senaryoları kullanan oyunlar görmüyorum, ama belki de bunun nedeni yukarıdaki tasarım sorunlarından (karma görüş / iş) ve görsel bileşenleri veya olasılıksal sonuçlara dayanan bileşenleri test etmenin zorluğundan kaynaklanıyor (örneğin fizik simülasyonları içinde çalışmak). ).
Belki de sadece yanlış kaynak koduna bakıyorum, ama neden oyun tasarımında kullanılan bu 'işletme' uygulamalarını daha fazla göremiyoruz? Oyunlar gereklilikleri bakımından gerçekten çok mu farklı mı yoksa bir insan / kültür sorunu mu var (yani, oyun geliştiricileri farklı bir arka plandan geliyor ve bu nedenle farklı kodlama alışkanlıklarına sahipler)?