Comment gérer différentes vitesses d'actions dans les jeux RogueLike?
Ce que je veux dire, c'est que les jeux au tour par tour peuvent avoir des acteurs agissant à une "vitesse" différente, selon l'action et certaines autres caractéristiques. Les acteurs font alors effectivement plus d'actions / tours que les autres s'ils ont plus de vitesse ou non.
Comment déterminer quand un acteur doit pouvoir agir (planification des tournants?)?
Il semble qu'il y ait différentes façons de le faire? Pouvez-vous en expliquer certains avec des algorithmes?
roguelikes
Klaim
la source
la source
Réponses:
Dans mon jeu roguelike Tyrant, j'ai utilisé un système de points d'action et d'indices de vitesse.
Fondamentalement:
Ensuite, la boucle de jeu se déroulerait comme suit.
hero action AP cost * 100 / hero speed
creature speed * elapsed time / 100
Ce système fonctionnait très bien dans l'ensemble, par exemple de belles fonctionnalités:
la source
Points d'action. Donnez à chaque entité une "vitesse" pour que les acteurs les plus rapides obtiennent plus de points à chaque tour. Faites en sorte que chaque action prenne un nombre spécifique de points pour terminer, et soustrayez ce nombre des points du joueur pour ce tour quand il entreprend une action. Si une action prend plus de points que le joueur n'en a laissé, marquez-la comme "partiellement terminée" et laissez-le terminer le tour suivant.
la source
Voulez-vous dire que les actions doivent prendre plusieurs tours (c'est-à-dire dormir 50 tours de suite)?
Ce que je ferais, c'est garder un objet, player.currentAction. currentAction peut contenir le nombre de tours requis par l'action, la résolution de l'action et une liste d'états qui annulent l'action (en danger, attaqué, trop chaud, etc.). Chaque tour, avant de vérifier l'entrée du joueur, nous vérifions si le joueur était actuellement au milieu d'une action, puis faisons quelque chose comme quelque chose comme ...
la source
Vous pouvez aller avec des points d'action mais pas de tours en soi mais des ticks, qui sont beaucoup plus petits. Supposons que chaque acteur ait une vitesse d'accumulation de points d'action (par exemple 2 PA par tick). Il démarre une action qui vaut, disons, 10 PA. Le jeu avance de 5 ticks en avant (car c'est combien il faut à l'acteur pour payer le prix AP de l'action).
Quand il y a plusieurs acteurs. Le jeu avance tick par tick jusqu'à ce que quelqu'un ait payé le prix AP auquel cette action est exécutée.
L'approche est similaire à celle de @ mikera, mais il n'y a pas de points d'accès négatifs.
la source
Temps de haute résolution
Si le coup de poing prend 400 tours et le coup de pied prend 1000 tours, je peux vous frapper au moins deux fois avant de me donner un coup de pied, et je peux vous frapper 5 fois avant de me donner deux coups de pied.
En faisant tourner les choses à plusieurs reprises, vous avez beaucoup de contrôle sur la durée des choses.
la source