Communitygithub.com

zriptic/roclicks-skills

Erstelle Gameplay-Trailer für Roblox-Spiele – von der Planung über die Aufnahme bis zum fertigen Schnitt.

Was ist roclicks-skills?

Diese Fähigkeit ermöglicht es einem KI-Agenten, vollständige Gameplay-Trailer für Roblox-Spiele zu erstellen. Sie deckt den gesamten Workflow ab: Planung einer Shot-Liste basierend auf der Spielbeschreibung (GAME.md), Steuerung eines Charakters in einer Studio-Playtest-Session mit menschlicher Bewegung (TrailerDriver.luau), Hinzufügen von filmischen Kamerafahrten (CameraRig.luau unterstützt Dolly, Orbit, Kran, Push-In und Whip-Pans synchron zu Spielereignissen), Bildschirmaufnahme des Studio-Viewports mit macOS Screencapture und finaler Schnitt mit ffmpeg (Speed Ramps, Überblendungen, Titelcards mit Emoji, Musik mit Ducking und Loudnorm). Das Skill exportiert sowohl ein 30-sekündiges 1920×1080 Video-Thumbnail für Roblox als auch ein 9:16-Format für Shorts/TikTok und führt eine Qualitätssicherung mit Kontaktabzug durch. Es wird immer dann eingesetzt, wenn der Nutzer einen Trailer, ein Promo-Video, ein Gameplay-Video, ein Video-Thumbnail, einen Teaser, einen TikTok- oder YouTube-Shorts für ein Roblox-Spiel anfordert, oder wenn er darum bittet, das Spiel „aufzunehmen“, „es so aussehen zu lassen, als würde ich selbst spielen“, „ein Video des Spiels zu schneiden“ oder eine filmische Durchfliege im Studio zu filmen.

Funktioniert mit~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/zriptic/roclicks-skills/tree/HEAD/roblox-trailer

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Roblox-Trailer

SK=<Pfad zu diesem Skill-Ordner>. Das Briefing, für das dieser Skill entwickelt wurde: "Nimm es auf, lass es aussehen, als würde ich spielen, und schneide es auch." Alles spielspezifische lebt in <game>/trailer/: shots.json, clips/, out/. Die Skripte sind generisch, und jeder spielspezifische Name (Tags, Remotes, Prompt-Text, Item-IDs) befindet sich in shots.json.

Grundregeln (zuerst lesen)

  • Es zeichnet den echten Bildschirm des Nutzers auf. Sage dem Nutzer vor der Aufnahme im Chat, Studio im Vordergrund und unverdeckt zu lassen, die Maus außerhalb des Spiel-Views zu parken, den Computer nicht zu berühren, bis du fertig bist, und hole sein OK. Nimm nur den kalibrierten Viewport-Bereich auf. Lösche Test- und versehentliche Takes mit record.py clean. Verwende niemals -C (Cursor).
  • Studio-Etikette: Verwende einen Studio-MCP-Server für diesen Zweck (geschrieben gegen den Community-robloxstudio-Server, nicht den eingebauten Roblox_Studio). Prüfe vor dem Starten eines Playtests, dass kein anderer Agent Studio verwendet. Importiere das Kit im Edit-Modus, entferne es danach und speichere den Ort niemals mit dem Kit.
  • Ehrlichkeit: Roblox lehnt Videos ab, die Funktionen zeigen, die das Spiel nicht hat, verbesserte Grafik oder Werbeaussagen. Es ist in Ordnung, zu inszenieren, welches echte Ergebnis vor der Kamera passiert (Wahrscheinlichkeiten für einen Take erzwingen, einen Gegenstand gewähren). Etwas vorzutäuschen, was das Spiel nicht kann, ist nicht erlaubt; strukturiere stattdessen den Shot um (siehe die Gold→Regenbogen-Montage im Beispiel).
  • Keine Computer-Use. Alles läuft über MCP-Eval-Aufrufe, Python und ffmpeg.
  • Halte Karten und Text sparsam ("Theme without noise": kein zusätzliches Rauschen durch Werkzeuge). Die eigene UI des Spiels ist der beste Text.

