2B karo tabanlı oyunda, NPC'ler ve karolar birbirlerine nasıl atıfta bulunmalıdır?


9

Yukarıdan aşağıya 2D oyunlar için bir çini motoru yapıyorum. Temel olarak dünya bir çini ızgarasından oluşur.

Şimdi örneğin harita üzerinde hareket edebilen NPC'ler koymak istiyorum.

Sizce en iyisi hangisidir:

  1. her döşemenin döşemesindeki NPC'ye bir işaretçisi veya bir NULL işaretçisi vardır
  2. NPC'lerin bir listesine sahipler ve üzerinde bulundukları döşemenin koordinatlarına sahipler.
  3. başka bir şey?

bence

  1. çarpışma tespiti için daha hızlıdır, ancak daha fazla bellek alanı kullanır ve bir haritadaki tüm NPC'leri bulmak daha yavaştır.
  2. tam tersidir.

Yanıtlar:


11

Neden ikisi de olmasın? Belirli bir döşemede (bahsettiğiniz gibi çarpışma tespiti için) herhangi bir NPC olup olmadığını görmek isteyeceğiniz zamanlar ve dünyadaki tüm NPC'leri tekrarlamak istediğiniz diğer zamanlar ( AI yöntemlerini her karede çalıştırmak için).

Bellek kısıtlı bir platformda çalışmadığınız veya gerçekten çok büyük bir haritanız yoksa, her kutuda bir işaretçi o kadar çok bellek değildir .


5
+1 Bunu kabul etme eğilimindeyim, ancak @lezebulon, mümkün olan en erken zamanda her ikisini birlikte güncellemesi gereken herhangi bir mantığı kapsüllemenizi öneririm. Yani, bir oyuncu bir döşemeden ayrıldığında, her iki işaretçiyi, oyuncudan döşemeye ve döşemeden oyuncuya kaldırmak için bir atomik işlem (işlev çağrısı) olmalıdır. Aynı şey oyuncu bir taş üzerine geldiğinde, iki işaretçi atamasını birlikte yapın. Bu, referansların birbiriyle aynı fikirde olmadığı, yani birinin diğerinin kabul etmediği potansiyel kaoslardan kurtaracaktır.
Mühendis

0

Harita ile çarpışmaları nasıl ele alırsınız? Bir çarpışma katmanınız varsa, çok kolay bir yol, ilk önce hangi döşemede olduklarını gösteren koordinatları olan bir NPC listesi oluşturmak ve daha sonra bu listeyi tekrarlamak ve NPC altındaki çarpışma katmanı döşemesini bir çarpışma döşemesi olarak işaretlemektir. Bu şekilde, NPC'lere yönelik çarpışmalar haritanın geri kalanıyla aynı zamanda ele alınacaktır. Tabii ki, eğer NPC'ler hareket etmezse ...

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.