【RogueBasin】Roguelike 基本功系列文章 - Roguelike 的行动相关机制
网站:
http://www.roguebasin.com/index.php/Preferred_Key_Controls
http://www.roguebasin.com/index.php/Two-Key_Targeting
http://www.roguebasin.com/index.php/Implicit_Facing
译言:这部分讲的是100%的传统Roguelike,在Linux或DOS系统上运行的那种。

移动
关于键盘的移动快捷键,早期流行的方式有两种,即vi模式(见代码块)和小键盘模式。需要注意的是,wasd和esdf四向移动方式是《雷神之锤》开始的事。
vi 设计的优点包括:
对于vi和vim用户来说最熟悉,因为这是该文本编辑软件中用户移动光标的方式
不需要使用Num键盘,意味着能适配绝大多数键盘
vi 设计的缺点包括:
对于不用vi和vim的人来说有学习曲线,映射关系违反常识
vi是为qwerty键盘布局设计的,其它布局很难适应,某些分体式人体工学键盘也会将Y与其它vi键分开导致不舒适的操作
对于单冲程键盘(早期键盘类型,无法正常按出类似Ctrl+Z组合键)显著减少可用快捷键数量
由于y和n也在移动键中,可能在弹出选项时误触(鉴于它们对应的快捷键就是y和n),不过可以通过要求使用大写来解决
Num 键盘需要考虑的问题:
一些键盘通过使用NumLock将字母切换为Num键,使用这些键盘的用户在游戏时会进行频繁切换操作;更不要提连这个功能都没做的键盘,这种情况下可能需要外设进行游戏
大多数键盘的Num键盘距离字母键盘很远,玩家往往需要长距离移动手指,这在实时Roguelike中尤为致命
行动
就键盘操控而言,一般的Roguelike游戏是用助记符绑定行动,如:
由于许多Roguelike游戏提供自由的行动方式,开发者很快就会发现一些助记符之间会冲突,比如上面提到的D,究竟用来做什么比较好呢?为此,一些Roguelike游戏提出了一些解决方案:
使用组合键,如Shift、Alt、Ctrl/Meta等
《NetHack》使用了扩展命令模式#,通过输入更多键来拼写出非常见操作比如“#drag”等
通过呼出操作菜单来选择操作,比如《Pixel Dungeon》桌面端的右键菜单
双键定位
Roguelike游戏中的射击类动作,通常都需要先指定目标,再进行动作。对于实时机制游戏来说,这些操作用传统逻辑可能需要花费大量时间,从而造成极大的麻烦。一些作者开发出了双键定位以解决这一问题,并将其反哺到传统Roguelike中。
双键定位指,当玩家选择好攻击动作后,可通过依次按下瞄准键+靶键的方式快速选中敌人并进行攻击动作,这样的一个机制。在选择好敌人前,攻击动作处于预备阶段。
其使用时的情况大致如此:当玩家按下瞄准键时,玩家攻击范围内的所有目标都将被分配一个指示字符,当处于瞄准状态时,指示字符将覆盖实际字符以作为标记。譬如原本你面对一条龙(D)和一只僵尸(Z),当进入瞄准状态时他俩被依次分配Q和W靶键,则此时的龙显示为Q,僵尸为W。按下对应的靶键,如W,则攻击动作立即对僵尸(Z)进行,同时解除瞄准状态,两名敌人的标识恢复正常(D、W)。
瞄准状态可以设置为自然解除,以下是一些可供参考的解除条件:
攻击范围内无目标(敌人移出/玩家移出/全部消灭等)
无法进行该攻击(弹药/蓝量不足等)
可以不单独分配瞄准键,而是以“满足瞄准条件动作的动作键”作为瞄准键。同理,解除瞄准状态的键可与瞄准键设置为同一个。但要注意,这些设置可能与类似“双击动作键视为对自身使用”的设置不兼容。
这种瞄准系统的缺点在于,在ASCII码环境中,玩家可能需要依赖敌人标记来决定攻击策略,这种覆盖会打乱规划。对于这种缺点,可以使用临时图例或闪烁文本等方式进行解决。较为现代的游戏则可以用脚注甚至气泡等方式进行显示。
如果是每次都需要自行选择法术进行释放的系统,可以设置预备法术队列机制以供玩家一次快速施法。
朝向系统
有些Roguelike游戏会涉及朝向计算,攻击侧身或背后有伤害/暴击加成并使被攻击者转为正对攻击者。一些游戏选择像日式战棋一样回合结束后手动选择朝向;而另一些游戏使用自动决定朝向的机制。朝向系统在Roguelike游戏中实际可以被类似“围攻”等的系统替代。
对于自动朝向,以下是一种设计思路:
若最后一次动作是移动或攻击,则面对方向是移动/攻击给出的方向
否则,面向最近可见敌人
否则,不改变面向
对于非即时命中飞行物,玩家的自动朝向算法应该考虑到是否对该飞行物进行判定。
对于朝向,以下是ASCII码中常见的侧翼攻击判定方式
将所有攻击限制在水平/垂直/对角线上可以通过有效缩减计算成本及误差,否则可能会采用较为复杂的弧度公式。
时间机制
Roguelike最大的特点便是其一致性,玩家与敌人同享一片天地,但这造成了时间上的麻烦。
我们知道DND游戏中,一个标准轮大概相当于游戏世界中的6秒,如果DM和PC能够飞速运转骰笔,他们完全可以打出无限接近于即时的战斗。但实际上,大多数的玩家还是在走标准的轮次回合以期正常地结束战斗。
在传统Roguelike中,时间也依托于“回合”这一概念。早期的游戏由于设计较为简单,以玩家行动结束为基准的“玩家回合制”占据了主流,敌人和环境的行动实际被包含在玩家回合的“判定阶段”中。但随着游戏需求的增加,这种静态的时间观念便不能处理更为复杂的情况,由此衍生出各种各样的时间系统。如“同时行动制”和“资源制”。
同时行动制,指在判定阶段将包括玩家在内的所有准备行动同时发生。或许玩家在回合准备阶段选择攻击僵尸Z,但这只僵尸实际速度比玩家快并选择逃出玩家的攻击范围,那么这次攻击在判定阶段可能就会落空。
资源制下的时间被分为无数块,每次玩家回合操作结束后,在下一次回合操作到来前,游戏的时间都将以块的形式流动,流动的块数与玩家角色的数值或使用的动作有关。若时间块中发生了事件比如敌人决定攻击玩家,那么就会立即表现出来。