Communitygithub.com

zriptic/roclicks-skills

为 Roblox 游戏制作游戏预告片,覆盖从策划到最终导出的全流程。它根据游戏的 GAME.md 规划镜头列表,在 Studio 测试中驱动角色使其看起来像真人手玩,添加电影级摄像机运镜,录制 Studio 视口并编辑成片。

roclicks-skills 是什么?

该技能为 Roblox 游戏构建完整的预告片制作流水线。它首先读取游戏的 GAME.md 文件,生成一份包含开场钩子、核心玩法、稀有事件、社交元素等的镜头列表,并写入 `shots.json`。录制阶段,`TrailerDriver.luau` 在 Studio 测试客户端中自动操控角色行走、触发交互、切换摄像机,模拟真实的玩家操作;`CameraRig.luau` 则提供推拉、摇移、环绕、升降等电影级运镜预设。录制仅通过 macOS 屏幕捕获精确截取 Studio 视口,避免显示光标或多余 UI。后期使用 ffmpeg 进行速度变化、转场、文字卡片、背景音乐自动混音和响度标准化,最终输出符合 Roblox 上传要求的 30 秒 1920×1080 横版视频以及 9:16 竖版 Shorts/TikTok 剪辑。质量检查阶段会检查黑帧、冻帧、光标残留等问题并生成联系表供人工审核。该技能适用于所有主流 Agent 平台(Claude Code、Cursor 等),通过 MCP 与 Studio 交互,完全不依赖计算机使用(Computer Use)模式。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/zriptic/roclicks-skills/tree/HEAD/roblox-trailer

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Roblox 预告片

SK=<此技能文件夹的路径>。该技能所构建的简要目标:“录制它,让它看起来像我在玩,并且也剪辑好它。” 每个游戏的所有文件都存放在 <game>/trailer/ 中:shots.json、clips/、out/。脚本是通用的,所有游戏特定的名称(标签、Remote、提示文本、物品 ID)都放在 shots.json 中。

基本规则(请先阅读)

  • 它录制用户的真实屏幕。 录制前,通过聊天告知用户保持 Studio 在最前面且不被遮挡,将鼠标移出游戏视图,在你说完成之前不要触碰电脑,并获得用户的确认。仅录制校准后的视口区域。使用 record.py clean 删除测试和弃用的片段。切勿使用 -C(光标)。
  • Studio 礼仪:为此使用一个 Studio MCP 服务器(基于社区 robloxstudio 服务器编写,而非内置的 Roblox_Studio 服务器)。在开始测试前,检查是否有其他 Agent 正在使用 Studio。在编辑模式下导入工具包,之后移除,并且永远不要保存带有该工具包的位置。
  • 诚实:Roblox 拒绝显示游戏不具备的功能、增强图形或广告声明的视频。在镜头前安排哪个真实结果发生(为一次拍摄强制改变概率、授予物品)是可以的。伪造游戏无法做到的事情是不允许的;应重新构建镜头(参见示例中的 Gold→Rainbow 蒙太奇)。
  • 不使用计算机使用(Computer Use)功能。 所有操作都通过 MCP eval 调用、Python 和 ffmpeg 完成。
  • 保持卡片和文字简洁(“主题而不杂乱”:工具上没有额外的噪音)。游戏自身的 UI 是最好的文字。

工作流程

1. 规划

阅读 references/shot-list-template.md。根据游戏的 GAME.md、FINISHED.md 和源代码,编写镜头表格(前 2-3 秒的钩子、核心循环、稀有事件、社交元素、基础/进度、一个额外系统、标题卡片、仅用于社交的 CTA)并在录制前展示给用户。然后编写 <game>/trailer/shots.json(模式见 references/luau-api.md;从 assets/shots.template.json 开始,或参考 references/example.shots.json 的完整示例)。python3 $SK/scripts/build_kit.py list --shots <shots.json> 汇总原始素材的总时长。

2. 游戏主视角和电影级镜头(Luau)

  • scripts/TrailerDriver.luau 在测试客户端上运行一个镜头:将角色传送到起始姿势,禁用键盘控制,沿着航点行走(Humanoid:MoveTo、寻路、跳跃、人物抖动),转向面对目标,按下 ProximityPrompt(InputHoldBegin/End),调用 Remote 或 Bindable,并根据提示或游戏事件切换摄像机。其玩家摄像机是具有鼠标式漂移、震颤和扫视功能的延迟跟随。游戏 HUD 在游戏玩法镜头中保持开启,在电影镜头中关闭;Roblox 顶部栏、CoreGui 和光标始终关闭。每次运行都会先停止之前的运行并在之后恢复所有内容。
  • scripts/CameraRig.luau 包含电影级预设:推轨/样条/飞越、贝塞尔曲线、环绕、升降、推进(含运动模糊)和静态。所有预设都通过 TweenService 曲线进行了缓动,并具有可配置的持续时间。
  • 获取它们:build_kit.py rbxmx → 导入到 ReplicatedStorage(编辑模式)→ 启动测试 → 使用 eval_client_runtime 发送 build_kit.py call --shot ID。如果镜头包含设置,则先使用 eval_server_runtime 运行 build_kit.py server --shot ID。详细信息和完整操作列表见 references/luau-api.md。

