Gameplay-ähnliche Clips von sprechenden NPCs
Was bei 20 GTA V-Clips funktioniert hat (examples/gta-v, DirectorClips.cs, tools/shoot.ps1, tools/edit.ts):
Ein Clip ist ein einziger Dialog, 5–10 s lang, der wie ein Moment aus dem normalen Spiel eines Spielers wirken könnte.
Skript erstellen
clip: Wasserpistole
at: grove ein Straßenort, ein Haus oder "x, y, z, heading"
time: 21 Tageszeit
A: spieler wer zuerst spricht: der Spieler, ein Charakter oder ein Ped-Modell mit einer Stimme
B: LamarDavis
line: Lamar, leg die Waffe weg. Es ist eine Wasserpistole.
reply: bestehe darauf, dass sie immer noch gruselig ist und er der gefürchtetste Mann auf Grove Street ist (das LLM schreibt es live)
# Oder genehmigte Antwort festlegen:
say: [schreiend] Angst vor einer Wasserpistole? Das ist der gefürchtetste Scheiß auf Grove Street!
do: keine die auszuführende Aktion (ein Aktionsname oder keine)
Reine NPC-Clips (ein Polizist und ein Hillbilly, ein Marine und ein Tourist) gehören zu den besten: Verstecke den Spieler und lass zwei NPCs aufeinander losgehen.
Wie Gameplay aussehen
- Die Gameplay-Kamera, ruhig gehalten: Setze bei jedem Frame den Blickmodus der Folgekamera sowie ihre Richtung und Neigung relativ zum Spieler und deaktiviere die Eingabe fürs Umschauen. Fest ist in Ordnung; filmische Kameras wirken wie ein Trailer.
- Den Partner einrahmen: Stelle sie vor und etwas zur Seite (2 m nach vorne, 1 m nach rechts), damit der Spieler sie nicht verdeckt; taste mit Raycasts um den Spot herum und drehe dich von Wänden, Kiosken und Türen weg.
- Auf dem Boden verankern: Auf den Bürgersteig setzen und mit Raycast nach unten zum Boden (Markisen und Dächer täuschen Höhenabfragen).
- Sauberer Bildschirm: Das Spiel-HUD und die Untertitel sind eingeschaltet, nichts von der Mod (keine Benachrichtigungen, Entwicklertafeln oder Hilfetexte). Unterdrücke während einer Aufnahme Telefonanrufe und Hilfetexte.
- Erst rendern, dann abspielen: Schreibe die Antwort, wähle die Aktion aus und rendere beide Stimmen, bevor der Clip startet; spiele sie dann nacheinander ab. Niemand wartet auf die Kamera für eine GPU.
Aufnehmen, synchronisieren, schneiden
shoot.ps1: Bringt das Spiel in den Vordergrund, lädt die Mod neu, nimmt den Bildschirm (ffmpegddagrab) und die PC-Audio (WASAPI-Loopback) als separate Dateien auf, startet das Skript und startet die Aufnahme neu, wenn der Fokus verloren geht (das Spiel pausiert).- Synchronisation: Jeder Aufnahmeabschnitt beginnt mit einem weißen Blitz und einem 1-kHz-Piepton, der mit einem Zeitstempel protokolliert wird; die Mod protokolliert
clip_start/clip_endsowie jedesaudio_on/audio_offjeder Zeile in einer Timeline. edit.ts --clips <take>: Ein MP4 pro Clip, von 0,2 s vorclip_startbis zum letzten Wort oder zur letzten Aktion, auf das Spielfenster zugeschnitten, 1920 Pixel breit, lautstärkenormalisiert. Es begrenzt Clips auf 10 s und meldet jede Zeile, die abgeschnitten würde, anstatt sie zu schneiden.- Neu aufnehmen, keine Wörter schneiden: Ein Clip, der zu lang wird, wird neu gedreht (neue Renderings haben unterschiedliche Längen) oder seine Zeile um ein paar Wörter gekürzt. Hefte genehmigte Antworten mit
say:/do:an, damit ein Neudreh den Witz bewahrt. - Vor dem Versenden prüfen: Ein Kontaktblatt mit einem Frame pro Clip (
ffmpeg -ss 5 ... tile=5x4) erkennt einen versteckten Partner oder eine Wand im Bild in Sekundenschnelle.
Fallstricke
- Nichts passiert / die Mod kam nach einem Neuladen nicht zurück. Die Windows Smart App Control hat die neue DLL abgelehnt (Code Integrity-Ereignis 3077). Teste zuerst einen neuen Build; behalte den letzten, der geladen wurde.
- Die Aufnahme hat keinen Videostart im Log. Ein anderer Prozess hielt die Logdatei offen (
tail -Funter Windows blockiert den Schreiber). Schaue keine Datei an, an die ein anderes Skript anhängt; schaue eine andere an. - Ein Telefonanruf oder Hilfetext landet mitten im Clip. Unterdrücke sie während eines laufenden Clips in jedem Frame.
- Stimmen in Clips sind Klone. Bevor du einen Clip irgendwo postest, entscheidet der Mensch; sage, dass es KI ist.