dyanikoglu' Alıntı:
Veri yapılarının oyun geliştirmede kullanım alanlarını kısaca açıklayabilecek var mı acaba? Misal şu tarz kullanımlar ne kadar mantıklı olur bir oyunda;
- Bir şarjör için Stack ADT
- Karışık bir skill ağacı için Graph ADT ( veya daha sade bir ağaçsa Tree ADT)
- Main/Side Quest Listesi için PriorityQueue ADT
Bu tarz şeyler mümkün müdür oyun programlarken? Yoksa çok yanlış bir bakış açım mı var konuya karşı
Hayır, yanlış bir bakış açın yok, en azından genel anlamda.
Gerçekten ihtiyaç varsa bu veri yapılarının kullanımı oldukça yaygın. Ancak yapı, gerekmedikçe, ciddi performans problemlerini çözmedikçe; kullanılmaz, gerek yoktur. "Stack, Queue, Linked List..." gibi basit veri yapılarını bir kenara bırakalım. Bunlar, belirli problemlerin çözümünde sıklıkla kullanılabilir, bu algoritma yazma biçimiyle alakalı daha çok. Çünkü çok fazla şey değiştirmezler.
Karışık bir yetenek ağacı, en azından yeteneğin kökenlerini tespit etmek için sıklıkla kullanılan bir yöntem. Aynı şekilde sıklıkla "Crafting" için de kullanılabilir.
Asıl veri yapıları tasarımı gerçekten performans ile ilgili sorunlar doğuran durumlarda ortaya çıkıyor. Bir de bunların çoğu oyun motorunda hallediliyor. Oyun motoru kullanmadan oyun yapmak isteseydik sıklıkla kullanırdık. Örneğin Landscape, LOD + QuadTree kullanır. Realtime GI, OcTree kullanır gibi.
Şimdi hızlı bir tahminle temel amacın iterasyon sayısı düşürmek olduğunu söyleyebiliriz. Ancak şarjör örneğinde, Inventory ve eşya yönetimi karakter ölçeğinde ciddi bir mesele değil. Basitçe array kullanımı yeterli olacaktır, çoğu problemde. Ne kadar iterasyon yapabilirsin ki zaten.