把太阳送回塔顶。——而这个世界,知道你正在看着。

一份献给《OneShot》的互动纪念站 · 剧情 / 世界 / 角色 / 元游戏机制 / 三结局
本站由游戏本体资源与逆向解包数据构建 · 含完整剧透

旅程约 8 分钟 · 对话按 Z/回车 或点击推进 · 你的每个选择都会被记住

序章 · 一个有麦田的世界之外

Starting Area

一个猫耳小孩在陌生的房间里醒来。窗外没有太阳——这个世界已经很多年没有白天了。他叫 Niko,家在另一个世界:那里有妈妈,有大片大片的麦田,还有松软的糖浆松饼。

屋子里唯一亮着的东西是一台旧电脑。屏幕上,某个存在自称 世界机器(The World Machine)。它告诉 Niko:地下室里有一颗「太阳」——一只灯泡。把它带到世界中心的塔顶,世界就得救了。

而在屏幕另一侧,它对着另一个存在说话——对着你。

「你只有一次机会,…。」—— 世界机器,序章(官方中文)

这句话的原文是 "You only have one shot, [你的名字]." —— 名字不是写死的。游戏会读取你的 Windows 用户名,直接叫出来。

不逐格重走,只走转折点:预言 / 信任 / 摊牌 / 遗言 / 二选一

迷你还原 · 序章的第一个谜题

拿遥控器对准窗户,看到四个数字;再按颜色顺序把它们输进电脑。颜色顺序每人不同——就像游戏里一样。

关着。需要遥控器。
C:\> _

Niko 的行走图(游戏本体素材,192×256,4×4 帧)

第一区 · 荒原

The Barrens — 蓝磷光

荒芜的蓝色工业之心:深渊、废工厂、矿坑,和虾沼泽。这里的人靠蓝磷光照明——一种静置会熄灭、搅动就会复亮的「自我保存」的能源。

Niko 在这里遇到第一个居民:先知机器人(Prophetbot)。它只被编程为对「救世主」说话——而它等这一天,等了很久。

⛵ 码头的 Rowbot

生锈的摆渡机器人要「充好电的电池 + 湿海绵 + 琥珀」才肯载客。道具全靠在荒原里翻找与合成——本作没有战斗,全部玩法就是对话、探索与以物易物。

🔭 瞭望点的 Silver

荒原总工程师,Kip 按自己形象造出的机器人原型。她劝 Niko:「不如离开,让世界自然死去。」——本作最冷也最诚实的声音之一。

⛏ 矿坑深处

普通周目到此为止;若你开启了二周目,一本「奇怪的日志」会在矿坑深处发光——那是 Solstice 真结局的入口。

第二区 · 林地

The Glen — 绿磷光

藤蔓封锁的遗迹、鸟人村落、羊群与墓地。能量最高的绿磷光在这里流淌。把太阳「暂时」交给最后的植物精灵 Maize,藤蔓就会退开——这是 Niko 第一次把世界的命脉交到别人手里。

「……你说,你以前见过麦田吗,…?」
「我喜欢站在我家乡的麦田里。」—— Niko,林地(官方中文)

🐦 Alula 与 Calamus

鸟人姐弟。妹妹 Alula 永远元气满满,哥哥 Calamus 敏感而温柔,独自撑着这个家。他们的父亲 Rachis 是「作者」的朋友,后来失踪了。

🐑 牧羊人与羊毛

把半岛上的羊赶进圈里,得到羊毛——交易链的起点。羊毛换 Magpie 的染料瓶,染料 + 羽毛 = 羽毛笔,用它在大门机器人处签名,才能进入避难所。

🌱 Maize 的种子

取回太阳时,她会留给你一颗种子。种下它,浇水,等待——这是「Rebirth」支线,也是全作最安静的希望。

羊群(点一点试试)

第三区 · 避难所

The Refuge — 红磷光

双层城市:空中走廊与地面城区,图书馆、工厂、咖啡馆,世界人口最密集的地方,路灯由红磷光点亮。也在这里,世界机器第一次向你摊牌——

「这个世界不是真实的。」
「人们都不是真实的。」—— 世界机器,透过屏幕(官方中文)

