PC 与幻影互动的代码稍微有点复杂,因为要同时考虑现实世界和镜中世界。具体分三种情况。PC 与幻影互动的代码稍微有点复杂,因为要同时考虑现实世界和镜中世界。具体分三种情况。《再下一层(One More Level)》是一款使用 Godot 引擎 制作的回合制 Roguelike 游戏。最新版本是 0.1.3,可以通过 GitHub 下载。该版本发布于 2020 年 11 月,开发日志延后了两个月(2021 年 1 月)才写完。整个 0.1.x 系列以“强制移动”为主题,新增了三座地下城:
- 0.1.0:冥河摆渡(Styx)
- 0.1.2:镜中世界(Mirror)
- 0.1.3:热气球探险(Balloon)
最初灵感来自这个问题:如果按下方向键无法完全控制 PC 的移动行为,游戏会变得怎么样?接下来,我想依次分享三座地下城的设计思路,最后谈谈游戏中的进度条。
冥河摆渡
玩家需要从冥河左下角移动到右上角。每轮按方向键移动一格,能否成功取决于移动方向与目的地的水流方向。
- 方向相反:无法移动。
- 方向相同:继续移动。
- 方向垂直:移动一格。
以图 2 为例,PC 可以向左或向下移动一格,向右移动四格,但是无法向上移动。
每隔若干轮,所有水流方向随机变化一次。随后在地城里划出几条线段,使河水朝一个方向流动。有时候玩家运气不好,被困在某处耗尽了时间。我考虑过添加更多朝向终点的水流,但是一方面这会降低难度,另一方面考虑到单局游戏时长不超过几分钟,哪怕因为随机性输掉了,挫败感不会太强。
镜中世界
镜中世界的灵感来自 HyperRogue 的地下城 Hall of Mirrors。这个世界的主要规则如下:
- 利用(PC 或者幻影的)镜像收集五颗水晶后获胜。
- PC 尝试移动时,如果 PC 被镜子挡住去路,或者“PC 镜像”被“幻影镜像”挡住去路,PC 无法移动。
- 幻影被攻击后,必定在镜中世界产生一个镜像,有可能在现实世界(通过镜面反射)产生一个或多个镜像。
- PC 被攻击后,与自己的镜像交换位置。
PC 与幻影互动的代码稍微有点复杂,因为要同时考虑现实世界和镜中世界。具体分三种情况。
在镜像世界里,“PC 镜像”攻击“幻影镜像”。“PC 镜像”停在原地,移除“幻影镜像”。
在现实世界里,PC 攻击幻影。首先,如果镜中世界的对应位置已经存在“幻影镜像”,把它移除。其次,把现实世界里的幻影移动到镜中世界。最后,从现实中幻影的位置出发,往上下左右四个方向发出射线。如果射线接触到了镜面,尝试往现实世界添加新幻影。
在现实世界里,幻影攻击 PC。首先,交换 PC 与其镜像的位置。其次,每个 NPC 根据其新身份,幻影或“幻影镜像”,开始或停止行动。最后,如果某个镜像恰好覆盖了水晶,水晶将被自动拾取。
热气球探险
在热气球探险中,PC 的符号始终显示为箭头,代表当前的风向。五次停留在指定位置即可获胜。每一轮按照以下规则移动:
- 首先顺着风向移动一格。
- 随后朝着按键方向移动一格。
- 两次移动时,如果遇到障碍物,往反方向后退一格;如果越过地图边缘,移动到另一侧对应位置。
为了确保玩家走遍整张地图,我把地下城分为两行三列六块区域,选择其中五个放置目标地点。利用反弹规则,玩家可以抵达看似不合理的位置,比方说在下图中按右方向键抵达位置 2。
游戏中的进度条
设计镜子地城时我在想,分隔两个世界的墙壁能否美化一下呢?不如把它改成进度条,显示已经收集的水晶数量吧。沿着这个思路往下想,能否给每座地下城都添加进度条,告诉玩家距离胜利还有多远?现有的进度条分为三类。
- 冥河:PC 在地图上的位置就是进度条。
- 镜子,热气球:特殊符号的数量代表了胜利进度。
- 骑士,沙漠:特殊符号本身暗示了游戏进度。
第三类稍微展开讲讲。在骑士地下城里,最终头目分为三个阶段,其符号依次为 S、P 和 D。当前版本(0.1.3)给沙漠地图新增了一个计数器(见下图),显示了已收集的优质香料数量,功能上相当于一格普通香料。
最后说一下未来计划。下一个大版本(0.2.x)以“武器攻击”为主题,可能包含三座地下城,第一个版本(0.2.0)预计一周内发布。希望大家喜欢!
暂无关于此日志的评论。