emollick/imminence
GitHub: emollick/imminence
一款基于 three.js 的十分钟网页体验游戏,以程序化生成的丝网印刷视觉风格呈现小镇在终结之夜的氛围叙事。
Stars: 1 | Forks: 0
# IMMINENCE
*一个郊区,在最后一个夜晚*
**游玩:** https://the-imminence.netlify.app
Fairhill 的每个人从小就知道它的到来——就像你预知冬天的降临。
没有人因此而搬走。这一周,全镇都知道是哪个夜晚。在一个
实时的夜晚中(约 10 分钟,且无法暂停),当太阳在天空的另一边落山时,一个巨大的存在降临在
这座小镇(人口 1,214)上空——一种光
取代了另一种光。它不向任何人索取。但在最后
一个夜晚,按照惯例,人们会再去看看那些微小的事物,在它们被收拢之前。
整个世界都是丝网印刷的:奶油色纸张上的三种油墨,以及第四种——一种世间油墨所没有的金色——
它只属于正在降临的事物。光,是透出的纸张。随着夜幕降临,金色不再是油墨,变成了金箔,然后,
它开始从地面自下而上,一片一片地渗透进小镇自身的印刷中。
## 视角
在这里,终结并不是新闻,也没有人发出通知。Fairhill 一直都知道
世界会在当代人的有生之年终结,就像任何小镇预知冬天的到来一样;只有
日期未定,而它的降临就像感知天气一样自然。这就是为什么没有人争吵,为什么
Delgado 先生修剪完草坪,为什么路灯的时间表一直维持到最后,以及
为什么去看微小的事物是一种习俗,而不是一道指令。这个夜晚是按 60 倍速度过的一生:你把时间
花在专注上,到最后,这份专注会回馈于你。你看见了。也被看见了。
## 游玩方式
- **WASD** 行走 · **鼠标** 视角 · **按住 E** 凝视 · **Q** 坐下 · **M** 声音
- 触控操作:屏幕左半边是悬浮摇杆(它会出现在你的拇指下),右半边控制视角,你只需按住 **凝视(SEE)**。
- 你开始时面向落日。另一种光在你身后。
- 凝视是一场对话:被注视的人会回望;洒水器将水流向上弯曲;
汽车收音机与你的钟声和谐共鸣;随着你计数的增加,那个存在以脉动作为回应——而小镇的嗡鸣
每次都会稍微张开它的嘴巴。
- 每个事物都有早期和后期的台词——一旦另一种光升起,同一个邮箱会报告
更奇异的事实。
- 嗡鸣是整个夜晚都在组装的一个和弦:开始是纯粹的八度,接着是黄昏时的五度,
然后是 212 号路灯保持了三十年的 F 音,当每一个头颅都转过身时出现了大三度,
接近尾声时的九度——最后整个和弦向上漂移了
半音,这就是为什么路灯在结束时报告的是升 F。
- 从物品漂浮的时刻起,世间松散的物品——玩具皮球、被丢弃的
自行车、塑料火烈鸟——在升空之前会先发光。
- 结局即是“注视(Regard)”:世界静止不动,一道光环在地面找到了你,
就像你自己的准星一样,然后闭合。被看见了。接着是星座——
每一颗星都是你命名过的一个事物,按照你命名的顺序排列,最后加上额外的一颗。
## 技术
纯 ES modules + 通过 CDN importmap 引入的 three.js 0.169(无构建步骤)。全程序化
生成:基于种子的小镇生成(`?seed=N`),夜晚光照控制器,以及
单次渲染的丝网印刷后期处理 pipeline——场景和深度渲染到一个 target,
一个单独的金色“专色版”根据相同的深度进行渲染,一个 fragment shader
负责完成油墨分离:每个印版的平坦量化覆盖(没有半色调网屏——因为
任何细微的周期性图案在移动的 3D 视角中都会产生微光),深度轮廓线,随着
夜色加深而增加的套印误差,并在你注视时瞬间归位,纸张颗粒,以及
Klimt 金箔及其对暖色印版的渗透。由 WebAudio 合成的
蝉鸣、蟋蟀声、风声、不断演变的嗡鸣声、收音机、脚步声和 FM 钟声。
## 开发辅助工具
- `python serve.py` → http://localhost:8871 (一个禁止缓存的静态服务器;模块缓存
是最大的敌人)
- `?fast=8` — 8 倍速夜晚 · `?seed=123` — 生成不同的 Fairhill · `?t=0.5` — 从
夜晚进度 0.5 开始 · `?touch` — 在桌面端强制开启触控控制
- 控制台:`EM.state() / .skipTo(f) / .tp(x,z) / .look(azDeg,elDeg) / .witness(n) /
.pulse() / .endfast() / .bench() / .shot(w,h,name)`
- 如果有接收端在监听,`EM.shot` 会以 POST 方式将 PNG 图片发送到 `http://localhost:8798/save`。
IMMINENCE 是 [EMINENCE](https://the-eminence.netlify.app) 的第二版——
相同的小镇,相同的夜晚,呈现于不同的媒介。
## License
[MIT](LICENSE)
标签:3D游戏, Web游戏, 互动叙事, 数据可视化, 游戏, 独立游戏, 自定义脚本, 艺术游戏, 逆向工具