物理 + 渲染 + 游戏:光速很慢的战斗游戏——由 Claude Fable 构建
摘要
一个使用Claude Fable构建的战斗游戏演示,其中人为地减慢光速,从而产生光延迟和光行差等相对论视觉效应。实现方式采用顶点着色器,结合相机姿态历史记录,为每个顶点计算延迟位置。
由于Fable的限制相当严格,游戏是测试它的绝佳方式。我觉得这会是一个有趣的演示,因为它的独特性使得它在任何意义上都无法被“跑分优化”。有趣的是,当玩家似乎消失时,是因为他们退出了你能看到的“入射光子”气泡。对于想知道使用情况的各位,我最近重新启动了专业版计划(不确定他们是否为重启计划的人提升使用限制),但在5小时内,我在Claude Code中通过Fable消耗了约25万token。编辑补充:有趣的是,如果你以超光速移动,实际上你还能看到自己身后?如果你对演示的技术方面感到好奇,以下是Fable解释的摘录。
## 静态几何模型(本演示的核心)
我们采用简报中建议的“延迟相对位置”近似方法,由记录的**相机姿态历史** \(C(t)\) 驱动:
```
t_emit = now − |P − C_now| / c (优化一次:用 C(t_emit) 重新计算)
P_apparent = C_now + (P − C(t_emit)) = P + (C_now − C(t_emit))
```
即,你看到的每个表面点**位于其光线离开时相对于你的位置**。
属性:
- 静止相机 ⇒ \(C(t_emit) = C_now\) ⇒ 零偏移 ⇒ 房间完全正常渲染。该效果仅在观察者运动时出现,且缩放因子为 \(v/c\) —— 符合要求。
- 匀速运动 ⇒ 表观位置朝运动方向偏移约 \(≈ v·D/c\)(距离 \(D\) 处)—— 一阶近似即为伽利略光行差(表观方向 \(≈ normalize(c·ŝ + v)\))。
- 加速/停止 ⇒ 偏移**不是**一个纯粹的速率项,而是对实际记录轨迹的积分,因此世界在你停止后会明显晃动并逐渐稳定,距离越远滞后越明显。这种瞬态现象是效果最引人注目的部分,无法用纯瞬时速度后处理实现。
实现方式:一个512条目、20Hz的环形缓冲区(存储相机位置)放置于1×512 RGBA32F纹理中。静态地图的**顶点着色器**计算每个顶点的偏移(两次历史获取 + 一次优化迭代)并移动顶点;片元着色(程序化纹理、雾)继续使用**原始**世界位置,确保材质不漂移。地图网格细分为约0.5米四边形,使弯曲表面平滑。对弯曲网格进行光栅化也会生成**弯曲的深度缓冲区**,从而自动保持动态对象的遮挡一致性。开销:每个顶点少量ALU运算和4–6次纹理采样 —— 相对于光线追踪而言几乎可以忽略。在传送(重置、相机模式切换)时,历史缓冲区被新位置填充;否则渲染器会将该跳跃解释为虚假的快速移动,导致世界剧烈晃动。按 `G` 键可禁用偏移,以便对同一场景进行对比。
相似文章
@mattshumer_: 对于所有抱怨速度慢的人,我运行了提示词‘make it faster, without losing quality’,然后瞧见:
Matt Shumer 展示了 Fable,一个基于 ThreeJs 的自定义 3D 世界构建工具,在浏览器中运行,通过提示词调优来加速性能,以回应速度抱怨。
给Fable一个提示:“构建一个.kkrieger的Linux致敬版本。”它在一个C文件中交付了一个51KB的程序化FPS——然后通过截取其无头渲染的截图并实际查看来进行调试
一位开发者用单个C文件创建了一个完全程序化生成的致敬.kkrieger的第一人称射击游戏,生成了一个51KB的二进制文件,在运行时合成所有资产,并通过无头截图进行了验证。
像1993年那样制作图形
一位开发者详细介绍了如何构建《Catlantean 3D》——一款采用1993年时代图形技术(256色、320x240分辨率、手工制作资产、无人工智能)的第一人称射击游戏,计划在Steam上发布,重点讲解调色板渲染和资产创建。
@PrajwalTomar_: 你不明白这有多重要。现在你可以给Higgsfield一个游戏概念...然后将其连接到Claude Fable 5..…
由Claude Fable 5驱动的Higgsfield现在能够通过单个提示构建和部署多人游戏,让独立开发者能在几分钟内创建包含世界、控制、HUD和物理的完整游戏。
寓言创作:单次生成的复古3D冰球多人(在线)游戏……哇。
一个AI模型仅用30万token、22分钟便单次生成了一款复古3D冰球多人联机游戏,且完全在浏览器中运行。