发布于 约 4 分钟读完 · 1,403 字

本文目录 10 节
  1. 一句话
  2. 为什么不录屏、不让 AI 画
  3. 如何使用
  4. 1. 录制副本,不碰真项目
  5. 2. 驱动脚本的几个件
  6. 3. 取景与输出
  7. 4. 本片踩过的时机坑
  8. 5. 顺带的用法
  9. 边界
  10. 关联文档

游戏宣传片实录:引擎逐帧录制与脚本代打

入档:2026-09-29 来源:77《右下角的池塘》G01–G11 游戏镜头,{aigc-creative-archive}/77_工位池塘_微电影宣传片/06_剪辑/游戏录制/(录制.py 与 录制驱动.gd) 验证状态:⚠️首次(一个 Godot 项目、11 个镜头);作者接受了全部实录镜头

一句话

给自己的游戏拍宣传片,游戏画面既不要录屏,也不要交给 AI 画。

做法:用引擎自带的离线逐帧录制(Godot --write-movie),在项目副本里挂一个驱动脚本替你玩;每个镜头先写一份演示存档,再按时间表操作。

好处:

  • 画面逐帧确定,像素清晰,音画同步。
  • 剪辑时长改了可以重录对齐。
  • 片子里演的都是游戏真实会发生的事。

为什么不录屏、不让 AI 画

  • AI 画:会画出游戏里没有的东西。封面试过让 Lib Image 叠排,它把界面里的“森林”改成了“日林”、“水族馆”改成了“水池塘”。宣传片给出的是承诺,画错一个机制就是虚假宣传。
  • 实时录屏:帧率不稳,每次操作的时机不可复现,弹窗早一点晚一点就对不上剪辑点,想改时长只能再手动玩一遍。
  • Movie Maker 离线渲染:按固定帧率逐帧出 PNG + WAV,和实际运行速度无关。同一份存档、同一个种子、同一个时间表,每次都录出同样的结果。

如何使用

1. 录制副本,不碰真项目

  • git archive 导出当前提交到 _build/(不入库),只在副本里改三处:
    • 项目名:Godot 的 user:// 跟着项目名走,改名后存档写到独立目录,不会覆盖真实存档。
    • 窗口倍率:设计尺寸 640×520 × 3。命令行的 --resolution 被项目设置覆盖,不生效,要改副本的窗口设置。
    • 挂 autoload 驱动脚本。
  • 录的是哪个提交要记下来(本片是 0dd77ad,和线上 Toy 同一个版本)。
  • ⚠️ 在真实项目上跑任何带 --quit-after 的测试,都要先把 APPDATA 指到临时目录(Windows 上 user:// 在它下面)。本片曾有一次没隔离,初始化了本机的真实存档。

2. 驱动脚本的几个件

  • at(秒, 动作):按时间表排操作。开头留 1 秒前置,第一帧不是冷启动的画面。
  • 真实输入:点击、拖拽一律用 push_input 送鼠标事件,走游戏本来的代码路径,不直接改状态。
  • 演示存档 _save_for(镜头):每个镜头一份,贝壳数、缸里的布置、已解锁的东西都写死。
    • 例:G04 要“树长一截”,存档里的成长值要调到临界点。
    • 例:G08 要里程碑鱼,存档里要有对应的年度记录。
  • 钓获不作假:想让下一杆钓到指定的鱼,就按游戏的权重表反推一个随机种子,塞进游戏自己的 RNG。结果仍由游戏本来的抽取代码产生。
  • 访客按真实条件来:六角恐龙的到访条件是沉木 ×1 + 苔藓球 ×2。存档里把这些摆好,让它在专注完成时自然到访,不直接生成。
  • 打时间标记:MARK_T0 / MARK_END 打印帧号,剪辑时据此从录下的 WAV 里取游戏原声,包括切点前的前置段,做交叉淡化用。

3. 取景与输出

  • 按镜头定取景:在设计坐标里取 16:9 的框,整数倍放大(最近邻),保住像素锐利;弹窗、分享卡这类要看全的画面,整窗按高度缩放。
  • 输出 1920×1080 的 mp4,加一条同步 WAV。剪辑脚本发现实录文件,就自动替换占位卡。
  • 时长直接读剪辑配置,时长先对齐到整帧(否则一帧一帧地漂)。改了剪辑时长就重录。

4. 本片踩过的时机坑

  • 专注完成的弹窗出来早了,盖住了要看的东西:把“进入专注”的动作提前到 at(-0.7)。
  • 点水面喂鱼,结果点到了鱼身上,触发的是“看鱼”:改成取一个没有鱼的水面点。
  • 说明字幕会盖住画面主体:取景时就给字幕留出位置,或者把字幕放到顶部。

5. 顺带的用法

  • 布局截图测试:同一个“副本 + autoload 驱动 + 隔离存档”的套路,加上 --web-layout --web-size=400x870,就能在桌面上复现手机竖屏布局,逐状态截图对比。本片发布后修手机布置模式,就是这样先复现、再验证的。
  • 发布文案的钩子:简介里写了一句“为了拍这条,我给自己的游戏写了个脚本替我玩(它比我专注)”。

边界

  • 只在 Godot 4.7 上做过;Unity、Unreal 有各自的离线录制方式,思路相同,接口不同。
  • 驱动脚本依赖游戏内部的函数名和节点结构,游戏一改就可能要跟着改。
  • 实时联网、物理不确定的游戏,同一个种子不一定能复现同一个画面。

关联文档

类型/IP视觉主题/游戏实录