Köşegen hareketin haritanın daha fazlasını keşfetmesini engelleyebilir miyim?


57

8 yönden herhangi birindeki hareketin tam olarak aynı miktarda dönüş yaptığı bir döşeme ızgarasında (satranç tahtası tarzı kuralları), çapraz hareketin dikgen hareketten daha yeni çiniler göstermesini engelleyebilir miyim?

Örneğin: Aşağıdaki resimde kırmızı kutu sizsiniz. Yeşil hücreler şu anda size görülebilir (kare görüş alanı). Bir döşemenin mesafesini sekiz yönden birinde taşıyabilirsiniz.

Kuzeye doğru hareket ederseniz, 13 yeni taşı keşfedeceksiniz (mavi renkle gösterilmiştir). Bunun yerine güneye ilerlerseniz , sadece 7 yeni fayans keşfedeceksiniz (mor ile gösterilmiştir).

pozisyona bağlı görünürlükleri olan ızgara

Keşif için her yöne seyahat etmeyi eşit derecede uygun hale nasıl getirebilirim?


27
Bu, böyle bir oyunun tasarımında temel bir kusurdur. Ya diyagonal harekete izin vermemelisiniz ya da bu sorunu olmayan bir altıgen ızgara gibi bir şeye geçmelisiniz.
Tetrad

1
@Tetrad Bir kusur olduğu konusunda yanılıyorsun, ama bunun gibi oyunlarda ne kadar yaygın olduğunun farkında değilsin .
Bay Smith,

8
Ortogonal ve diyagonal hareketin eşit derecede hızlı olduğu herhangi bir oyunda, diyagonal hareketin dikgonal hareketten daha iyidir ve bunun tersi olur. Sadece çözülemez - bir deliği tıkarsanız başka bir açılır.
Patashu

3
Tam bir cevap değil, oyunda köşegen uzunluğuyla orantılı olarak dikgen bir hareketin dikgen bir hareketten daha uzun sürmesi mümkün mü? İkinci olarak, hareketin elmas modelini kullandığı ve görüş mesafesinin kare olanı kullandığı karma bir çözüme sahip olabilirsiniz.
Vality

2
Cevap vermeyen bir başka cevap: Ortogonal hareketler şimdi olduğu gibi davranır, ancak çapraz hareketler ışık kaynağının "bulanık" olmasına neden olur - sadece menzile giren 13 karenin hepsini göstermez (ya da öylesine) rastgele belirlenir.
Snowbody

Yanıtlar:


67

Zindanlar ve Dragons 3.5 (kalem ve kağıt RPG), hem hareket hem de ızgara tabanlı yarıçap hesaplamaları için kullanılan bir çözüme sahiptir: çapraz hareket, ortogonal maliyetin 1.5 katıdır. Birim karenin köşegeni yaklaşık 1.414 olduğundan, 1.5 oldukça yakındır.

D&D 3.5 yalnızca tamsayılı hareketi desteklediğinden, bunun gerçekte hesaplanma şekli ortogonal hareketin "bir kare" maliyetidir. İlk köşegen hareketiniz aynı zamanda sadece "bir kare", ikinci köşegen de "iki kare". Her çapraz hareket için bir ve iki kareyi değiştirirsiniz. Bu hareket kuralını oyun içinde uygulamak, çapraz hareketle ilgili çeşitli problemleri çözecektir.

Bu şemanın gösterdiği gibi, bu hareket kuralı çevrelerin makul bir şekilde yaklaştırılmasını sağlar ve aynı zamanda gerçek mesafeye kıyasla (başlangıcın 15 biriminde iken) 1'den fazla değil.

görüntü tanımını buraya girin

Görme / keşif yarıçapınız da bu şekilde hesaplanırsa, köşegen hareket ve köşegen keşifler dikgenler kadar yakın veya uzak olacaktır.


Aynen önermek istediğim şeydi. Her ne kadar karakter bir turda sadece bir boşluk bırakabilirse (bu sorunun şemadaki gibi görünüyor?), Bu stratejinin hareketi kısıtlama açısından bir önemi yoktur. Bu, oynatıcı için kafa karıştırıcı / sinir bozucu olsa da, dönüşler arasında tek / çift diyagonallarsa "hatırlayabilirsin". Ne olursa olsun, bu görünürlük sorunu için iyi çalışır.
Alexis Beingessner

5
@AlexisBeingessner, doğru. Ve sorgulayıcı, satranç-kral benzeri bir hareket istediğini belirtti, ancak bunun bir bilgisayar oyunu geliştirme sitesi olduğu için iyi bir oyun oynama çözümüne işaret edeceğimi düşündüm. Bu daha çok bir bilmece veya saf matematik sorusuysa, başka bir sitede olmasını beklerdim. Bu haydut benzeri bir oyun içinse, bazıları zaten değişken hareket hızlarını desteklemektedir.
Dane

Roguelike oyunlarının çoğu sıra tabanlı görünmektedir, ancak gerçekte bir zaman bileşenine sahiptir, bu nedenle çapraz olarak hareket ederseniz, diğer nesnelerin başka bir hamle yapmadan önce tepki vermesi için daha fazla zaman olacaktır.
Kos,

