Communitygithub.com

NPCTalk

Enregistrez de courts extraits de conversations entre PNJ qui ressemblent à du vrai gameplay, prêts à être publiés.

Qu'est-ce que NPCTalk ?

NPCTalk est une compétence destinée aux créateurs de contenu et aux développeurs de mods qui souhaitent produire des vidéos de démonstration ou des montages de dialogues entre PNJ, avec un rendu réaliste de gameplay. Elle permet de scénariser des échanges entre personnages (joueur, PNJ, ou deux PNJ) à des endroits et moments précis, avec une caméra fixe imitant le gameplay, l'interface HUD et les sous-titres d'origine, et aucun élément du mod visible à l'écran. La compétence prend en charge l'enregistrement synchronisé de l'écran et de l'audio, le découpage automatique en clips de 5 à 10 secondes, et la possibilité de refaire des prises tout en conservant les répliques approuvées. Elle est conçue pour GTA V (exemples fournis) et s'utilise via des scripts PowerShell et TypeScript, avec une synchronisation par flash blanc et bip sonore, et un contrôle strict pour éviter les coupures de dialogue ou les interférences (appels téléphoniques, textes d'aide). NPCTalk s'adresse aux utilisateurs qui veulent des vidéos de démonstration, des extraits ou un montage de PNJ qui parlent, dans un style proche d'une session de jeu réelle.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Extraits de gameplay de PNJ qui parlent

Ce qui a fonctionné pour 20 extraits GTA V (examples/gta-v, DirectorClips.cs, tools/shoot.ps1, tools/edit.ts) : un extrait est un échange, 5-10 s, qui pourrait être un moment de jeu ordinaire.

Scénariser

clip: Pistolet à eau
at: grove                         un lieu de rue, un domicile, ou "x, y, z, cap"
time: 21                          heure de la journée
a: player                         qui parle en premier : le joueur, un personnage, ou un modèle de piéton avec une voix
b: LamarDavis
line: Lamar, range cette arme. C'est un pistolet à eau.
reply: insiste que c'est quand même flippant et qu'il est l'homme le plus craint de Grove Street    (le LLM écrit en direct)
# ou verrouiller une réplique approuvée :
say: [criant] Peur d'un pistolet à eau ? C'est la merde la plus flippante de Grove Street !
do: none                          l'action à jouer (un nom d'action, ou none)

Les extraits sans joueur (un flic et un bouseux, un marine et un touriste) sont parmi les meilleurs : cachez le joueur et laissez deux PNJ s'affronter.

Rendre le gameplay

  • La caméra de gameplay, fixe : à chaque image, définir le mode de vue de la caméra suivante ainsi que son cap et son inclinaison par rapport au joueur, et désactiver la saisie de regard. Fixe convient ; les caméras cinématiques ressemblent à une bande-annonce.
  • Cadrer le partenaire : placez-le devant et un peu sur le côté (2 m devant, 1 m à droite) pour que le joueur ne le cache pas ; effectuez un raycast autour de l'endroit et éloignez-vous des murs, kiosques et portes.
  • Les ancrer au sol : accrochez-les au trottoir, et effectuez un raycast vers le bas pour le sol (les auvents et les toits trompent les recherches de hauteur).
  • Écran propre : l'interface HUD et les sous-titres du jeu sont affichés, rien du mod (pas de notifications, panneaux de développement ou texte d'aide). Supprimez les appels téléphoniques et les textes d'aide pendant une prise.
  • Rendre d'abord, puis lancer : écrivez la réponse, choisissez l'action et rendez les deux voix avant que l'extrait ne commence, puis lisez-les en continu. Personne n'attend sur la caméra pour un GPU.

Enregistrer, synchroniser, couper

  • shoot.ps1 : amène le jeu au premier plan, recharge le mod, enregistre l'écran (ffmpeg ddagrab) et l'audio du PC (boucle WASAPI) dans des fichiers séparés, démarre le script, et redémarre la capture si le focus est perdu (le jeu se met en pause).
  • Synchronisation : chaque segment de capture commence par un flash blanc et un bip de 1 kHz enregistré avec un horodatage ; le mod enregistre clip_start/clip_end et chaque audio_on/audio_off de ligne dans une timeline.
  • edit.ts --clips <prise> : un MP4 par extrait, de 0,2 s avant clip_start jusqu'au dernier mot ou action, recadré à la fenêtre du jeu, 1920 de large, normalisé en volume. Il limite les extraits à 10 s et signale toute ligne qui serait coupée, au lieu de la couper.
  • Reprendre, ne pas couper les mots : un extrait trop long est refait (les nouveaux rendus ont des longueurs différentes) ou sa ligne est resserrée de quelques mots. Verrouillez les répliques approuvées avec say:/do: pour qu'une reprise conserve la blague.
  • Vérifier avant d'envoyer : une planche contact d'une image par extrait (ffmpeg -ss 5 ... tile=5x4) permet de repérer en quelques secondes un partenaire caché ou un mur dans le plan.

Pièges à éviter

  1. Rien ne se passe / le mod n'est pas revenu après un rechargement. Windows Smart App Control a refusé la nouvelle DLL (événement Code Integrity 3077). Testez d'abord le chargement d'une nouvelle version ; conservez la dernière qui a fonctionné.
  2. La prise n'a pas de début vidéo dans son journal. Un autre processus gardait le fichier journal ouvert (tail -F sur Windows bloque l'écriture). Ne regardez pas un fichier auquel un autre script ajoute du contenu ; regardez un autre fichier.
  3. Un appel téléphonique ou un texte d'aide arrive au milieu de l'extrait. Supprimez-les à chaque image pendant le défilement d'un extrait.
  4. Les voix dans les extraits sont des clones. Avant de publier un extrait où que ce soit, la décision revient à l'humain ; précisez qu'il s'agit d'IA.

Skills associés