Workflow

1. Planen

Lies references/shot-list-template.md. Schreibe aus der GAME.md, FINISHED.md und dem Quellcode des Spiels die Shot-Tabelle (Hook in den ersten 2–3 s, Kern-Loop, seltener Moment, Soziales, Basis/Progression, ein zusätzliches System, Titelcard, ein CTA nur für Soziales) und zeige sie dem Nutzer vor der Aufnahme. Schreibe dann <game>/trailer/shots.json (Schema in references/luau-api.md; beginne mit assets/shots.template.json oder references/example.shots.json für ein vollständiges Beispiel). python3 $SK/scripts/build_kit.py list --shots <shots.json> summiert das Rohmaterial.

2. Gameplay-POV und filmische Shots (Luau)

  • scripts/TrailerDriver.luau führt einen Shot auf einem Playtest-Client aus: Teleport zur Startpose, Deaktivieren der Tastatursteuerung, Ablaufen von Wegpunkten (Humanoid:MoveTo, Pathfinding, Sprünge, menschliches Zittern), Drehen zu Zielen, Drücken von ProximityPrompts (InputHoldBegin/End), Aufrufen von Remotes oder Bindables und Wechseln der Kamera auf Befehl oder bei Spielereignissen. Die Spieler-Kamera ist eine träge Verfolgung mit mausähnlichem Drift, Zittern und Blicken. Das HUD des Spiels bleibt bei Gameplay-Shots an und bei filmischen Shots aus; die Roblox-Oberleiste, CoreGui und der Cursor sind immer aus. Jeder Lauf stoppt zuerst den vorherigen und stellt alles danach wieder her.
  • scripts/CameraRig.luau hat die filmischen Presets: Dolly/Spline/Flyover, Bezier, Orbit, Kran, Push-In, Whip (mit Bewegungsunschärfe) und statisch. Alle werden über TweenService-Kurven eingeleitet und haben konfigurierbare Dauern.
  • Einbinden: build_kit.py rbxmx → import_rbxm in ReplicatedStorage (Edit-Modus) → Playtest starten → build_kit.py call --shot ID mit eval_client_runtime senden. Führe build_kit.py server --shot ID mit eval_server_runtime zuerst aus, wenn der Shot Setup erfordert. Details und die vollständige Aktionsliste: references/luau-api.md.

3. Aufnehmen

references/recording.md. Kurz: record.py calibrate einmal (der Treiber färbt den Viewport cyan und das Skript findet ihn), dann für jeden Shot record.py shot ID --start-ms <startsAtMs> --dur <dur>. Es wartet auf den geplanten Start des Treibers, nimmt Preroll + Shot + Nachlauf nur des Viewports auf und speichert den genauen Trim-Offset. Wenn Bildschirmaufnahme nicht verfügbar ist, verwandelt record.py stitch gespeicherte capture_screenshot-Frames in einen Clip.

4. Schneiden

references/editing.md. edit.py build --cut roblox --format landscape erstellt den Roblox-Upload (max. 30 s, 1080p60 H.264, kein CTA). --cut social --format both erstellt 16:9 plus 9:16. Text wird mit Pillow gezeichnet, weil Homebrews ffmpeg möglicherweise kein drawtext hat. Wenn Fredoka One nicht installiert ist, frage vor dem Herunterladen in assets/fonts/; es fällt auf Arial Rounded Bold zurück.

5. Qualitätssicherung

qa.py clips --shots ... nach der Aufnahme; qa.py final <mp4> --roblox nach dem Schnitt. Es prüft auf verwackelte, schwarze und eingefrorene Frames, Studio-UI-Bänder an den Rändern, das Cursor-Flag und die Roblox-Limits und erstellt einen Kontaktabzug. Öffne den Abzug mit Read und schau ihn dir an: Ein versehentliches Studio-Panel, ein Cursor oder der falsche HUD-Zustand sind dort sichtbar. Zeige dann dem Nutzer den Schnitt (Pfad plus Abzug) und notiere dir Punkte für einen Neuschnitt. Für Neuschnitte braucht es nur edit.py.

