如何在RogueLike游戏中管理不同的动作速度?
我的意思是,基于回合的游戏可能会让演员以不同的“速度”行动,具体取决于动作和其他一些特征。然后,无论演员是否有更快的速度,他们都会比其他演员有效地执行更多的动作/转弯。
如何确定演员何时应该可以表演(转弯时间表?)?
看来有不同的方法可以做到?你能用算法解释一些吗?
如何在RogueLike游戏中管理不同的动作速度?
我的意思是,基于回合的游戏可能会让演员以不同的“速度”行动,具体取决于动作和其他一些特征。然后,无论演员是否有更快的速度,他们都会比其他演员有效地执行更多的动作/转弯。
如何确定演员何时应该可以表演(转弯时间表?)?
看来有不同的方法可以做到?你能用算法解释一些吗?
Answers:
在我的流氓游戏《暴君》中,我使用了动作点和速度等级系统。
基本上:
然后,游戏循环将如下进行。
hero action AP cost * 100 / hero speed
creature speed * elapsed time / 100
该系统总体上运行良好,示例功能非常出色:
您是说让动作多转(例如,连续睡50圈)吗?
我要做的是保留一个对象player.currentAction。currentAction可能包含该动作将需要转动多少圈,该动作的分辨率是多少,以及取消该动作的状态列表(处于危险中,受到攻击,太热等)。每回合,在检查玩家输入之前,我们将检查玩家当前是否处于动作中间,然后执行类似...的操作。
if(!player.currentAction.interrupted())
{
if(player.currentAction.complete() == true)
{
player.currentAction.doAction(); //Some actions, like casting a spell, would have something happen here. Others, like sleeping, may or may not, depending on how you coded it.
player.currentAction = null;
}
else player.currentAction.decreaseTimer(); //Decrease our timer by one.
}
else
{
player.currentAction.interrupt(); //Let the player know he's been interrupted. Bungle the spell, cancel sleep, etc.
player.currentAction = null;
}
您可以使用动作点,但本质上没有转身,只有tick嗒声,它们很小。假设每个演员都有动作点累积速度(例如,每刻2 AP)。它会启动一个值得10 AP的动作。游戏前进5个滴答声(因为这是演员支付动作的AP价格所需的费用)。
当有几个演员。游戏一步一步前进,直到有人在执行此操作之前支付了AP价格。
该方法类似于@mikera的方法,只是没有否定AP。