Clipes de NPCs conversando no estilo de jogabilidade
O que funcionou para 20 clipes de GTA V (examples/gta-v, DirectorClips.cs, tools/shoot.ps1, tools/edit.ts):
um clipe é uma troca de falas, de 5 a 10 s, que poderia ser um momento da jogabilidade comum de alguém.
Roteirize
clip: Pistola d'água
em: grove um ponto na rua, uma casa, ou "x, y, z, heading"
horário: 21 hora do dia
a: jogador quem fala primeiro: o jogador, um personagem, ou um modelo de ped com voz
b: LamarDavis
fala: Lamar, guarda a arma. É uma pistola d'água.
resposta: insiste que ainda é assustadora e que ele é o homem mais temido da Grove Street (o LLM escreve ao vivo)
# ou fixe um take aprovado:
diga: [gritando] Com medo de uma pistola d'água? Essa é a porra mais temida da Grove Street!
faça: nenhum a ação a ser executada (um nome de ação, ou nenhum)
Clipes só de NPCs (um policial e um caipira, um fuzileiro naval e um turista) são alguns dos melhores: esconda o jogador e deixe dois NPCs se enfrentarem.
Pareça jogabilidade
- A câmera de jogabilidade, mantida parada: a cada quadro, defina o modo de visão da câmera de acompanhamento, sua direção e inclinação em relação ao jogador, e desabilite a entrada de olhar. Fixo é suficiente; câmeras cinematográficas parecem trailer.
- Enquadre o parceiro: posicione-o na frente e um pouco para o lado (2 m à frente, 1 m à direita) para que o jogador não o esconda; faça raycast ao redor do ponto e vire-se para longe de paredes, quiosques e portas.
- Fixe no chão: alinhe ao pavimento e faça raycast para baixo em busca do chão (coberturas e telhados enganam as buscas de altura).
- Tela limpa: HUD e legendas do jogo ligados, nada do mod (sem notificações, painéis de desenvolvedor ou textos de ajuda). Suprima chamadas telefônicas e textos de ajuda durante um take.
- Renderize primeiro, depois grave: escreva a resposta, escolha a ação e renderize ambas as vozes antes do clipe começar, depois reproduza-as em sequência. Ninguém espera na câmera por uma GPU.
Grave, sincronize, corte
shoot.ps1: traz o jogo para a frente, recarrega o mod, grava a tela (ffmpegddagrab) e o áudio do PC (loopback WASAPI) como arquivos separados, inicia o script e reinicia a captura se o foco for perdido (o jogo pausa).- Sincronização: cada segmento de captura começa com um flash branco e um bipe de 1 kHz registrados com um timestamp; o mod registra
clip_start/clip_ende oaudio_on/audio_offde cada fala em uma timeline. edit.ts --clips <take>: um MP4 por clipe, de 0,2 s antes declip_startaté a última palavra ou ação, cortado para a janela do jogo, 1920 de largura, normalizado por loudness. Ele limita clipes a 10 s e relata qualquer fala que seria cortada, em vez de cortá-la.- Regrave, não corte palavras: um clipe que ultrapassa o tempo é regravado (novas renderizações saem com durações diferentes) ou sua fala é encurtada em algumas palavras. Fixe respostas aprovadas com
diga:/faça:para que uma regravação mantenha a piada. - Olhe antes de enviar: uma folha de contato com um quadro por clipe (
ffmpeg -ss 5 ... tile=5x4) detecta um parceiro escondido ou uma parede no quadro em segundos.
Armadilhas
- Nada acontece / o mod não voltou após um recarregamento. O Windows Smart App Control recusou a nova DLL (evento de Integridade de Código 3077). Teste uma nova compilação primeiro; mantenha a última que carregou.
- O take não tem início de vídeo no seu log. Outro processo mantinha o arquivo de log aberto (
tail -Fno Windows bloqueia o escritor). Não monitorar um arquivo ao qual outro script anexa; monitore outro. - Uma chamada telefônica ou texto de ajuda aparece no meio do clipe. Suprima-os a cada quadro enquanto um clipe está sendo gravado.
- Vozes nos clipes são clones. Antes de publicar um clipe em qualquer lugar, o humano decide; diga que é IA.