下载 App
新游戏开发中……
4 小时前7 浏览综合
《微光 · 无声》是这么个东西:你扮演的人,瞎、聋、哑。满屏的黑不是断电,是他的眼睛。声音只剩地面上一圈圈震动,想让别人明白你,只能敲、摸、写字条。
最早它是个网页壳,我把它整个搬进引擎重写——等距视角、震动环、触知光照全部推倒。核心思路就一条:把"残障"从背景设定变成交互本身。看不见,所以视野=手杖敲地荡开的回声;听不见,所以对话=地面上不同颜色的震动环;说不出话,所以表达=连敲几下杖。敲 1 下是"我在",2 下"求救",3 下"跟我走",停手零点七五秒自动发出去——这是你唯一主动说话的方式,有三处必须敲对才能往下走。
然后是翻车合集,先说我最不想回忆但也最好笑的。测试发来一张截图:UI 全在,章节名、按钮、对白都在,中间整个游戏世界一片黑。查完发现是我自己建的绘图上下文忘了开帧收帧(BeginFrame/EndFrame)。这玩意儿不报错、不崩溃,就是安静地把你一帧的绘制指令全丢掉。因为 UI 库自己管自己的帧,所以界面一切正常——只有世界消失了。
比这更阴间的是"游戏直接加载不出来"那次。原因是一个模块文件结尾少了 return 这一行。少这一行,语法检查照样过,构建照样报成功,跑起来才炸。"能构建 ≠ 能加载"这六个字,我用一个晚上换的。同期还中了 Lua 5.4 的雷:goto 是保留字,我拿它当剧情分支的字段名,表字面量当场不合法。还有一个更隐蔽的:变量在声明之前先被赋值了一次,那一下悄悄写成了全局变量,"点击推进对话"整个失灵,同样不报任何错。
内容第一版被测试直接点名:"内容感觉太少,对话体验有点差。“扎心,但说得对。当时对白就是播片:一句固定停三秒,不能跳,独白、唇语、指引三种文本挤在同一个框里。后来全改了——打字机逐字浮现,点一下先全显,再点才推进;三种文本分到三个位置,说话人带头像。文本量从 38 条堆到 143 条,四个分支点。我还把结局判定写了个脚本穷举:108 条选择路径里,58 条通向最坏的 D 结局,53.7%。有人会说太难。我是故意的——这游戏的主题就是"不被理解是常态”。
美术上走了两回回头路。一是墙的每条边都描高光,远看像 CAD 线框图,后来只勾顶面后沿两条边,才像个实物。二是加了遮挡剔除(就是别让墙背后的地板亮起来、浮在角色头顶)之后新问题来了:墙背后的地面全黑,墙变成悬浮在虚空里的孤岛。最后给被挡的方向留了 10% 底光,房间才重新是房间。这笔账我记着:修画面的"正确",是能顺手把可玩性修没的。
这句话当晚就应验了。做"引导"功能那次,一个状态清空顺手把读纸条那步的目标提示也吃了——测试反馈六个字:“第一章通关不了”。玩家站在一片黑里,没提示、光带也不指,死胡同。修完之后加了 F3 调试面板:当前剧情步、等待状态、敲击计数全打出来,以后再卡关,截个图我就能定位。
最离谱的一个 bug 是被攻略逼出来的。整理通关文档要求逐行对照剧本核选项分值,核到结局条件才发现:"铁管那头有人"这个标记,从头到尾没有任何代码去设置。翻译成人话:救援线永远比设计值低 2 分,一批本该拿到最好结局的路径会静悄悄掉档。要不是写这份攻略,这雷不知道埋到哪天。
现在三章全流程能通了:7 个模块 2120 行 Lua,横屏适配,手机震动反馈,引导开关默认关(迷路本来就是内容的一部分)。下一步给墙做高度场——现在全是等高,手杖扫过去读不出空间感;震源的方向提示还要再调。
两件事不打算做:不加贴图,极简几何加触知青线这个方向是要做穿的,不是换掉的;那个陷阱选项也不改——"写:我听不见,别怕"看着最暖心,但它不计入"建立语言"的条件,选了就锁死最好的结局。
别问我是怎么知道的。














