Bir 2D platfrom oyunu için uygun seviye gösterimi / veri yapısı?


9

Mario'da Mario'nun bir kopyasını programlamak üzereyim. Seviyeleri için 2 temsil / veri yapıları üzerinde düşünüyorum ama hangisini seçmeliyim emin değilim:

  • Bir 2D tamsayı dizisi.
  • Seviyeyi parçalara bölmek için dörtlü.

Avantajları ve dezavantajları nelerdir?

Yanıtlar:


9

Dörtlü bir nokta, büyük veri parçalarını verimli bir şekilde kaldırmaktır, böylece sadece yakın çevredeki verilere zaman ayırırsınız. Bununla birlikte, bir 2D dizi zaten size konuma özgü rastgele erişim sağlar, bu nedenle dörtlü bir gereksiz hale getirebilecek bir 2D oyun için. Bir 3D oyunda, her şeyi bulmak için bir dizi kullanamazsınız ve bu, quadtrees'in (veya daha iyisi ancak octrees'in) kullanışlı olduğu yerdir.

Şimdi, burada seviyenin temelindeki veri gösterimi hakkında konuşuyorum. Grafik mimarinizin nasıl ayarlandığına bağlı olarak (örneğin, bir 3D motorunda düzlemlerle 2D grafikler yapmak), grafik içeriğini verimli bir şekilde kaldırmak için sahne grafiğinde dörtlü kullanmak isteyebilirsiniz.

Ve sonra seviyenizdeki çeşitli düşmanları ve diğer etkileşimli nesneleri unutmayın. Belki de seviyenin döşemelerini yönetmek için bir 2D dizisi kullanırsınız, ancak tüm etkileşimli öğeleri düzenlemek için quadtrees kullanırsınız (örneğin bir fizik motoru için).


Bunu şu şekilde düşünün: seviyenizde rastgele bir nokta seçin ve ardından o noktanın 1000 piksel yarıçapındaki her şeyi anlamanın ne kadar çalışacağını düşünün. Her şeyi bir 2D dizideki konuma göre organize ettiği için bunu hızlı bir şekilde yapabilirsiniz, o zaman bir dörtlüğe ihtiyacınız yoktur. Bununla birlikte, her şeyi gözden geçirmeniz ve her bir nesnenin mesafesini ayrı ayrı kontrol etmeniz gerekiyorsa, bir dörtlü kullanarak aramayı çok daha verimli hale getirebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.