Communitygithub.com

christos-antono/NPCTalk

Graba clips cortos de conversaciones entre NPCs que parecen gameplays reales, listos para publicar. Cubre intercambios con guion en lugares y horas concretas, cámara fija detrás del jugador, diálogos renderizados antes del clip, HUD y subtítulos del juego, y herramientas para sincronizar y editar.

¿Qué es NPCTalk?

NPCTalk es una habilidad especializada para crear clips de video que simulan conversaciones entre NPCs en juegos como GTA V, con un acabado que parece gameplay real. Permite definir guiones detallados: quién habla (jugador, NPC o personaje con voz), la línea inicial, la respuesta generada por un LLM y acciones opcionales. El mod controla la cámara para mantenerla fija y encuadrar al interlocutor, oculta cualquier elemento de la interfaz del mod, y sincroniza audio y video mediante un flash blanco y un pitido de 1 kHz al inicio de cada toma. Incluye un script PowerShell para grabar pantalla y audio por separado, y una herramienta TypeScript que edita los clips (recorta, normaliza volumen, y alerta si alguna línea quedaría cortada). Es útil para creadores de contenido que quieran demos, montajes o tráilers con diálogos de NPCs, ya sea con el jugador o solo entre NPCs. Soporta múltiples tomas, acciones marcadas como favoritas y re-grabación si el clip se alarga demasiado.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/christos-antono/NPCTalk/tree/HEAD/.agents/skills/npc-showcase-clips

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Clips con aspecto de gameplay de NPCs hablando

Lo que funcionó para 20 clips de GTA V (examples/gta-v, DirectorClips.cs, tools/shoot.ps1, tools/edit.ts): un clip es un intercambio de 5 a 10 segundos que podría ser un momento del juego normal de alguien.

Escríbelo

clip: Pistola de agua
at: grove                         Un lugar en la calle, una casa, o "x, y, z, heading"
time: 21                          Hora del día
a: player                         Quién habla primero: el jugador, un personaje, o un modelo de ped con voz
b: LamarDavis
line: Lamar, guarda el arma. Es una pistola de agua.
reply: insiste en que sigue siendo peligrosa y que él es el hombre más temido de Grove Street    (el LLM lo escribe en vivo)
# o marca una respuesta aprobada:
say: [gritando] ¿Asustado de una pistola de agua? ¡Esta es la mierda más temida de Grove Street!
do: none                          La acción a reproducir (nombre de acción, o none)

Los clips solo de NPCs (un policía y un paleto, un marine y un turista) son de lo mejor: oculta al jugador y deja que dos NPCs se enfrenten.

Que parezca gameplay

  • La cámara de juego, sostenida fija: en cada fotograma, fija el modo de visión de la cámara de seguimiento y su orientación y elevación relativas al jugador, y desactiva la entrada de mirada. Fijo está bien; las cámaras cinemáticas parecen tráiler.
  • Encuadra al compañero: colócalo delante y un poco a un lado (2 m adelante, 1 m a la derecha) para que el jugador no lo oculte; haz raycasting alrededor del punto y aléjate de paredes, quioscos y puertas.
  • Pégales al suelo: encájales en el pavimento y haz raycasting hacia abajo para el suelo (los toldos y tejados engañan las búsquedas de altura).
  • Pantalla limpia: el HUD y los subtítulos del juego activados, nada del mod (sin notificaciones, paneles de desarrollo ni texto de ayuda). Suprime llamadas telefónicas y texto de ayuda durante una toma.
  • Renderiza primero, luego graba: escribe la respuesta, elige la acción y renderiza ambas voces antes de que comience el clip, luego reprodúcelas una tras otra. Nadie espera a la GPU delante de la cámara.

Graba, sincroniza, corta

  • shoot.ps1: trae el juego al frente, recarga el mod, graba la pantalla (ffmpeg ddagrab) y el audio del PC (bucle de retorno WASAPI) como archivos separados, inicia el script y reinicia la captura si se pierde el foco (el juego se pausa).
  • Sincroniza: cada segmento de captura comienza con un flash blanco y un pitido de 1 kHz registrado con una marca de tiempo; el mod registra clip_start/clip_end y cada audio_on/audio_off de cada línea en una línea de tiempo.
  • edit.ts --clips <take>: un MP4 por clip, desde 0.2 s antes de clip_start hasta la última palabra o acción, recortado a la ventana del juego, 1920 de ancho, normalizado en volumen. Limita los clips a 10 s y reporta cualquier línea que quedaría cortada, en lugar de cortarla.
  • Re-graba, no cortes palabras: un clip que se alarga se vuelve a grabar (las nuevas renderizaciones salen de distinta duración) o su línea se acorta unas pocas palabras. Marca las respuestas aprobadas con say:/do: para que una re-grabación mantenga el chiste.
  • Mira antes de enviar: una hoja de contactos de un fotograma por clip (ffmpeg -ss 5 ... tile=5x4) detecta un compañero oculto o una pared en el encuadre en segundos.

Problemas conocidos

  1. No pasa nada / el mod no volvió después de una recarga. El Control de aplicaciones inteligente de Windows rechazó la nueva DLL (Evento de integridad de código 3077). Prueba a cargar una nueva compilación primero; conserva la última que cargó.
  2. La toma no tiene inicio de video en su registro. Otro proceso mantenía abierto el archivo de registro (tail -F en Windows bloquea al escritor). No mires un archivo al que otro script añade contenido; mira uno diferente.
  3. Una llamada telefónica o texto de ayuda aparece a mitad del clip. Suprímelos en cada fotograma mientras se reproduce un clip.
  4. Las voces en los clips son clones. Antes de publicar un clip en cualquier sitio, la persona decide; di que es IA.

Skills relacionados