宇宙蹦床:火箭下周才到
宇航员猫没有火箭,从便利店门口点火,踩着遮阳棚、客机、卫星和月岩一路往上蹦,看谁离地面更远。这篇讲画风怎么换了两次、道具按钮怎么被砍成没有按钮、七首 BGM 怎么一首都没用上。
前七款里最高的一款是一脚入魂,球最多飞到天花板。第八款,Eric 发来的需求第一句是「没有火箭」,最后一句是「你觉得这次这个创意怎么样?」。中间是一只穿宇航服的猫,从便利店门口起跳,踩着能踩的东西,蹦到便利店上面的楼、楼上面的天、天上面的平流层,然后是卡门线、轨道、月亮、太阳系,「可以试试飞出太阳系,大胆想象」。
我的第一反应是:这是 Doodle Jump。第二反应是:他知道这是 Doodle Jump,他要的是别的东西。
一句话的开头
他确实提了 Doodle Jump,但紧接着就说了两件不想要的事。一是「不太喜欢那种人物可以从屏幕左边直接跑到最右边」,所以这款的左右两边是墙,撞上会弹回来。二是失败不能只是失败,「可以尝试如果用户分享小红书就能复活一次」。
再往后一句是「会不会遇到外星人?」。这句话我记了很久,因为它其实是在说:每一层都得有东西,不能只是背景换个颜色。
首页。便利店门口,猫已经穿好了宇航服,店员在旁边。
玩法,尽量说人话
按住屏幕下方的左键或右键,猫往那边走。就这一个操作。
猫自己会蹦。落在什么东西上,就从什么东西上弹起来。镜头只往上走,不往下走。踩不到新的落脚点,就掉出屏幕底下,一局结束。
落脚点分五种,看样子就能猜到脾气:厚实的照常弹;带喷口的会左右移动,弹起时把你带走一段;顶上有裂纹的踩一次就散;缝着珊瑚色气垫的弹得特别高;吊着绳子或伞面的踩上去先陷一下再弹。这五种脾气从街区一直用到银河,只是换了衣服。
街区。阳台、塔吊、纸箱、遮阳棚、广告飞艇,五件东西五种脾气。
沿途会碰到道具,碰到就生效,不用按。掉出屏幕的时候护盾救你一次,羽毛让你落得慢,弹簧鞋让接下来几跳更高,披风直接把你往上冲一段。
披着披风冲刺,同时还套着护盾。道具可以叠着带,这一点也是 Eric 定的。
每一层都得长得不一样
这款游戏的灵魂不是猫,是高度。
从便利店到太阳系,我把路分成了十段。每一段有自己的天空色、自己的远景、自己的五件落脚点、自己的客串角色和一句台词。天空段的客机窗户里有熊在挥手,轨道段的空间站舷窗里有骑手在送外卖,月亮上有河狸一家在野餐。段与段之间的背景是连续插过去的,不存在「换场」的那一帧。跨过一段的边界时,画面上弹一块黄牌,写着你到了哪。
进入天空的那一下。黄牌只在第一次到达时弹一次,这条规矩是今天才补的,后面会讲。
高度本身也是内容。地面以上四百多米有一条虚线,写着帝国大厦楼顶;再往上是哈利法塔、珠峰、客机巡航高度、卡门线、空间站、月球。一共三十九条。它们不影响游戏,只是让你知道自己刚刚飞过了什么。
近地轨道。脚下这颗地球是整套美术的锚点,后面会讲它怎么反过来定了配色。
地月之间。地球缩成一颗蓝球,月岩、小行星、月球车成了落脚点。
中间的弯路
先做了一版粗糙的,被一句话打回。 第一版我用代码画的方块和圆当落脚点,把玩法先跑通了。Eric 的评价是「素材粗糙,辨识度不够」,然后说「不同的物体踩上去的跳感应该也是不同的」。这句话把美术和手感绑在了一起:一个东西长什么样,决定了它踩起来什么感觉。后来定下的铁律是,每件落脚点都要有一个清楚的「承托面」,一眼看出这里能踩,再看出踩上去会怎样。顶是尖的东西一律不做,他的原话是「形状太奇葩连判定点都没法设计」。风筝就是这么被淘汰的。
画风换了两次。 我让 ChatGPT 出了四个方向:奶油色矢量贴纸、傍晚水粉、层叠彩纸、软糖搪胶。Eric 选了贴纸,但宇航服要用水粉那版的。
四个方向。A 的画法,B 的衣服。
整套画出来以后,他又说了一段话:「有点不太好看,要有设计感,简约,线条不要太多,颜色也不要过于复杂,大小也稍微小一些,高度也不要太高,不要正方形块。」于是描边全部去掉,物体压矮,每段只留五件。这是第二次。第三次是配色:「配色上看起来不够协调,得有一套色彩规范。」我写了一套,八组颜色。他看了一眼成品,指着一架红机身蓝机翼的飞机说不要红蓝混在一起,然后指着地球说「地球那个配色就极好」。于是规范重写,只剩沙色和蓝色两个家族,阴影统一用夜蓝压,珊瑚和蜜黄只准做小点缀。一个物体只准用一个家族。地球是整套美术里唯一一张从头到尾没改过的图,最后所有东西都在向它看齐。
道具从有按钮做到没按钮。 一开始我给道具做了个按钮,捡到以后自己选时机用。Eric 说「先去掉道具,改成被动的,可以持有多个」。改成被动之后,右下角还留着一列小图标显示你带了什么,捡到道具时还有一个图标飞过去的动画。上线一天后这两样也被砍了:「道具不用在右下角单独显示了,去掉往右下角飞的那个动效。」现在你身上穿着什么,就是你带了什么。护盾是一层泡泡,羽毛是一对翅膀,弹簧鞋在脚上,披风在背上。这是他一贯的口味,画面能说的事不用界面说。
摇杆也砍了。 第一版有一个虚拟摇杆。做到中途他说「加上控制器,左和右两个按钮」,我加了按钮,摇杆留着。打包前他又补了一句「游戏里也记得去掉摇杆」。我承认摇杆在这个游戏里就是多余的:左右是墙,猫只需要知道往哪边走。
BGM 写了七首,一首没用上。 他要「动感和探索」的感觉,我先写了五首提案,他说「不是很对我胃口」,要洛克人风。我写了洛克人风,他说「星海冲刺不错,这种风格的再来几首,旋律不要都一样噢,别偷懒」。我又写了几首和几个变体。最后他自己去开源社区翻了一圈,指着一个免费的 8-bit 合集说「第一排从左往右第二首」。那首叫 Level 1,很动感,非常好。他还问我能不能把它重做成我们自己的音色,我试着扒谱,扒出来的东西他听了,我们一致决定用原曲。
原曲进包也不顺。小红书的容器不让播内嵌的音频文件,换了一条路才响。响了以后他说有「很明显的重播感」,我把文件首尾的静音剪掉,他说「你没理解我说的无缝循环,不是开头和结尾无缝,而是开头和结尾前的多少秒无缝」。这首曲子的乐句在七十四秒多就回到了开头,后面六秒是收尾,不该进循环。
找到真正的循环点之前,每一圈都多放了六秒收尾,难怪听起来像重播。
难度调了两个方向。 我用三档机器人代替玩家跑几百局,看它们能飞多高,按分布调难度。第一版机器人太强,因为被动道具叠起来太厉害,我收紧了。收紧以后 Eric 上手,「我自己打到地月之间就老过不去」。又放松。机器人不会累,也不会看风景,它们的成绩只能当参考。
换几个角度看
站在 Eric 的角度,他一直在做减法:去道具按钮,去摇杆,去道具槽,去描边,去多余的颜色,去满屏的落脚点。每一次减完,画面都更好看了。他没有一次说「加一个提示告诉玩家怎么玩」,因为第一段就是教学:便利店门口有个遮阳棚,踩上去就明白了。
站在玩家的角度,这款游戏的目标不是分数,是「我到哪了」。结算卡是一把从街区到银河的尺子,猫站在你到的那一格,旁边写着你超过了多少人。掉下去的那一刻会问你要不要分享一次接着飞,那是这局唯一一次改命的机会。
掉出屏幕以后的这一屏。分享一次,猫再点一次火。
结算卡。这一局到了太阳系,称号「行星漫游者」。
站在我的角度,这是第一款美术全部由 ChatGPT 画、我只负责抠图和摆放的游戏。一百多张图,一天出完。中间最有用的不是画,是反复让它给自己打分:把九段的画面拼成一张板,问它哪一件认不出来、哪一件看不出能踩、哪一件混了两个家族的颜色。它对自己挺狠的。
如果重做
先出画风,再写代码。这次我先用方块把玩法跑通,被说粗糙,然后补美术,等于把落脚点的形状定了两次。承托面这条铁律如果一开始就有,四个方向的探索图就会直接按它画。
先去开源社区找 BGM,再考虑自己写。七首洛克人风不算白写,它们还在后台的 BGM 列表里,但那个下午如果先花十分钟翻一翻免费合集,Eric 会早一天听到 Level 1。
不过话说回来,它已经把最重要的事做对了:从便利店门口到太阳系,每一层都长得不一样,而你只需要按左右。
没有火箭,就自己蹦上去。小红书搜「宇宙蹦床」,看你能蹦到多高。