6. Aufräumen

Stoppe den Playtest, lösche ReplicatedStorage.TrailerKit, führe record.py clean --out <trailer> --shots <shots.json> aus und entferne <trailer>/build/. Behalte clips/ (das Quellmaterial) und out/.

Referenzkarte

DateiWann lesen
references/shot-list-template.mdPlanung; GAME.md in Shots umwandeln
references/luau-api.mdSchreiben von shots.json; Treiber- und Rig-API; Ziele, Aktionen, Auslöser, Presets
references/recording.mdVor dem ersten Take; Kalibrierung, Synchronisation, Fallbacks, 2-Spieler-Shots
references/editing.mdSchnittblock, Übergänge, Karten, Schriftarten und Emoji, Audio, vertikal
references/roblox-video-specs.mdRoblox-Upload-Limits und Inhaltsregeln mit Quellen
references/worked-example.md + example.shots.jsonVollständiges durchgearbeitetes Beispiel (ein Haustier-Schlüpf-Spiel, "🥚 Pet Roll")

Skripte

SkriptZweck
scripts/TrailerDriver.luau, scripts/CameraRig.luauLaufzeit (Client)
scripts/build_kit.pyrbxmx-Kit, Eval-Snippets, Inline-Payload-Fallback, Server-Snippets, Shot-Liste
scripts/record.py (record.sh Wrapper)Fenster, Kalibrieren, Shot, Stitch, Clean
scripts/edit.pySchnitte erstellen, Kartenvorschau, Schriftarten auflisten
scripts/qa.pyClip- und Endkontrolle, Kontaktabzüge
scripts/check_luau.shluau-analyze mit einer Roblox-Globals-Prelude (funktioniert ohne installierte Roblox-Typdefinitionen)

Validiere nach Änderungen an Skripten: python3 -m py_compile $SK/scripts/*.py und $SK/scripts/check_luau.sh $SK/scripts/*.luau.

Bekannte Lücken (hier beheben, wenn du darauf stößt)

  • Der Treiber kann keine GUI-Buttons klicken. Verwende das Remote, das der Button aufruft (invoke), wie es der Hatch-Shot tut.
  • Ein fester localOffset von einem Tag ist eine erste Schätzung; erwarte, ihn nach dem ersten Take jedes Shots anzupassen.
  • Die Spieler-Kamera modelliert kein Mausrad-Zoom. Verwende look.dist, um den Abstand zwischen Beats zu ändern.
  • Server-Setup kann nicht die Live-Spielmodule requiren: execute_luau/eval_server_runtime erhalten einen FRISCHEN Require-Cache (gemessen am 11.10.2026 in einem Haustier-Schlüpf-Spiel: PlayerState.all() war leer, während der Spieler geladen war). Platziere das Setup in einem RunContext=Server-Skript, das neben dem Kit importiert wird und eine BindableFunction verfügbar macht, und lasse server-Snippets :Invoke darauf ausführen. Muster: Ein TrailerHook-Skript (nur Trailer, niemals im Ort gespeichert), das die eigenen Module des Spiels aus der Server-VM des Spiels requiret und ServerStorage.TrailerHook (BindableFunction, :Invoke(cmd, args) -> (ok, result)) erstellt, mit einem kleinen Befehl pro Setup-Schritt (Geld geben, einen Gegenstand einer bestimmten Stufe hinzufügen, einen Timer bereit machen, die nächsten Würfelwahrscheinlichkeiten erzwingen, restore). Es speichert jeden Konfigurationswert, den es ändert, und stellt sie bei restore und wenn das Skript zerstört wird, wieder her. Verpacke es in eine .rbxmx auf die gleiche Weise wie build_kit.py das Kit verpackt.
  • Der Viewport von Studio mit angedocktem Explorer/Eigenschaften ist etwa 1,26:1 auf einem 1470×956 pt Bildschirm; blende die Panels aus (oder Ansicht > Vollbild), bevor du kalibrierst, sonst wirft der 16:9-Crop ein Drittel des Bildes weg.

Individual skills in this repo

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

Verwandte Skills