¿Cómo gestionar diferentes velocidades de acción en los juegos RogueLike?
Lo que quiero decir es que los juegos por turnos pueden tener actores que actúan a una "velocidad" diferente, dependiendo de la acción y algunas otras características. Los actores realizan efectivamente más acciones / turnos que otros si tienen mayor velocidad o no.
¿Cómo determinar cuándo un actor debe ser capaz de actuar (programación de turnos)?
Parece que hay diferentes formas de hacerlo? ¿Puedes explicar algunos con algoritmos?
roguelikes
Klaim
fuente
fuente
Respuestas:
En mi juego roguelike Tyrant utilicé un sistema de puntos de acción y clasificaciones de velocidad.
Básicamente:
Entonces el ciclo del juego sería como sigue.
hero action AP cost * 100 / hero speed
creature speed * elapsed time / 100
Este sistema funcionó muy bien en general, por ejemplo, buenas características:
fuente
Puntos de acción. Dele a cada entidad una "velocidad" para que los actores más rápidos obtengan más puntos en cada turno. Haz que cada acción tome un número específico de puntos para completar, y resta ese número de los puntos del jugador para ese turno cuando realiza una acción. Si una acción toma más puntos de los que le quedan al jugador, márquela como "parcialmente completada" y deje que termine el próximo turno.
fuente
¿Te refieres a que las acciones tomen múltiples turnos (es decir, dormir 50 turnos seguidos)?
Lo que haría es mantener un objeto, player.currentAction. currentAction puede contener cuántos turnos requeriría la acción, cuál es la resolución de la acción y una lista de estados que cancelan la acción (en peligro, siendo atacado, demasiado caliente, etc.). Cada turno, antes de verificar la entrada del jugador, verificamos si el jugador estaba actualmente en el medio de una acción, luego hacemos algo como algo como ...
fuente
Puedes ir con puntos de acción pero sin giros per se sino ticks, que son mucho más pequeños. Supongamos que cada actor tiene una velocidad de acumulación de puntos de acción (por ejemplo, 2 AP por tic). Comienza una acción que vale, digamos, 10 AP. El juego avanza 5 ticks hacia adelante (porque esto es lo que le toma al actor pagar el precio AP de la acción).
Cuando hay varios actores. El juego avanza tick por tick hasta que alguien haya pagado el precio AP en el momento en que se ejecuta esta acción.
El enfoque es similar al de @ mikera, solo que no hay AP negativos.
fuente
Tiempo de alta resolución
Si el golpe toma 400 vueltas, y la patada toma 1000 vueltas, puedo golpearte al menos dos veces antes de que me patees, y puedo golpearte 5 veces para cuando me patees dos veces.
Al hacer que las cosas tomen muchas vueltas, tienes mucho control sobre cuánto tiempo tardan las cosas.
fuente