物理 + 渲染 + 游戏:光速很慢的战斗游戏——由 Claude Fable 构建

Reddit r/singularity 工具

摘要

一个使用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` 键可禁用偏移,以便对同一场景进行对比。
查看原文

相似文章

像1993年那样制作图形

Hacker News Top

一位开发者详细介绍了如何构建《Catlantean 3D》——一款采用1993年时代图形技术(256色、320x240分辨率、手工制作资产、无人工智能)的第一人称射击游戏,计划在Steam上发布,重点讲解调色板渲染和资产创建。