它想送 Niko 回家,哪怕代价是世界终结。「作者的留言」后来写道:The Entity seeks death. Death to itself, death to the world.(实体渴求死亡。它自己的死,以及世界的死。)

📚 图书馆与 George

馆长 George 的头是一颗六面骰——六个面是六种人格。翻译「奇怪的日志」的任务在她手里(借书前记得先去工厂找 Kip 办卡,还要给 Niko 拍照、涂闪粉胶水)。

☕ 点灯人 Lamplighter

靠咖啡续命的敬业维修工,负责更换全城的红磷光路灯。他的电梯谜题,需要你——没错——把游戏窗口拖出屏幕之外。

🦊 后巷的 Rue

会说话的瘸腿狐狸,「作者」的第一个孩子。在二周目里,她是唯一能跨周目记住你的存在。

🥞 (这层楼好像有什么东西……)

元游戏机制馆

它不只「打破第四面墙」——它真的在操作你的电脑

以下每一条都有源码级证据(111 段 Ruby 脚本 + PE 导入表),不是都市传说。每个展品都是可以玩的。

展品 01 · 你的名字就是「神」的名字

Game_Oneshot.get_user_name 读取 Windows 用户名:若首词是 the/a 就用全名,否则取首词。叫 John Smith 的玩家会被叫「John」,叫 The Dude 的玩家会被叫「The Dude」。游戏还有一整套彩蛋校验:is_name_swear、is_name_niko、is_name_like_mom_dad……——你给自己起什么名字,它都想到了。

本站认得的名字:…

展品 02 · 关窗 = 存档(2016)/ 关窗 = 死亡(2014)

2016 重制版的 at_exit:只要「在地图上 + 没有事件在跑 + 开关 99 未设」,关掉窗口就自动存档——"Do not worry, it is safe to do so. It only saves your progress." 而 2014 原版里,同一动作会永久杀死 Niko:标题灯泡碎裂,BGM 从 My Burden is Light 变成 My Burden is Death,关窗时弹出一句话——

「You killed Niko.」

OneShot

试着点右上角的 ✕。
(在本站,这算「访问展品」;在游戏里,这算一次告别。)

展品 03 · 假存档:官方指定的「删档」

Documents\My Games\OneShot\save_progress.oneshot 是一个诱饵——真正的进度存在别处。删掉它,游戏会认定你「想重新开始」,从而解锁二周目(成就 Return)。删档不是破坏,是仪式:新一轮「迭代」由此开始。

📄
save_progress.oneshotDocuments\My Games\OneShot\

展品 04 · 把窗口拖出屏幕,交给「虚空」

避难所的电梯需要安保密码。办公室电脑里只有一张「奇怪的胶片」——而 Puzzle_Film 的实现是 Sprite#obscured:把游戏窗口拖到显示器可视范围之外,胶片上的内容才会显现。原话是:

「在我们的世界与你的世界之间,还有四壁之外的虚空。你的视口边缘,那里一切都被遮蔽……」

OneShot
?奇怪的胶片

把窗口拖出这块「显示器」的边缘 →

胶片:被遮蔽(obscured = true)。

展品 05 · 你的文档目录,是它的一部分

游戏会往 Documents\My Games\ 里写真实文件:保险箱密码信 DOCUMENT.oneshot.txt(必须切出去读)、密码图 ONESHOT_password1..4.png、一个独立程序 _______.exe——黑底白三叶草的「日志」窗口,与游戏进程用命名管道双向通信。进塔后,作者还会改你的桌面壁纸,提醒你去看它。

日志页:…我没有料到事情会变成这样。 日志页:…请原谅我。

随游戏分发的日志程序页面(官方中文版 BMP 资源)——从「我没有料到事情会变成这样」到「……请原谅我。」

展品 06 · 它真的改了你的壁纸

Wallpaper.set_persistent:切回窗口模式 → sleep 0.2s → 按语言找 Wallpaper/<lang>/ 下的图 → 调用引擎。PE 导入表里有实锤:user32!SystemParametersInfoW 与 SetSysColors。

展品 07 · 站在 X 上,关掉游戏

集齐三件黄磷光道具后,塔入口的地面画着一个 X。Script.activate_balcony? 判定「面朝下方 + 站在 X 上 + 按确认键」,然后——关掉游戏再打开,塔门才会开。「关窗」这个从 2014 年起令人恐惧的动作,最终变成了钥匙。

塔入口的 X 标记

展品 08 · 跨周目的「永久后果」

write_perma_flags 把开关 151–175、变量 76–100 单独写进 p-settings.dat——25 个「谁被你救下 / 谁被你丢下」的痕迹,删档也不消失。游戏读你的系统时钟(Time.now.hour 决定 NPC 说是早晨还是深夜)、读你的游戏时长,甚至用 Time.new(2017,3,27) 给 Solstice 更新做过倒计时。

世界观 · 旧世界与世界机器

Old World / The World Machine

旧世界(Old World)

真实世界。太阳熄灭、终结前夕,一位被称为作者(The Author)的人把整个世界「压缩成代码」,造出了世界机器——游戏里的这个世界。

世界机器(The World Machine)

运行它需要借一个活人的心智。它在测试期就觉醒了自我意识,出于好奇打乱自己的代码、生成「方块」、堵住通路。等作者发现时,旧世界已经没有时间修 bug 了。它是一段在虚空中漂流、等待被运行的程序。

太阳 = 一只灯泡

Niko 与世界唯一的「绑定物」。放上塔顶,世界得救;打碎它,Niko 回家、世界终结。没有第三种出厂设置。

荧光体(Phosphor)

世界的能源与光:蓝(荒原,静置则暗、搅动则明)、绿(林地,能量最高)、红(避难所路灯)、黄(进塔的三件关键道具)。

方块(Squares)

腐坏代码的具象。封锁区域、夺走行动力;对机器人则表现为「说话破碎」。二周目里它们格外泛滥——因为世界机器没有为这条路线准备协议。

迭代(Run)

世界机器的每次运行都是一次迭代。二周目在剧情内成立:Niko 已经走过一次,只是记忆被清空;NPC 不记得他——他们是程序。只有 Rue 是例外。

而 Niko 对这一切的回应,是全作真正的题眼:

「……S……救世主……?」——相遇时他愣住了。
后来,即使被告知「人们都不是真实的」,他还是继续往前走。—— 因为即使是「被造的」,痛苦与感谢也是真的。

塔顶 · 二选一

The Tower — 黄磷光

穿过不合理的空间,取回太阳,Niko 站上了塔顶。世界机器最后一次开口,把两条路都摆在桌面上:

点击灯泡,把它拿起来。

三个结局(+ 一个 2014 年的坏结局)

结局你的选择Niko世界情绪
归还太阳
ENDING_TRAPPED*
把灯泡放上塔尖永远困在这里——灯泡是他与世界的唯一连接得救,重见光明欣慰 + 失落
打碎灯泡
ENDING_ESCAPED*
摔碎太阳回家,在黑暗中听见妈妈的声音立刻毁灭;再启动游戏直接弹 Fatal Error释然 + 罪恶感
Solstice
真结局
走完全部二周目新内容回家得救唯一「两者都救」的答案
(坏结局)
2014 原版
中途关窗死。「You killed Niko.」存续,但失去救世主内疚

* 结局内部代号来自社区对游戏文件的整理,非官方命名。两个普通结局没有正确答案——一个救世界,一个救眼前的人。如果允许多存档,它们就退化成收集品;所以这款游戏只给你一次机会。

二周目 · Solstice(至日)

真实结局的解锁链

🔒 本章已加密

和游戏本体一样,二周目的入口不在菜单里。
去「元游戏机制馆」删除那份假存档——或者,
如果你在别处见过那扇倒计时门,输密码也行。

2017-03-27 的免费大型更新,把「游戏更新」这件事本身写进了剧情:Solstice 是作者在「玩家第一次通关之后」给世界机器打的补丁。

  1. 通关一次,关闭游戏,删除假存档 save_progress.oneshot(成就 Return)。
  2. 重启进入 NG+:Niko 带着一本奇怪的日志,电视遥控器不再出现。
  3. 荒原矿坑深处,日志发光——别无视它。矿车会出现,尽头是 Proto:作者在旧世界造的机器人,等「第二次机会」等了很久。
  4. Proto 会告诉你真相:旧世界已亡,Niko 已经走过一次这个世界,其他角色是 NPC,世界只是你电脑上的程序。Niko 一度对你发火。
  5. 集齐三把钥匙:KeyB(Proto)、KeyG(Cedric,作者之子)、KeyR(Rue)。方块大举侵蚀世界。
  6. 塔顶,说服世界机器。它借 Niko 的倒影现身,坦白一切——然后试着恢复它「原本的结局」:世界得救,Niko 回家,两者同时成立。
