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?
roguelikes
Klaim
sumber
sumber
Jawaban:
Dalam game roguelike saya, Tyrant, saya menggunakan sistem poin aksi dan peringkat kecepatan.
Pada dasarnya:
Maka loop game akan berjalan sebagai berikut.
hero action AP cost * 100 / hero speed
creature speed * elapsed time / 100
Sistem ini bekerja dengan sangat baik secara keseluruhan, contoh fitur bagus:
sumber
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.
sumber
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 ...
sumber
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.
sumber
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.
sumber