ESC
开源 1 分钟阅读

LAST FRAME开源:用MiniMax H3 Max打造AI视频实时生成的"可玩电影"游戏

开源项目LAST FRAME借助fal.ai的MiniMax H3 Max视频模型(速度快于实时)实现"可玩电影"游戏:每个镜头由视频模型实时生成,画面即事实;视觉LLM"裁决者"观看末帧结算HP并给出证据静帧;三个选项在玩家决策期间并行预拍,超时则世界自行推进。配置fal API key即可本地运行。

来源:GitHub

🎬 LAST FRAME

一部可玩的电影。 每个镜头都在你观看的同时生成,视频模型就是骰子:屏幕上发生的就是所发生的事,与你原本的意图无关。你要求跃过峡谷;画面却显示你单手悬挂在崖边?那就是已发生的事实。承受伤害吧。

本项目由 fal + MiniMax H3 Max 驱动——一个速度快于实时的视频模型,正是它让由视频模型渲染的游戏成为可能:在你决策期间选项已提前"开拍",因此一旦选定即可即刻播放。

以下画面来自 THE LOST TAPE(伪纪录恐怖世界)的一次游玩。镜头19:摇椅开始自行晃动,与此同时下一个选项在仍在播放的片段上"拍摄中"。

THE LOST TAPE 镜头19:烛光摇曳的房间里摇椅自行晃动,画面上叠加实时选项面板

镜头26,生命值仅剩5。它不再保持距离了。

THE LOST TAPE 镜头26:雾夜森林中,一个苍白的身影立于烛火之后

规则

  • 100点生命值,只有一条命。 裁决者(Adjudicator,一个观看每个镜头最后一帧的视觉LLM)依据它看到的内容进行裁决并据此向你收费。每次HP变动都附有一张作为证据的静帧,即支撑该判定的画面。
  • 每拍三个选项,或自行输入。 三个选项在你阅读时并行预拍(可以看到录像带标签从 filming 变为 in the can)。手动输入的行动会对照当前画面接受裁定,高风险行动将掷出一个可见的d20骰子:点数决定被拍摄的是成功镜头还是失败镜头。
  • 犹豫,世界就会自行运转。 选择计时器是真实的。任由它走完,世界就会自顾自拍下一个镜头,且绝不会对你有利。
  • 所见即所受。 你的英雄在画面中可见抓取的物体会变成物品卡(附带其来源帧)。每件物品都是一段被存储的提示词片段:装备它,它就必定会被写入你的下一个镜头。
  • 在屏幕上获胜。 每个世界都有一个目标,裁决者必须亲眼看到其达成。死亡会获得一段生成的终场电影;无论结局如何,你都会得到本次游玩的完整时间线,逐镜头呈现,包括每一次掷骰与每一处伤害。

快速开始

npm install
cp .env.example .env.local   # put your fal API key in it
npm run dev

在 fal.ai/dashboard/keys 获取密钥。打开 http://localhost:3000 并选择一个世界。

工作原理

opening (t2v) ──► play ──► ADJUDICATOR rules on the last frame
                   │            (during playback: zero wall-clock)
                   ▼
             freeze-frame choice phase ── 3 branches pre-film in parallel
                   │                          (i2v from the same frame)
        pick / type / timeout
                   ▼
             chosen shot plays (usually already in the can) ──► loop
  • 连续性来自帧,新鲜感来自文本。 每个镜头都从上一镜头的最后一帧(image_url)链接而来,因此影片永不断裂;提示词只描述变化。
  • 裁决者(通过fal的视觉路由调用Gemini Flash Lite)对每个镜头返回严格的JSON:场景事实、旁白、HP增减及理由、物品得失、不超过60词的已完成事实梗概、死亡/胜利标志、接下来的三个选项,以及你停滞时世界的行动。它在片段播放期间运行,因此判定不占用任何等待时间。
  • **裁判(Referee)**对照画面判定手动输入的行动:风险等级(safe / risky ≥8 / deadly ≥13,d20掷骰),外加一个成功镜头和一个失败镜头。内容审核(严格的ALLOW/BLOCK、抗注入加固、fail-closed)在服务器端并行运行。
  • 分支预生成是让它玩起来像游戏的关键技巧:选择阶段就是生成窗口。三个分支全部从冻结帧并行展开;一旦选定,立即播放。
  • 你的 FAL_KEY 始终保留在服务器端(@fal-ai/server-proxy),片段通过同源媒体代理流式传输,因此canvas抓帧不会触发CORS问题。

成本说明

一次游玩在每个选择点拍摄约3个分支片段外加1个播放镜头(均为480P / 10秒),另外每拍还有两次小型LLM调用。请留意你的fal用量;死亡是停止消耗的最便宜方式。