HONEYGAME DEVKIT v1.0

正在运行 为什么我做了一个不会跳的主角

--:--
NOW PLAYING · 2026.03.14 · 3 MIN

为什么我做了一个不会跳的主角

我砍掉了跳跃键。然后花了三个月,学着把「不能跳」变成一种表达。

《HONEY GARDEN》的主角不会跳。

这不是技术限制。引擎是 Godot,跳跃是它自带模板里的第一行代码。这是我按着删除键,看了很久,然后松手的决定。

一个按键,和一整套语法

2017 年我玩《Everything》的时候第一次意识到:平台游戏里,“跳”不是一个动作,是一整套和世界对话的语法。

能跳,意味着:

  • 地面和空中是两种状态,玩家会自动去找“哪里能站”
  • 高度差是一种门锁,够不到就是不够
  • 关卡设计从“平面迷宫”变成“立体寻路”
  • 玩家的大脑会持续计算抛物线,哪怕他不在跳

这四件事全都很好。问题是,它们全都关于移动,而不是关于我想讲的东西。

我想讲的是一座花园,和一个人慢慢学会告别。在这个故事里,主角不需要翻过任何东西。她需要的是蹲下来。

那么,把跳跃换成什么

我删掉跳跃之后,空了整整一个按键。这个洞不能空着——空着的按键会让玩家一直按它,然后怀疑游戏坏了。

于是我给了她“照料”。

按住同一个键,根据面对的东西不同:对着土就播种,对着芽就浇水,对着开花的就摘下,对着人——什么都不做,只是站着。

前三个是机制,最后一个是故意设计的无用操作。

那个无用的按键

游戏里有一个 NPC,是主角的祖母。她大部分时间坐在门廊上。

玩家在她面前按“照料”键,什么都不会发生。没有对话,没有道具,没有成就。只是主角会走过去,在她旁边站一会儿,屏幕上是风声。

测试的时候,80% 的玩家按了一次,没反应,就走了。

但有 20% 的人按了第二次、第三次。有一个人按了十一次。

那一刻我知道这个设计成立了。一个没有反馈的按键,反而成了整个游戏里信息量最大的操作。

没有跳跃,关卡怎么设计

这才是真正的账单。删掉跳跃的那个下午我很爽,接下来的三个月我在还债。

不能跳,意味着垂直方向完全失效。我失去了:

  • 用高低差自然引导视线
  • 用平台间距控制节奏
  • 用“看得到但够不着”制造欲望

前两个月我做出来的关卡,全都平得像一张地图。所有的路都在地面上铺开,玩家走两步就看完了整个区域,然后失去兴趣。

转折点是我开始把垂直还给美术。

玩家不能上去的地方,不代表不能存在。

悬崖、树冠、屋顶、晾衣绳、飞过的鸟——这些东西全都不参与玩法,但它们重新把画面的纵深撑了起来。玩家还是会抬头看,会想“那上面有什么”。答案是:什么都没有。但想看这件事本身,就是沉浸感。

三条替代规则

最后我总结出三条不用跳跃也能撑住关卡的原则:

  1. 用宽度代替高度。 一条路不够就并排三条,让玩家选。
  2. 用时间代替距离。 过不去的地方,不是“够不着”,而是“还没到”——花开了,路就出来了。
  3. 用视线代替路径。 让玩家看见远处,哪怕走不过去。视线本身就是奖励。

第三条最反直觉,但最有用。

# 关卡验证脚本:检查玩家从任意点出发,视野内是否
# 至少有一个"可望不可即"的目标物
func verify_vista(level: Level) -> bool:
    for spawn in level.player_spawns:
        var visible := level.visible_props_from(spawn, 40.0)
        var reachable := level.reachable_from(spawn)
        if visible.difference(reachable).is_empty():
            push_warning("这个区域没有远景,玩家会觉得世界很小")
            return false
    return true

这个脚本现在会在我每次保存关卡时跑一遍。它拦下过我大概三十次“世界变小了”的失误。

代价

说点不好听的。

去掉跳跃之后,我的游戏变得不那么“好玩”了。这是真的。它的操作快感下降了,节奏变慢了,前十分钟甚至有点闷。

我用它换来的东西是:玩家会更慢地走,会更仔细地看,会在一个没有用的按键上多按两次。

这笔交易划不划算,等《HONEY GARDEN》发出来才知道。但至少到现在,每次看到有人在祖母面前按第二下,我都觉得值。


下一篇会写我为这个决定付出的技术代价:没有跳跃之后,寻路和碰撞该怎么写。

END OF CARTRIDGE