Skip to content
shangshang21Public

About

游戏化叙事的前端实验:侦探追查神秘组织,所有线索都指向一个没有名字的人。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

Repository files navigation

████

标题故意留白。代号 black-box。

一个游戏化叙事的前端实验:一个纯静态、不需要构建的网页。访客扮演一名侦探,骇入一个神秘组织的内部系统,顺着已知成员留下的线索往下查。线索一层层收拢,指向同一个没有名字的人,而访客一路上看到的一切,都是那个人早就准备好的。

它跟任何真实系统都没有连接。最初的构思是给一个已经停用的 AI 交易项目做前端,后来只保留了"故事"和"视觉"两件事。

在线体验: https://shangshang21.github.io/black-box/v2/(桌面浏览器效果最好;手机竖屏也做了适配)

首页 · Luna 首页 · Hound
首页 · 武器大师 嫌疑人列队

现在有什么(第二轮,v2/)

首页: 一面涂鸦墙,三位成员里随机站出一位(每次打开不同,不会连续重复),像登场动画里的"神秘 boss"。墙上贴着二十多张小分镜和四张撕纸海报,每次打开从 30 张分镜里抽不同的,位置也会微微抖动。人物手里握着一根红线,垂到地上、拖向屏幕外;鼠标移到 ENTER 上,他们"放线",红线绷到按键上;点下去,画面沿着这根红线被撕开,露出下一页。

嫌疑人列队: 同一面墙,镜头走近。主角先被收在一张漫画分镜里,再通过各自的动作突破纸框:拉线切开、掀角跃出、斩开分镜。透明人物、分镜纸片、投影、接触阴影、倒影、红线和档案卡独立分层,形成前后景深;另外两位成员保留在可切换的小海报上。三位成员的档案都看完之后,第四张轮廓海报才出现。手机竖屏采用可滚动的单列布局。

第七轮列队页:漫画分镜突破与分层景深

列队,桌面 第四个人出现 手机竖屏

藏起来的东西("蜜罐")

整个站点本身就是一个蜜罐:访客以为自己在骇入,其实这个系统是为他搭的。伏笔藏在细节里,第一遍看像小 bug,看完再回想全是线索:

  • ACCESS GRANTED 在破解进度条走完之前就亮了:门本来就开着。
  • 每份档案的"最后修改时间",永远是你打开它之前 3 秒。点一下这个时间,会多出一行 OPENED,两者刚好差 3 秒。
  • 第二次来访,页面会先对你说一句「你又来了。」(只用浏览器本地存储,不上传任何东西)。
  • 每份档案翻起右下角,纸背都有同一对订书钉的痕迹。
  • 档案卡翻角、红线尾巴上那枚小图钉,都可以点。
  • 在首页按 P,墙面会静悄悄地换成另一幅涂鸦(没有任何提示,找到的人才知道)。

操作

首页 鼠标移动:视差;移到 ENTER:红线绷紧;点击:撕开进入
列队页 点小海报或底部 01 / 02 / 03 切换成员;方向键也可以;BACK 回首页;手机上左右滑动切换
开发用网址参数 ?c=luna|hound|smith 指定首页角色;?plate=e..l 指定墙面;?btn=a|b|c 换 ENTER 按键样式

运行

纯静态,不需要构建,不依赖任何外部网络(动画库和字体都已放进仓库)。

python3 serve.py        # 带 no-cache 头的静态服务器,默认端口 3200

然后打开 http://localhost:3200/v2/。第一轮的三个概念切片还在根目录(index.html、b-noir.html 等),见 docs/NOTES.md。


怎么做的

想看 去哪
整个项目是怎么一轮一轮做出来的:设计决定、被推翻的方案、AI 分工和交叉评审的流程 docs/PROCESS.md
技术细节:图层结构、红线的物理、撕开转场、抠图流水线、性能排查(从 23 帧到 60 帧) docs/TECHNICAL.md
故事设定、设计原则、第一轮的反馈和灵感 docs/NOTES.md

一句话版本:

  • 美术由图像模型(GPT)生成,再用代码"贴"到页面上:背景墙、人物、分镜、海报都是图;字体排版、UI、动效、物理全是代码。
  • 美术指导和集成由 Claude 负责;第二页(列队页)的施工交给 GPT 的编码模型,两边先互相提意见再动手。
  • 抠图用"品红底 + 色键":让模型把东西画在纯品红 #FF00FF 上,再用 tools/chroma-key.py 抠成透明,头发丝之间的缝隙也能抠干净。
  • 性能用 Chrome 调试协议实测(tools/perf.mjs),按 Retina 分辨率逐项关掉怀疑对象,而不是凭感觉。

目录

v2/                 第二轮:首页 + 嫌疑人列队(当前版本)
  index.html        首页的结构和样式、ENTER 的撕开转场
  scene.js          首页场景:分层、红线(Verlet 绳子)、分镜墙、视差、微动
  hub.js hub.css    嫌疑人列队
  finale.js finale.css  04 黑屋搜索、成员光纸汇报、持线人的最终回应
  sfx.js            用 WebAudio 合成的轻微音效(没有音频文件)
  fonts/ fonts.css  自托管字体(拉丁字母 + 中文子集)
  vendor/           GSAP(动画库)
  assets/           墙面、人物、海报、分镜、胶带贴纸
tools/              抠图、拆图、字体子集、截图、帧率测量等脚本
docs/               文档和截图
serve.py            开发服务器
a-*.html b-*.html c-*.html index.html shared/   第一轮的三个概念切片

已知的不足

  • 列队页的墙比首页更灰、更雾(压暗那一层偏重)。
  • 窄屏上中文笔记偶尔会留下一个字单独成行。
  • 列队页里的红线是画出来的路径,不像首页那样有物理。
  • 点 ENTER 撕开的那一刻,偶尔会有一帧 50–150 毫秒的停顿。
  • 04 的结局已完成:黑屋搜索 → 拉线 → 成员的光纸汇报 → 持线人的回应。藏着的东西不在这里说明。

致谢与许可

  • 动画库:GSAP 3.15(GreenSock "no charge" 许可)。
  • 字体:Anton、Space Mono、Noto Serif SC,均为 SIL Open Font License。
  • 图片素材由图像模型生成。视觉上受《女神异闻录5》的 UI 语言、《Framed》的分镜叙事启发,没有使用任何它们的素材。

About

游戏化叙事的前端实验:侦探追查神秘组织,所有线索都指向一个没有名字的人。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages