Как управлять разной скоростью действий в играх RogueLike?
Я имею в виду, что в пошаговых играх актеры могут действовать с разной «скоростью», в зависимости от действия и некоторых других характеристик. Тогда актеры эффективно выполняют больше действий / ходов, чем другие, если они имеют большую скорость или нет.
Как определить, когда актер должен уметь действовать (составить расписание?)?
Похоже, есть разные способы сделать это? Можете ли вы объяснить некоторые с помощью алгоритмов?
roguelikes
Klaim
источник
источник
Ответы:
В моей игре в жанре roguelike Tyrant я использовал систему очков действий и рейтингов скорости.
В принципе:
Тогда игровой цикл будет выглядеть следующим образом.
hero action AP cost * 100 / hero speed
creature speed * elapsed time / 100
Эта система в целом работала очень хорошо, например, приятные функции:
источник
Очки действий. Дайте каждой сущности «скорость», чтобы более быстрые актеры получали больше очков за ход. Заставьте каждое действие взять определенное количество очков для завершения и вычтите это число из очков игрока за тот ход, когда он предпринимает действие. Если действие требует больше очков, чем оставил игрок, пометьте его как «частично выполненное» и дайте ему закончить его в следующем ходу.
источник
Вы имеете в виду, что действия совершают несколько ходов (то есть, спать по 50 ходов подряд)?
То, что я хотел бы сделать, это сохранить объект player.currentAction. currentAction может содержать количество поворотов, которое потребуется действию, каково его разрешение, а также список состояний, которые отменяют действие (в опасности, при атаке, слишком жарко и т. д.). Каждый ход, прежде чем проверять вход игрока, мы проверяли, находился ли игрок в данный момент в середине действия, а затем выполняли что-то вроде ...
источник
Вы можете идти с точками действия, но без ходов как таковых, но с тиками, которые намного меньше. Предположим, что у каждого актера есть скорость накопления очков действия (например, 2 AP за тик). Начинается действие стоимостью, скажем, 10 AP. Игра продвигается на 5 тиков вперед (потому что именно столько нужно, чтобы актер заплатил цену AP действия).
Когда есть несколько актеров. Игра продвигается тик за тиком, пока кто-нибудь не заплатит цену AP, в которой и выполняется это действие.
Подход похож на @ mikera's, только нет отрицательных точек доступа.
источник
Время высокого разрешения
Если удар занимает 400 ходов, и удар 1000 ходов, я могу ударить вас как минимум дважды, прежде чем вы меня ударите, и я могу ударить вас 5 раз к тому времени, как вы ударите меня дважды.
Делая вещи, делая много поворотов, у вас есть большой контроль над тем, сколько времени это займет.
источник