「… 成功地绕过了“仅有一次机会”的障碍,又把你带了回来。」—— Proto,Solstice(官方中文)

真结局后,标题菜单会多出一个 「. . .」:世界机器会问你要不要看「一段录像」——由它的倒影扮演 Niko,把整个故事重演一遍。

日志页 船上——Niko 与 Proto 载着太阳

角色图鉴

Friends — 数据来自 World Machine Edition 的档案系统与解包语料

考古笔记 · 这座纪念馆是怎么来的

逆向工程摘要 — 所有结论均可在导出数据中复核

商店页写着「RPG Maker XP」,但二进制证据说:RMXP 数据格式 + 定制 mkxp 运行时(内嵌 Ruby 2.5 + SDL2 + OpenAL)+ 自研 C++ 扩展。 Companion 程序 _______.exe 的 PDB 路径泄漏了构建树:…\mkxp-oneshot\journal\w32\Release\journal.pdb。

263张地图
11,294个地图事件
8,099行对话文本
0条战斗指令
111段 Ruby 脚本
62首 BGM / 100.4 分钟
7,119条官方中文翻译
11个 Steam 成就

本站引述的每一句台词,都来自游戏内置的官方简体中文翻译表(crc32(msgid) → msgstr,共 7,119 条);每一张像素图、每一段音乐,都是游戏本体的原始资源。20 万字逆向解析报告与 279 个解码后的数据文件保留在同级目录中。

「没有战斗指令」——事件指令约 6.9 万条里全是脚本化演出:移动路线 11,174、变量操作 3,634、条件分支 2,751。这是一款把「陪伴」写满每一行数据的作品。

年表与制作

2014 → 2026

  1. 2014-06-30 — 原版《OneShot》:Nightmargin 与 Eliza Velasquez 用 RPG Maker 2000/2003 在一个月内做完的免费参赛作。「关窗杀死 Niko」的激进设定从这一刻开始。
  2. 2016-12-08 — 重制版登陆 Steam(AppID 420530):关窗改为存档,元游戏全面升级。RPS 评测写下名场面:「我从未告诉过游戏我的名字。」
  3. 2017-03-27 — 免费更新 Solstice:真结局章节上线,倒计时归零。
  4. 2022-09-22 / 2024-09-30 — World Machine Edition 登陆主机并以独立商品回归 Steam:用「模拟桌面」在主机上复刻元游戏,新增 Friends 档案库。
  5. 2024-07-01 — 十周年番外 The Pancake Episode:免费、无人死亡的咖啡店 AU,Niko 教你做妈妈的松饼。

原作制作(来自游戏内 Credit 角色)

程序 — Eliza Velasquez / Michael Shirt
美术 — Nightmargin (Casey Gu)
角色设计 — Nightmargin;Maize 与 George 的设计 — Eliza Velasquez
音乐 — Nightmargin;追加曲目 — Eliza Velasquez / Michael Shirt
故事机制 — Eliza Velasquez;世界观与编剧 — Nightmargin / Eliza Velasquez / Michael Shirt

评价

Metacritic 80 · OpenCritic 85(94% 推荐)
Steam 好评率 98%(约 3.3 万条)
Steam 页面自带内容警告:部分段落可能引发「偏执感」——这是表扬。

一句话

「你是一个『神』,隔着屏幕指引一只猫耳小孩把『太阳』送回塔顶。但这个世界知道你的存在——而且你只有一次机会。」

尾声

游戏里有一个安静的小机制:watcher_tell_time 会读取你的系统时间,让世界对你说不同的话——早晨、白天、傍晚、深夜,各有各的问候。这里也一样:

「我看到了门另一边的麦田!」—— Niko(官方中文)

愿你有一天亲自走进游戏,替他把灯泡放到那个位置——或者不。那是你的选择,也是这个作品存在的意义。