67

Görüş alanının şeklini değiştirmeniz gerekir.

Böylece herhangi bir yöne doğru hareket ettiğinizde, aynı sayıda yeni kareler görünür hale gelir.

İşte bir olasılık:

ızgara örneği


5
İlginç; Elmas görüş alanı olarak hiç düşünmedim. Ancak, bu görüşle ilgili bir sorun da var; Şimdi çaprazdan seyahat etmek çok kötü bir fikir çünkü çaprazdan seyahat ederken bir düşmanı tespit ederseniz, dikgenmiş olduğunuzdan çok daha yakın olacaktır.
Bay Smith,

43
@ mr.smith, evet, bu yeni bir sorun, ama eskisini çözdüm ...
ChargingPun

Gerçekten yaptın; Görünüşe göre soruya yeterince spesifik değildim.
Bay Smith,

8
Dairesel bir şekil burada yardımcı olur mu?
amitp

3
@amitp Bu , dairesel bir şekildir - mesafe işlevinizin Manhattan mesafesi olması koşuluyla.
Daniel Wagner,

27

Köşegen ve ortogonal hareketin yaklaşık olarak aynı alanı ortaya çıkarması için iki şeye ihtiyacınız vardır (bunların her biri, başka bir cevap veya yorumda zaten önerilmiştir):

  1. Yaklaşık dairesel görünüm aralığı :

    Sözde dairesel görünüm aralığının görüntüsü

    Kendi başına, bu her iki hareket türü için tam olarak aynı açıklanmış alanı vermeyecektir. Örneğin, yukarıdaki resimde ortogonal hareket 9 kare gösterirken, çapraz hareket 13 gösterir. Yine de, örneğinizdeki kare görünüm alanı için 13/7 oranından daha iyidir.

    Aslında, görünüm yarıçapı büyüdükçe, köşegen / ortogonal adımdaki açığa çıkan alanların oranı dairesel bir alan için √2 ≈ 1.414, kare görünüm alanı için aynı oran 2'ye çıkmaktadır.

  2. Yavaş diyagonal hareket :

    Gerçek hayatta, kare bir alanda çapraz olarak yürümek, kenarlardan birinin üzerinde yürümekten daha uzun sürer. Aslında, yaklaşık 1.414 kat daha fazla √2 ≈ sürer. Oyununuzdaki hareketin gerçekçi hissetmesini istiyorsanız, bunun oyununuzda da gerçekleşmesini sağlamalısınız.

    Uygulamada, 3/2 = 1.5, √2'nin oldukça iyi bir yaklaşımıdır. Böylece, her ortogonal basamağın iki zaman birimi almasına ve her diyagonal basamağın üç adım atmasına neden olabilirsiniz. Yukarıdaki örnek görünüm alanıyla, bu, 9/2 = 4.5, dikey hareket için zaman birimi başına kareler ortaya çıkardı ve 13/3 = 4.33, çapraz hareket için zaman birimi başına kareler verdi. Çok yakın, ha?

    Alternatif olarak, ortogonal hareket için "1 adım = 1 zaman birimi" ne bağlı kalmak istiyorsanız, önerilen D&D sistemi Dane gibi bir şey kullanabilir ve her ikinci çapraz basamağın ekstra bir dönüş yapmasını sağlayabilirsiniz. (Bunu yaparsanız, her birime kaç adım attıklarına dair açık bir sayaç vermeniz gerekir, aksi takdirde E, NE, E, NE, vb. . amaçlanan daha hızlı keşfetmek için bir oyuncu izin hareket dizisi.)


Bu tür istismarları önlemenin kolay bir yolu, diyagonal bir hareketin, iki keneyi alan aynı yöne doğru bir hareketten önce hariç olmak üzere iki onay gerektirmesidir.
supercat

1
@supercat: Doğru, ancak bu E, NE, E, NE, ... sırasını keşfedilmesi için düz veya dikey / diyagonal hareketten belirgin bir şekilde daha az verimli bırakır , bu da istenmeyebilir.
Ilmari Karonen

Bu diziyi daha az verimli bırakırdı, peki ne olmuş? Tüm keşif yöntemleri aynı derecede verimli olmamalıdır. Aslında, oryantasyon değişiklikleri için zaman cezası verilmesi, öncesi veya sonrası hareketin çift yüklü bir köşegen olduğu durumlar için bir istisna olması kötü olmayabilir.
supercat,

2
Bir süre önce benzer bir şey yaptım ve ortogonal hareketin kare başına iki "keneye" ve köşegen hareketin üçe mal olduğunu çözerek çözdüm.
Mason Wheeler

11

Bir ızgara kullandığınız ve kullanıcının hangi yöne gittiğini bildiğinizden, önceki cevabı uyarlamanız ve yöne bağlı olarak farklı bir görüş alanı kullanmanız konusunda sizi kısıtlayan hiçbir şey yoktur.

