Como gerenciar diferentes velocidades de ação nos jogos do RogueLike?
O que quero dizer é que jogos baseados em turnos podem ter atores agindo em uma "velocidade" diferente, dependendo da ação e de algumas outras características. Os atores efetivamente realizam mais ações / turnos do que outros se tiverem maior velocidade ou não.
Como determinar quando um ator deve ser capaz de agir (agendar turnos?)?
Parece que existem diferentes maneiras de fazer isso? Você pode explicar alguns com algoritmos?
roguelikes
Klaim
fonte
fonte
Respostas:
No meu jogo roguelike Tyrant , usei um sistema de pontos de ação e classificações de velocidade.
Basicamente:
Então o loop do jogo seria o seguinte.
hero action AP cost * 100 / hero speed
creature speed * elapsed time / 100
Este sistema funcionou muito bem no geral, como bons recursos:
fonte
Pontos de ação. Dê a cada entidade uma "velocidade" para que atores mais rápidos obtenham mais pontos a cada turno. Faça com que cada ação tome um número específico de pontos para completar e subtraia esse número dos pontos do jogador naquele turno quando ele executar uma ação. Se uma ação requer mais pontos do que o jogador deixou, marque-a como "parcialmente concluída" e deixe-a terminar no próximo turno.
fonte
Você quer dizer que as ações têm várias voltas (ou seja, dormir por 50 voltas seguidas)?
O que eu faria é manter um objeto, player.currentAction. currentAction pode conter quantas voltas a ação exigiria, qual é a resolução da ação e uma lista de estados que cancelam a ação (em perigo, sendo atacada, muito quente etc.). A cada turno, antes de verificarmos a entrada do jogador, verificamos se o jogador está atualmente no meio de uma ação e, em seguida, fazemos algo como algo como ...
fonte
Você pode ir com pontos de ação, mas sem turnos em si, mas ticks, que são muito menores. Suponha que todo ator tenha velocidade de acumulação de pontos de ação (por exemplo, 2 PA por tick). Inicia uma ação no valor de, digamos, 10 AP. O jogo avança 5 ticks para a frente (porque é o quanto é necessário para o ator pagar o preço de AP da ação).
Quando existem vários atores. O jogo avança tick a tick até que alguém pague o preço do PA no momento em que essa ação é executada.
A abordagem é semelhante à do @ mikera, apenas não há APs negativos.
fonte
Tempo de alta resolução
Se o soco der 400 voltas e chutar der 1000 voltas, eu posso dar um soco em você pelo menos duas vezes antes de me chutar, e eu posso dar um soco em você cinco vezes quando você me chutar duas vezes.
Fazendo as coisas darem muitas voltas, você tem muito controle sobre quanto tempo as coisas demoram.
fonte