Bagaimana cara mengatur kecepatan aksi yang berbeda di game RogueLike?

14

Bagaimana cara mengatur kecepatan aksi yang berbeda di game RogueLike?

Yang saya maksud adalah bahwa game berbasis giliran mungkin memiliki aktor yang bertindak dengan "kecepatan" yang berbeda, tergantung pada aksi dan beberapa karakteristik lainnya. Aktor kemudian secara efektif melakukan lebih banyak aksi / putaran daripada yang lain jika mereka memiliki kecepatan yang lebih besar, atau tidak.

Bagaimana cara menentukan kapan seorang aktor harus dapat bertindak (mengubah penjadwalan?)?

Sepertinya ada berbagai cara untuk melakukannya? Bisakah Anda menjelaskan beberapa dengan algoritma?

Klaim
sumber
7
Saya merasa bahwa jika Anda menjelaskan secara terperinci fitur yang Anda inginkan, suatu algoritma akan menjadi jelas.
Tetrad
Seperti yang dikatakan Tetrad, ditambah apa yang Anda maksud dengan "kecepatan tindakan"? Roguelikes biasanya berbasis giliran jadi saya tidak bisa melihat bagaimana ini bisa berlaku untuk mereka.
Laurent Couvidou
2
Bahkan dalam permainan berbasis giliran, beberapa entitas akan bergerak lebih cepat atau lebih lambat daripada yang lain, memiliki lebih banyak atau lebih sedikit berbelok dibandingkan dengan yang lain. Saya memperbaiki pertanyaan.
Klaim
3
@ Patrick Hughes Nethack, salah satu roguelikes tertua dan paling populer, memiliki atribut kecepatan yang sangat penting. nethackwiki.com/wiki/Speed
Harry Stern
1
@ HarryStern Saya telah bermain buruk selama ini? Itu mungkin menjelaskan beberapa hal ... =)
Patrick Hughes

Jawaban:

12

Dalam game roguelike saya, Tyrant, saya menggunakan sistem poin aksi dan peringkat kecepatan.

Pada dasarnya:

  • Sebagian besar tindakan memiliki biaya AP 100
  • Sebagian besar makhluk memiliki kecepatan 100

Maka loop game akan berjalan sebagai berikut.

  • Pahlawan mengambil tindakan.
  • Waktu yang berlalu dihitung sebagai hero action AP cost * 100 / hero speed
  • Semua makhluk mendapatkan AP yang setara dengan creature speed * elapsed time / 100
  • Makhluk mengambil tindakan dan memiliki AP dikurangi sampai AP mereka <= 0
  • Ulang

Sistem ini bekerja dengan sangat baik secara keseluruhan, contoh fitur bagus:

  • Jika Anda memiliki pahlawan yang sangat cepat (mungkin karena bonus kecepatan ajaib), Anda bisa mendapatkan beberapa gerakan sebelum makhluk individu dapat bergerak (AP-nya akan negatif untuk beberapa belokan karena waktu yang berlalu akan kecil)
  • Anda dapat membuat beberapa tindakan lebih atau kurang mahal dengan memvariasikan biaya AP
  • Anda dapat menunda makhluk dengan mengurangi AP, atau memberi mereka dorongan satu kali dengan tiba-tiba dengan menambahkan AP
mikera
sumber
Mencoba membungkus kepalaku di sekitar ini. Jika Anda memiliki 1 pemain dan 4 pemain. Bukankah ini membuat tumpukan pemain terakhir berlalu waktu lebih dan lebih. Mengizinkannya untuk mengambil mungkin 4 tindakan dan kedua kalinya sekitar 8 berturut-turut ??
Dr.Denis McCracleJizz
4

Titik aksi. Beri masing-masing entitas "kecepatan" sehingga aktor yang lebih cepat mendapatkan lebih banyak poin setiap giliran. Buat setiap aksi ambil sejumlah poin tertentu untuk diselesaikan, dan kurangi angka itu dari poin pemain untuk giliran itu saat dia mengambil tindakan. Jika suatu aksi membutuhkan lebih banyak poin daripada yang tersisa, tandai sebagai "selesai sebagian", dan biarkan dia menyelesaikannya di giliran berikutnya.

Wackidev
sumber
2

Apakah maksud Anda memiliki tindakan bergiliran ganda (yaitu, tidur selama 50 putaran lurus)?

Apa yang akan saya lakukan adalah menyimpan objek, player.currentAction. currentAction mungkin berisi berapa banyak putaran tindakan yang diperlukan, apa resolusi tindakan itu, dan daftar negara yang membatalkan tindakan (dalam bahaya, diserang, terlalu panas, dll). Setiap belokan, sebelum kami memeriksa input pemain, kami akan memeriksa untuk melihat apakah pemain saat ini berada di tengah-tengah aksi, kemudian melakukan sesuatu seperti sesuatu seperti ...

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;
}
Beberapa pria
sumber
2

Anda dapat pergi dengan poin aksi tetapi tidak ada belokan per se tetapi kutu, yang jauh lebih kecil. Misalkan setiap aktor memiliki kecepatan akumulasi titik aksi (misalnya 2 AP per centang). Ini memulai tindakan yang bernilai, katakanlah, 10 AP. Permainan ini maju 5 kutu ke depan (karena ini adalah berapa banyak yang dibutuhkan aktor untuk membayar harga AP tindakan).

Ketika ada beberapa aktor. Gim ini maju terus demi menerus hingga seseorang telah membayar harga AP pada titik mana tindakan ini dijalankan.

Pendekatannya mirip dengan @ mikera, hanya saja tidak ada AP negatif.

zandy
sumber
Ini jauh lebih berantakan, karena Anda perlu menyimpan tindakan "yang dimaksudkan" dari makhluk itu. Beberapa tindakan bergantung pada negara yang dapat berubah sebelum massa telah mengumpulkan poin yang cukup.
Warwick Allison
Mungkin itu tidak sempurna, tapi itu mencerminkan kehidupan nyata, ketika Anda memutuskan untuk memukul, pertama-tama Anda mengayun dan kemudian memukul - jadi itu adalah keputusan-persiapan-tindakan, yang merupakan apa yang memungkinkan sistem ini. Ini juga memungkinkan untuk memilih aksi blok berdasarkan situasi aktual.
zzandy
Saya lebih suka pergi ke arah lain: massa mengambil tindakan dengan biaya n-tick dan kemudian tidak dapat mengambil tindakan baru sampai n-tick berlalu. Ini dapat diimplementasikan sebagai nilai tunggal yang dikurangi pada setiap centang.
kitsu.eb
-1

Waktu Resolusi Tinggi

Jika pukulan 400 putaran, dan tendangan 1000 putaran, saya bisa memukul Anda setidaknya dua kali sebelum Anda menendang saya, dan saya bisa memukul Anda 5 kali pada saat Anda menendang saya dua kali.

Dengan melakukan banyak hal secara bergantian, Anda memiliki banyak kendali atas berapa lama hal itu terjadi.

Willy Goat
sumber