3. 录制

参考 references/recording.md。简而言之:首先运行一次 record.py calibrate(驱动程序将视口绘制为青色,脚本找到它),然后为每个镜头运行 record.py shot ID --start-ms <startsAtMs> --dur <dur>。它会等待驱动程序计划的开始时间,录制预卷 + 镜头 + 尾部(仅视口),并存储精确的修剪偏移量。如果屏幕录制不可用,record.py stitch 会将保存的 capture_screenshot 帧转换为片段。

4. 编辑

参考 references/editing.md。edit.py build --cut roblox --format landscape 制作 Roblox 上传版本(最长 30 秒,1080p60 H.264,无 CTA)。--cut social --format both 制作 16:9 加 9:16 两个版本。文本使用 Pillow 绘制,因为 Homebrew 的 ffmpeg 可能没有 drawtext 功能。如果未安装 Fredoka One 字体,请在下载到 assets/fonts/ 之前询问用户;它会回退到 Arial Rounded Bold。

5. 质量检查

录制后运行 qa.py clips --shots ...;编辑后运行 qa.py final <mp4> --roblox。它检查丢帧、黑帧和冻帧、Studio UI 边缘条带、光标标志以及 Roblox 限制,并生成联系表。用阅读工具打开联系表并查看它:任何杂散的 Studio 面板、光标或错误的 HUD 状态都会显示在那里。然后向用户展示剪辑版本(路径及联系表)并记下重新剪辑的备注。重新剪辑仅需运行 edit.py。

6. 清理

停止测试,删除 ReplicatedStorage.TrailerKit,运行 record.py clean --out <trailer> --shots <shots.json>,并删除 <trailer>/build/。保留 clips/(原始素材)和 out/。

参考文件映射

文件何时阅读
references/shot-list-template.md规划阶段;将 GAME.md 转换为镜头
references/luau-api.md编写 shots.json;驱动器和摄像机云台的 API;目标、操作、触发器、预设
references/recording.md首次拍摄前;校准、同步、回退方案、双玩家镜头
references/editing.md编辑模块、转场、卡片、字体和表情符号、音频、竖版视频
references/roblox-video-specs.mdRoblox 上传限制和内容规则,附带来源
references/worked-example.md + example.shots.json完整工作示例(一个宠物孵化滚动游戏,“🥚 宠物滚动”)

脚本

脚本用途
scripts/TrailerDriver.luau, scripts/CameraRig.luau运行时(客户端)
scripts/build_kit.pyrbxmx 工具包、eval 代码片段、内联载荷回退、服务器代码片段、镜头列表
scripts/record.py(record.sh 封装)窗口、校准、镜头、拼接、清理
scripts/edit.py构建剪辑版本、预览卡片、列出字体
scripts/qa.py片段和最终检查、联系表
scripts/check_luau.sh使用 Roblox 全局变量前导进行 luau-analyze(无需安装 Roblox 类型定义即可运行)

修改脚本后验证:python3 -m py_compile $SK/scripts/*.py 和 $SK/scripts/check_luau.sh $SK/scripts/*.luau。

已知缺陷(遇到时在此修复)

  • 驱动程序无法点击 GUI 按钮。可使用按钮调用的 Remote(invoke),如同孵化镜头的做法。
  • 从标签获取的固定 localOffset 是首次猜测;预计在每次镜头的首次拍摄后需要进行调整。
  • 玩家摄像机不支持鼠标滚轮缩放。可使用 look.dist 在节拍之间改变距离。
  • 服务器设置无法 require 实时游戏模块:execute_luau/eval_server_runtime 获取的是全新的 require 缓存(2026-10-11 在宠物孵化游戏上实测:PlayerState.all() 在玩家已加载时仍为空)。将设置放在一个 RunContext=Server Script 中,该脚本在工具包旁边导入,并暴露一个 BindableFunction,让 server 代码片段 :Invoke 它。模式:一个 TrailerHook 脚本(仅用于预告片,从不保存在位置中),该脚本从游戏服务器 VM 内部 require 游戏自身的模块,并创建 ServerStorage.TrailerHook(BindableFunction,:Invoke(cmd, args) -> (ok, result)),为每个设置步骤提供一个小的命令(给予金币、添加指定稀有度的物品、使计时器就绪、强制下一次滚动的概率、restore)。它会保存它更改的每个配置值,并在 restore 和脚本被销毁时恢复它们。使用与 build_kit.py 打包工具包相同的方式将其打包成一个 .rbxmx。
  • 在 1470x956 pt 屏幕上,带有 Explorer/Properties 面板的 Studio 视口比例约为 1.26:1;在校准前隐藏面板(或通过 View > Full Screen 进入全屏),否则 16:9 裁切会丢弃三分之一的画面。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能