Communitygithub.com

zriptic/roclicks-skills

為 Roblox 遊戲製作遊戲預告片,從頭到尾一氣呵成。它會根據遊戲的 GAME.md 規劃鏡頭列表,在 Studio 測試中讓角色看起來像真人操作,加入電影運鏡,錄製 Studio 視口,最後用 ffmpeg 剪輯輸出。

roclicks-skills 是什麼?

這是一個專為 Claude Code、Cursor 或 Codex 等 AI Agent 設計的能力(skill),能夠全自動化製作 Roblox 遊戲預告片。它會先閱讀遊戲的 GAME.md 文件,規劃出一份包含鉤子鏡頭、核心玩法、稀有時刻、社交推廣等元素的鏡頭列表。接著,透過自訂的 TrailerDriver.luau 腳本驅動角色以擬真方式在 Roblox Studio 中移動、觸發按鈕與 RemoteEvent,同時 CameraRig.luau 提供推軌、環繞、吊臂、推進與甩鏡等多種電影運鏡選項。錄製僅限於 Studio 的視口區域,並透過 macOS 螢幕錄製工具捕捉。最後,由 edit.py 腳本以 ffmpeg 進行剪輯,支援速度變化、轉場、文字卡片、背景音樂與音量調整,最終輸出 30 秒、1920x1080 的 Roblox 影片縮圖以及 9:16 的 Shorts/TikTok 版本。此能力也包含品質檢查(QA)功能,會透過 contact sheet 檢查影格抖動、黑畫面、凍結畫面等問題。整個流程設計為無需使用「電腦使用」功能,完全依賴 MCP 呼叫、Python 和 ffmpeg 執行。

相容平台~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。在編輯模式下匯入工具包,使用完後移除它,並且絕對不要儲存含有此工具包的 Place。
  • 誠實原則:Roblox 拒絕顯示遊戲未擁有功能、強化圖形或廣告宣稱的影片。在鏡頭前安排實際會發生的結果(例如為一個 Take 強制機率、授予一個道具)是允許的。偽造遊戲無法做到的事情則是不允許的;請改為重新安排鏡頭(請參閱範例中的 Gold→Rainbow 蒙太奇)。
  • 不使用電腦使用功能。 所有操作都透過 MCP eval 呼叫、Python 和 ffmpeg 執行。
  • 保持卡片和文字簡潔(「主題無雜訊」:工具上不要有額外雜訊)。遊戲本身的 UI 就是最好的文字。

工作流程

1. 規劃

閱讀 references/shot-list-template.md。根據遊戲的 GAME.md、FINISHED.md 和原始碼,撰寫鏡頭表格(前 2-3 秒的鉤子、核心循環、稀有時刻、社交互動、基地/進度、一個額外系統、標題卡、僅供社交用的行動呼籲),並在錄製前先展示給使用者看。然後撰寫 <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、尋路、跳躍、人類抖動)、轉向目標、按下 ProximityPrompts(InputHoldBegin/End)、呼叫 Remote 或 Bindable,並在提示或遊戲事件發生時切換攝影機。它的玩家攝影機是一個帶有滑鼠般的延遲跟隨、晃動和輕微掃視的效果。遊戲 HUD 在遊戲操作鏡頭中保持開啟,在電影鏡頭中關閉;Roblox 頂部列、CoreGui 和游標始終關閉。每次執行前都會先停止前一次執行,並在事後恢復所有設定。
  • scripts/CameraRig.luau 提供電影運鏡預設:推軌/曲線/飛越、貝茲曲線、環繞、吊臂、推進、甩鏡(含動態模糊)以及靜態。所有運鏡皆透過 TweenService 曲線進行緩動,並具有可設定的持續時間。
  • 將它們匯入 Studio: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,不含行動呼籲)。執行 --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 的限制,並產生一份 contact sheet。使用 Read 功能打開這份 sheet 並仔細檢查:可能會有遺漏的 Studio 面板、游標或錯誤的 HUD 狀態。然後將剪輯成果(路徑加上 sheet)展示給使用者,並記錄修改意見以進行重新剪輯。重新剪輯只需要執行 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完整工作範例(一個寵物孵化轉蛋遊戲,「🥚 Pet Roll」)

腳本對照表

腳本用途
scripts/TrailerDriver.luau、scripts/CameraRig.luau執行時期(客戶端)
scripts/build_kit.py產生 rbxmx 工具包、eval 程式碼片段、內聯 payload 備援、伺服器端程式碼片段、鏡頭列表
scripts/record.py(record.sh 包裝器)視窗管理、校準、錄製一個鏡頭、拼接、清理
scripts/edit.py建立剪輯、預覽卡片、列出字型
scripts/qa.py片段與最終檢查、contact sheet
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),就像 hatch 鏡頭所做的那樣。
  • 從標籤取得的固定 localOffset 只是初步估算;預計在每個鏡頭的第一次錄製後進行調整。
  • 玩家攝影機無法模擬滑鼠滾輪縮放。請使用 look.dist 在不同的節拍之間改變距離。
  • 伺服器設定無法 require 即時遊戲模組:execute_luau/eval_server_runtime 會獲得一個全新的 require 快取(2026-10-11 在一個寵物孵化遊戲中測得:當玩家已載入時,PlayerState.all() 竟然是空的)。請將設定程式碼放在一個 RunContext=Server 的 Script 中,並匯入到工具包旁邊,這個 Script 會暴露一個 BindableFunction,然後讓 server 程式碼片段透過 :Invoke 來呼叫它。模式:一個 TrailerHook Script(僅限預告片使用,絕不儲存在 Place 中)從遊戲自身的伺服器 VM 內部 require 遊戲自己的模組,並建立 ServerStorage.TrailerHook(BindableFunction,:Invoke(cmd, args) -> (ok, result)),每個設定步驟對應一個小型指令(給予金幣、添加指定等級的道具、讓計時器準備就緒、強制下一次轉蛋的機率、restore)。它會儲存它變更的每個設定值,並在 restore 以及 Script 被銷毀時恢復這些值。請像 build_kit.py 打包工具包一樣,將它打包成一個 .rbxmx 檔案。
  • 在 1470x956 pt 的螢幕上,開啟 Explorer/Properties 面板的 Studio 視口比例約為 1.26:1;請在校準前隱藏面板(或使用檢視 > 全螢幕),否則 16:9 裁切會丟棄約三分之一的畫面。

Individual skills in this repo

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

相關技能