Örneğin, kardinal yönlerde seyahat ederken köşeleri içerecek şekilde alanı genişletebilir ve köşegen durumlarda her iki ucundan iki kareyi daraltabilirsiniz, böylece her biri 9 kareyi açar.

Aydınlatmanızın nasıl çalıştığına bağlı olarak başka bir alternatif, bazı kareleri kısmen göstermek için antialiasing ile daha iyi bir daire yaklaşımı kullanmak olacaktır.


Bu ilginç bir uzlaşmadır; Çapraz olarak seyahat ederseniz, normalde görülebilen hücrelerin tümü görünmez. Bir dönüş bekleyebilir (bu hücrelerin araştırılması için) veya hareket etmeye devam edebilirsiniz.
Bay Smith,

8
Hangi cevap "önceki cevap"?
Mooing Duck

7

Sabit bir görüntüleme aralığına sahip olmak yerine, oyuncunun görünürlük alanı oyuncunun hangi yöne karşı karşıya kaldığına ve belki de son birkaç turda oyuncunun karşılaştığı yöne (kuzeye doğru hareket eden bir oyuncu olabilir) hemen güneye bir adım atın, ancak bu yönde maksimum görüş mesafesi elde etmek için birkaç tur sürebilir). Dar bir koridordan kuzeye doğru geniş bir odaya giren ve kuzeye gitmeye devam eden bir oyuncunun doğusu ve batısı sınırlı görünebilir ve muhtemelen olması gerekirdi. Oyuncu hareket etmeyi bıraktığında, sistem otomatik olarak oyuncunun mevcut görüş yarıçapı içindeki görünmeyen alanları “keşfetmesine” neden olabilir, ancak oyuncu aktif olarak hareket ederken görüş alanı daha sınırlı olmalıdır.


3

Daha karmaşık bir görüş alanına alternatif olarak (yukarıda tartışıldığı gibi, ızgara tabanlı bir düzenin kısıtlamaları nedeniyle kendi sorunlarını da ekler), sağduyulu bir temele dayanmayan bir oyunda hareketin etkisini taklit etmeye çalışabilirsiniz. Kafes. Serbest hareketin mümkün olduğu durumlarda, bir birimin köşegen hareketi tam olarak böyle olacaktır, bir kare ızgara ile görülen ~ 1.41 hareket birimi.

Azalan grid'inizi kaybetmeden tek bir ünite hareketini zorlayamazken (oyun tasarımınızı önemli ölçüde değiştirir) belki daha sonra alınan ekstra hareketi ve sonra bırakma hareketlerini takip edebilirsiniz: 1.00 o birim bir hamle yapmamış. Veya bunun tersi: normalin köşegen olduğunu düşünün, her yatay veya dikey hareket için 0.41 ekleyin ve 1'den büyük olan bir kez ekstra hareket kredisi verin (veya çapraz hareket için 1.41).

Bunu oyuncularınıza hem pürüzsüz hem de adil görünecek şekilde sunma konusunda dikkatli olmanız gerekir. Çok oyunculu bir senaryoda, bu tür değişiklikler oyuncuların stratejik olarak yararlanabileceği bir şey olabilir - bu bir sorun olabilir veya bunu oyun teknisyeniyle karıştırmanın doğal bir yolu olabilir (belki oyuncuların küçük bir depoda bulundurmasına izin veriniz). ileriki bir zamanda hızlı bir şekilde tepki vermek için kullanabilecekleri ve kullanılmayan "taşınmaz kredisi" miktarı, bu havuza 0.41 sn.

Oyuncu kontrol birimleri her turda bir birimden daha fazla hareket ederse, bu en iyi şekilde işe yarar. Örneğin, üç hareket noktası, üç horzontal hareket veya daha sonra havuzda 0.16 kalan iki diyagonal hareket olarak kullanılabilir. Bu, 1,00'e ulaştığında, oyuncu "serbest" hor / very hareketine ve 1.41'de serbest diyagonal harekete sahip olur. Oyuncunun bu enerjiyi uzun süre saklamasını ya da biriktirmesini sağlamak için kullanılmaya zorlanması veya bu noktada kaybolması için ekstra değeri 1.5'te kaplayabilirsiniz.

Açıkçası bu tamamen istenmeyen olabilecek oyun kurallarınız için bir komplikasyondur ve bilgisayarlı olmayan bir oyun için pratik değildir, ancak oyununuzun mevcut kuralları dahilinde çalışmasını sağlayabiliyorsanız, hareket yönleri arasındaki keşif farkını ihtiyaç duymadan sınırlar. ızgara biçimini terk etmek için.


2

Oyuncunun yukarı, aşağı, sola veya sağa ve yalnızca bir tane çapraz olarak hareket etmesi durumunda iki boşluk bırakmasını sağlayabilirsiniz. Tamamen bile dışlamaz, ama çok daha yakın olurdu.


Bu iyi bir fikir ama sadece çapraz hareketin (yani sadece iki dikey hareket olduğu için) yasaklanmasına eşdeğer olduğuna inanıyorum
Vality
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.