项目概述
灵感来自 B 站纪录片《不想死的游戏人》——独立开发者在资金、市场和自我怀疑中挣扎的真实处境。我想把开发者的压力源(创作挫败、过劳、焦虑)编码成可以走进去的空间和可以破解的谜题,让从业者在游玩中完成一次象征性的释放,也让圈外人通过亲身体验理解创作的复杂。
这是我发起并主导的项目:整体设计、全部场景的设计与制作、玩法都由我完成,两位同学帮忙制作了部分美术资产。项目最初作为课程小组作业开始,之后由我继续完善,成为我的本科毕业设计《面向情感氛围营造的沉浸式游戏设计与开发》(北京工业大学,2025 年 5 月)。
游戏采用 Unity + HDRP 开发,发布于 Windows PC。第一人称视角,4 个玩法关卡与 5 个叙事场景交替穿插,按“寻找 — 追逐 — 释怀”的心理节奏排列:每个关卡之后接一个情绪场景,形成“行为体验 → 内心共鸣 → 情绪转折”的三段式循环。
游戏结构与流程:关卡与叙事场景交替(论文图 4.1)
设计:一条情绪曲线
整个游戏的策划核心是“情绪递进与氛围营造”。我先定下一条情绪曲线,再为每一段分配一种玩法或一个场景,并用场景关键词约束美术与音乐:
| 顺序 | 类型 | 情绪阶段 | 设计关键词 |
| 关卡 1 | 第一人称迷宫 | 迷茫 | 寻找 / 方向感缺失 / 遗迹感 |
| 场景 1 | 游戏机墓地(幻想) | 失落 | 失败记忆 / 荒凉沙滩 / 沉寂感 |
| 关卡 2 | 倾斜玩具迷宫 | 困境 | 无力操控 / 微调失败 / 精疲力竭 |
| 场景 2 | 昏暗办公室(现实) | 压力 | 窒息空间 / 独白文字 / 重复性 |
| 关卡 3 | 井字格追逐 | 焦虑 | 节奏紧迫 / 控制反应 / 紧张感 |
| 场景 3 | 医院走廊(现实) | 崩溃 | 线性空间 / 微光 / 病态感 |
| 场景 3.5 | 海上车站(过渡) | 重启 | 安静车站 / 列车鸣笛 / 梦境转折 |
| 关卡 4 | 飞行收集光球 | 希望 | 飞行自由 / 空旷空间 / 光感流动 |
| 场景 4 | 回到海滩(幻想) | 愈合 | 开阔视野 / 阳光海滩 / 明朗色彩 |
每一段都用四类符号协同工作:物理符号决定玩家“在哪儿”感受情绪(场景构造、道具);角色符号决定“以谁的身份”感受(第一人称、角色状态——例如医院里失去奔跑与跳跃);视听符号决定“如何感觉”(色调光影、音乐、雾效);叙事符号决定“感受到什么”(漂浮文字)。
五个叙事场景
- 游戏机墓地:荒凉海滩上散落着锈蚀、屏幕破裂、倾倒的复古街机——梦想崩塌的墓碑。傍晚斜照 + HDRP 体积雾压低视野;没有任务提示,玩家靠地面触发点推进,漂浮文字像回忆碎片一样逐字升起。
- 昏暗办公室:窄长的开放式办公室,只有尽头一盏吊灯亮着。进入后玩家失去跳跃与奔跑、移速下降,模拟“心理迟滞”;文字悬浮在桌椅、投影幕和键盘上方——“为何没有人给予反馈”“我逐渐开始讨厌点开评论区”。
- 医院:抽象化的手术台与走廊,没有窗户与自然光。这是全游戏控制力最弱的一段:移速再降、镜头有轻微延迟、路径线性、没有选择,让玩家代入“无力反抗现实”。文字出现在高空、墙角、地面甚至前进路径上,带漂移动画。
- 海上车站:走到医院走廊尽头,一扇门缓缓打开——门后不是走廊,而是海面上的木质站台和驶来的列车。两段在同一个 Unity Scene 里,靠后处理体积切换、音乐淡入淡出和控制变化完成从“压抑”到“重启”的跳变,不加载新场景。文字从“你的身体正在死去”变成反问“它们还是你的梦魇吗?”。
- 希望的海滩:与第一个场景同样的地形与构图,但换成明亮的沙粒贴图、晴空天空盒和带波纹反射的海面;游戏机墓碑整齐安静地留在沙丘里——失败被接纳,成为记忆的一部分。首尾呼应成一个圆环。
游戏机墓地 → 办公室 → 医院醒来 → 走廊尽头的门 → 海上车站 → 希望的海滩。
四个玩法关卡
- 关卡 1 · 第一人称迷宫(迷茫):多层交错的圆形迷宫,中心有一道垂直光柱——目标清晰、路径混沌。左下角有实时小地图辅助定位;路边陈列着倾倒的办公桌、游戏机外壳、被踩踏的开发文档。
- 关卡 2 · 玩具迷宫(困境):玩家不控制角色,而是用鼠标拖拽或 WASD 倾斜整个迷宫底板,让小球滚到终点。小球有加速度与惯性,需要不断微调、反复尝试;没有背景音乐,只有滚动与碰撞声。
- 关卡 3 · 井字格追逐(焦虑):九宫格场地里追一颗会逃的光球。光球只能前后左右移动、优先往玩家反方向逃、在外圈按逆时针规则绕圈;唯一的通关方法是先走到光球对侧最远处,再沿直线逼它进出口。场景是办公地毯 + 玻璃隔断 + 办公桌——在现实框架里追逐梦想。
- 关卡 4 · 飞行收集(希望):操控飞行器穿越一座上下颠倒的梦境城市,收集空中的光球。没有敌人、没有时限,只有飞向、收集、再飞向。
实现:HDRP 渲染与情绪过渡
- 室外:Physically Based Sky + Volume Fog,按场景调太阳角度、雾密度与散射色——墓地压低曝光、加浓雾;希望海滩降雾提曝光。Screen Space Reflection 强化水面与湿沙反射,Contact / Micro Shadows 补细节阴影。
- 室内:主光源 + 局部点光源(台灯、吊灯、手术灯)分区照明;Light Probe / Reflection Probe + 静态物体 Baked GI,既保证间接光质量又降低运行时开销;局部后处理体积调低曝光、冷却色温、降饱和。
- 情绪过渡:在医院与车站的交界处放两个基于世界空间的后处理体积,玩家进入触发区时自动切换 Color Grading / Exposure / Bloom / Fog——雾降、曝光升、色调转亮——不加载场景就完成情绪跳变。飞行关卡里不同高度的体积再做雾与色调的微调。
实现:漂浮文字、溶解光球与各关卡系统
- 空间文字系统(SentenceController):自制特效文字预制体,脚本获取子节点的所有 TextMeshPro,用协程逐字渐现、绕 Y 轴旋转(速度按动画曲线从快到慢)、达到旋转次数上限后缩放淡出并禁用;SetStartWithEffect() 可按场景触发或重启,让叙事节点与玩家进度同步。
- 光球溶解(Shader Graph):Simple Noise + Step 做遮罩,Alpha Clip Threshold 输出剔除,脚本在收集事件时缓慢推高 Clip 值;保留自发光通道,溶解中仍有微光。海滩与飞行关卡的光球共用。
- 小地图:迷宫上方一台正交摄像机只渲染 UI 层,输出到 RenderTexture 绑定到 RawImage;玩家头顶一个跟随 Sphere 作为位置标记。
- 玩具迷宫:鼠标拖拽或 WASD 累加旋转增量,X / Z 轴钳制在 ±23°,灵敏度参数可调。
- 井字格追逐:Pos1–Pos9 九个碰撞盒记录玩家所在格;光球 Target 脚本在玩家进入触发器时调用 GameManager.MoveTarget(),按逃逸规则算下一格并用 Lerp 平滑移动;玩家在 Pos1、光球在 Pos9 时判定通关,播放逃逸音效并切换场景。
- 飞行关卡:基于 Asset Store 的飞行工具包搭建,接入项目自己的拾取判定与 UI 计数;收集完毕触发结局。
成果
按游玩顺序:迷宫 → 游戏机墓地 → 玩具迷宫 → 办公室 → 井字格追逐 → 医院 → 海上车站 → 飞行 → 回到海滩。
回顾
功能测试覆盖了小地图同步、迷宫旋转手感、光球逃逸逻辑、飞行拾取、音乐过渡、文字特效与关卡切换,均达到预期。后续想做的:丰富局部美术细节、给迷宫加时限或给追逐加光球分裂等可选挑战、给小地图加朝向标识。
这个项目让我真正学会了 HDRP,也让我第一次系统地用“情绪曲线”来组织一整款游戏的玩法与场景。它也让我意识到视觉叙事和玩法之间需要平衡——后来在 Grey Waves 里我把更多精力放在了“玩法如何推动叙事”上。