RogueLike oyunlarında farklı aksiyon hızları nasıl yönetilir?


14

RogueLike oyunlarında farklı aksiyon hızları nasıl yönetilir?

Demek istediğim, sıra tabanlı oyunların, aksiyona ve diğer bazı özelliklere bağlı olarak farklı "hızda" hareket eden aktörlere sahip olabileceği. Aktörler daha sonra, daha yüksek hıza sahip olsalar da olmasalar da diğerlerinden daha fazla eylem / dönüş yaparlar.

Bir aktörün ne zaman harekete geçmesi gerektiğine nasıl karar verilir (dönüş planlama?)?

Bunu yapmanın farklı yolları var gibi görünüyor mu? Bazılarını algoritmalarla açıklayabilir misiniz?


7
İstediğiniz özellikleri ayrıntılı olarak açıkladıysanız, bir algoritmanın belirgin hale geleceğini hissediyorum.
Tetrad

Tetrad'ın dediği gibi, "eylemlerin hızı" ile ne demek istiyorsun? Roguelikes genellikle sıra tabanlıdır, bu yüzden bunun onlara nasıl uygulanabileceğini göremiyorum.
Laurent Couvidou

2
Sıra tabanlı oyunlarda bile, bazı varlıklar diğerlerine göre daha fazla veya daha az dönüşe sahip diğerlerinden daha hızlı veya daha yavaş hareket edecektir. Soruyu çözdüm.
Klaim

3
@Patrick Hughes Nethack, en eski ve en popüler rogueliklerden biri, çok önemli bir hız özelliğine sahip. nethackwiki.com/wiki/Speed
Harry Stern

1
@HarryStern Bunca zamandır kötü oynuyordum? Bu birkaç şeyi açıklayabilir ... =)
Patrick Hughes

Yanıtlar:


12

Roguelike oyunum Tyrant'ta bir aksiyon puanları ve hız derecelendirmeleri sistemi kullandım.

Temelde:

  • Çoğu işlemin 100 AP maliyeti vardı
  • Çoğu canlının hızı 100

Sonra oyun döngüsü aşağıdaki gibi gider.

  • Kahraman harekete geçer.
  • Geçen süre şu şekilde hesaplanır: hero action AP cost * 100 / hero speed
  • Tüm canlılara eşit AP'ler verilir creature speed * elapsed time / 100
  • Yaratıklar eylem yaparlar ve AP'leri <= 0 olana kadar AP'leri çıkarırlar
  • Tekrar et

Bu sistem genel olarak çok güzel çalıştı, örnek güzel özellikler:

  • Çok hızlı bir kahramanınız varsa (belki de sihirli bir hız bonusu nedeniyle), bireysel bir yaratığın hareket etmesinden önce birkaç hamle yapabilirsiniz (geçen zamanlar küçük olacağından AP'ler birkaç tur negatif olacaktır)
  • AP maliyetini değiştirerek bazı işlemleri daha düşük veya daha pahalı hale getirebilirsiniz
  • AP'leri çıkararak yaratıkları geciktirebilir veya AP'ler ekleyerek onlara ani bir kerelik artış sağlayabilirsiniz.

Başımı bunun etrafına sarmaya çalışıyorum. 1 oyuncunuz ve 4 oyuncunuz varsa. Bu, son oyuncu yığınının geçme süresini daha da artırmaz. Belki üst üste 4 eylem ve ikinci kez 8 civarında hareket etmesine izin ??
Dr.Denis McCracleJizz

4

Eylem noktaları. Daha hızlı aktörlerin her turda daha fazla puan alması için her bir varlığa bir "hız" verin. Her bir eylemin tamamlanması için belirli sayıda puan almasını sağlayın ve bir eylem gerçekleştirdiğinde bu sayıyı oyuncunun puanından çıkarın. Bir eylem oyuncunun bıraktığından daha fazla puan alırsa, bunu "kısmen tamamlandı" olarak işaretleyin ve bir sonraki turda bitirmesine izin verin.


2

Eylemlerin birden fazla dönüş almasını mı kastediyorsunuz (yani, 50 tur boyunca uyumak)?

Yapacağım şey bir nesneyi tutmak, player.currentAction. currentAction, eylemin kaç tur gerektireceğini, eylemin çözümünün ne olduğunu ve eylemi iptal eden durumların bir listesini (tehlike altında, saldırı altında, çok sıcak vb.) içerebilir. Her turda, oyuncu girişini kontrol etmeden önce, oyuncunun şu anda bir eylemin ortasında olup olmadığını kontrol edip, ...

if(!player.currentAction.interrupted())
{
 if(player.currentAction.complete() == true)
   {
    player.currentAction.doAction(); //Some actions, like casting a spell, would have something happen here. Others, like sleeping, may or may not, depending on how you coded it.
    player.currentAction = null;
   }
else player.currentAction.decreaseTimer(); //Decrease our timer by one.
}
else 
{
 player.currentAction.interrupt(); //Let the player know he's been interrupted. Bungle the spell, cancel sleep, etc.
 player.currentAction = null;
}

2

Eylem noktaları ile gidebilirsiniz, ancak kendi başına dönüş yok ama çok daha küçük keneler. Her aktörün aksiyon puanı biriktirme hızına sahip olduğunu varsayalım (örneğin işaret başına 2 AP). 10 AP değerinde bir eylem başlatır. Oyun 5 adım ilerler (çünkü oyuncunun aksiyonun AP fiyatını ödemesi ne kadar sürer).

Birkaç aktör olduğunda. Birisi bu eylemin gerçekleştirildiği noktada AP fiyatı ödeyinceye kadar oyun kene ile kene ilerler.

Yaklaşım @ mikera'nınkine benzer, sadece negatif AP yoktur.


Yaratığın "amaçlanan" eylemini saklamanız gerektiğinden bu çok daha karışıktır. Bazı eylemler, mafya yeterince puan toplamadan önce değişebilecek duruma bağlıdır.
Warwick Allison

Belki mükemmel değil, ama gerçek hayatı yansıtır, vurmaya karar verdiğinizde, önce sallanır ve sonra vurursunuz - bu yüzden bu sistemin izin verdiği karar-hazırlık eylemidir. Ayrıca bu, fiili duruma göre blok eyleminin seçilmesine izin verir.
zzandy

Diğer yöne gitmeyi tercih ediyorum: mafya n-keneler maliyeti olan bir eylem seçer ve n-keneler geçene kadar yeni bir eylem seçemez. Her bir kenede azaltılan tek bir değer olarak uygulanabilir.
kitsu.eb

-1

Yüksek Çözünürlük Süresi

Yumruk 400 tur alırsa ve vuruş 1000 tur alırsa , beni tekmelemeden önce en az iki kez yumruk atabilirim ve beni iki kez vurduğunuzda 5 kez yumruklayabilirim.

İşlerin çok dönüş yapmasını sağlayarak, işlerin ne kadar sürdüğü üzerinde çok fazla kontrole sahipsiniz.

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.