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游戏, 互动叙事, 数据可视化, 游戏, 独立游戏, 自定义脚本, 艺术游戏, 逆向工具