下载 App
修改于10/19217 浏览综合
【开发者日志#3】啊哈工作室的第三天——雾、楼梯,和那个一直跟着你的东西
【聚光灯】
各位大朋友小朋友,还是啊哈工作室。
上一篇讲的是纸飞机,讲的是我们为什么要做这个游戏。
这篇讲怎么做——以及我们今天摔了几个跟头。
(先说个坏消息:游戏名字我们内部又吵了一轮,还是没定。 请大家习惯一下这种居无定所的感觉。)
一、雾:一个人不是突然长大的,他是一层一层被盖住的
题目"涌现"公布那天,我们沉默了大概三分钟。
后来长成了这么一句话:
视野 = 记忆。
你手里那盏灯能照到多远,取决于你想起了多少事。想起来的越多,雾越薄,世界一点点长出来。
雾一共五档,越往上越薄——最顶上那层,是雾散尽。
做的时候我们还翻了个车:改配置的时候用错了基准,把人家的表压成五项就交上去了,还比规定的少一档。
后来核对才发现。这条本来想藏着,后来觉得——"我们改错了、又改回来了"比"我们一次就做对了"可信得多,就写这儿了。
二、上楼:楼梯是一节一节长出来的,不是摆上去的
我们想要的是:
捡到通关道具 → 楼梯从地板上一个一个冒出来 → 你自己走上去 → 越过屏幕顶 → 镜头一跳,你就在二楼了。
第一版我们想的是"再开一个场景",当场被否了——换场景会把背包里的东西、解开的谜、长好的楼梯、雾的浓度全部清掉。
可这些东西,恰好就是这个游戏的全部。
所以改成:一个场景,往上叠四层,每层正好一屏高。
为了让人看不出接缝,我们把数算了一遍,最后落到一句挺得意的话上:
镜头跳上去的那一刻,人还站在原地。
为了这"一跳",我们折腾了一晚上
天真的第一版是直接改主摄像机的位置。改完没反应。
后来才发现,主摄像机上挂着一个 CinemachineBrain——它的工作是每一帧把"虚拟相机"的位置写回主摄像机。我们改的值,下一帧就被它盖掉。
打个比方:你趁值班的人上厕所,把监控屏幕挪了五厘米。他回来第一件事就是把它挪回去。而且他每一帧都回来看一眼。
最后我们用了一个很笨的办法:把"平滑跟随"的阻尼临时关掉一帧。 阻尼是 0,镜头就自然落到它该在的地方——不需要我们猜坐标。跳完再把阻尼还原。
(子坑:连续切层时,第二次去"关阻尼",读到的是上一次关完的 0,把 0 当成了"原本的阻尼"存起来,阻尼就永久变成 0 了。修法:原本的值只存一次。)
三、那个一直跟着你的东西
一楼进去 10 秒,你左边 30 格的地方,会出现一团黑影。
我们给它的设定是:"已经麻木的自己"。
它只跟你的横轴,不跟你上楼。速度分三档——离得远它拼命追(2.0×),中距离 1.5×,贴到脸上反而"只"剩 1.2×。
但 1.2 倍还是比你快。
这是我们故意的:一旦进了 5 格,它一定会追上你。 你唯一的活路是换层。
也不是碰一下就死——得两个中心点小于 0.3、并且连续 0.3 秒才算抓住。那 0.3 秒是留给你的擦身余地。
被抓到之后也不是"游戏结束",是回床上,把开头那套起床演出再演一遍。
为了让它在靠近时响起专属音乐,我们改了音频底层
去翻音频池的代码,第一行注释写着:
BGM(常态 BGM,只此一路;留空 = 静默)
只此一路。 也就是说,把追击音乐塞进这一路,关卡的音乐会被它顶掉——玩家一被追,背景音乐就没了。
所以这次不是优化,是必须加第二条音乐通道。加的时候立了条规矩,我们内部还吵过:
"压低背景音乐"绝对不能去改"音乐总音量"。
因为那个总音量是玩家在设置面板里拖出来的。我们为了做效果去改它,等于偷改玩家的设置——他退出去再进来,会发现自己拖的滑条变了。
所以"压低"被我们做成一个独立的乘数,只作用在播放这一侧,不碰玩家的值。
(我们为"一个东西从左边走过来"改了音频底层,想想还挺好笑的。)
四、翻车现场
① 我们做了个特别体贴的"零接线",结果一只怪都不出现
想法是:队友不用挂组件、不用建预制体、不用建配置,进 Play 就能看见怪。
写完,进 Play:一只怪都没有。而且 Console 一个字都没报。
查了半天,原因很气人——那个服务是"懒创建"的,谁碰它一下它才出生。我们给调试面板留的那个只读口子,不会触发创建。
整条链全对,就是没有第一个人去碰它。一行代码修好。
教训:"零接线"的代价,是必须有一个确定的"第一次触碰"。
② 跟队友合并的时候,我们把文件改坏了
今天我们的改动和队友的美术改动撞上了,两边都在改同一个场景、同一个角色。
一开始我们在那份带着冲突标记的文件上"就地改",按"一块四行"机械替换——结果标记把最后一行切到了外面,文件结构直接错乱,m_Size.y 的引用丢了。
正确做法是:把两边的完整版本各自取出来,以一边为底,再往上加另一边的东西。 不要去解析带标记的半成品。
(还有个小坑:在某个旧版本的命令行里,用 > 把输出写进文件,会写成 UTF-16 带 BOM,另一个脚本读它会直接炸。在脚本里调命令,比自己拿管道接靠谱。)
③ 素材全变成了 131 字节的文本文件
早上打开工程,满屏编译错误。
根因是插件和一堆图片、音频在仓库里只剩"指针文件"(131 字节的文本),真东西没被拉下来——而服务器上那两个插件的文件已经丢了。
我们是从本机另一个项目里把真的文件拷回来盖上的。重新 clone 会再丢一次,这个根还在。
(教训写进团队文档了:开工第一件事,先看素材是不是真的。)
五、现在到底能玩到哪一步
能做 还不能做
一楼进场景,10 秒后一个红方块从左边追上来 红方块还是红的(美术还在憋)
被抓 → 黑幕 → 回床上 → 重播起床演出 二到四楼还是空的
镜头上楼"啪"地一跳、过场黑幕、按层切雾 通关只有一行日志,结算画面没做
捡东西:先看到灰色剪影和糊名 一个道具资产都还没建,所以纸飞机现在扔不出去
Esc 暂停菜单 + 两条音量滑条 中文在实机上是方块,还没导字体,卡着截图
手感只能靠人进去玩——这句我们每篇都要说一遍。 六、最后
今天写完代码已经很晚了。
我们仨干的第一件事,是把那个红方块放进场景,然后站着不动,看它从左边慢慢走过来。
它走得一点也不吓人——一个红色的方块而已。但当它真的贴到身上、屏幕黑掉、人回到床上的时候,我们仨都安静了一下。
因为我们突然确定了:这个东西确实是"你自己"。
它不会喊,不会叫,也不会给你讲道理。它只是一直跟着你,越来越近。













