Communitygithub.com

NPCTalk

실제 게임 플레이처럼 보이는 NPC 대화 클립을 녹화하여 바로 게시할 수 있습니다. 정해진 장소와 시간에서 대본화된 대화, 고정된 게임플레이 카메라, 클립 시작 전에 두 대사를 미리 렌더링하여 연속 재생, 모드 UI 없이 게임 HUD와 자막만 표시, 편집을 위한 타임라인 마커, 화면과 오디오 동기화, 5~10초 클립(16:9 및 9:16), 승인된 테이크를 다시 녹음할 수 있는 대사 고정, 길어진 클립 재촬영 등을 지원합니다. 데모 비디오, 클립 또는 NPC 대화 몽타주가 필요할 때 사용하세요.

NPCTalk란 무엇인가요?

NPCTalk는 게임 내 NPC 대화를 실제 플레이 영상처럼 보이도록 녹화하고 편집하는 AI 에이전트 스킬입니다. GTA V에서 검증된 이 스킬은 대본화된 대화, 고정된 게임플레이 카메라(플레이어 뒤에 위치), 클립 시작 전 음성 렌더링, 게임 HUD만 표시하는 클린 스크린 등 실제 게임 플레이와 구분할 수 없는 클립을 생성합니다. 사용자는 NPC 간 대화나 플레이어- NPC 대화를 스크립트로 작성하고, `shoot.ps1`로 화면과 오디오를 동기화하여 녹화한 후, `edit.ts`로 자동으로 클립을 잘라내고 타임라인을 제공합니다. 특히, 승인된 대사를 `say:` 필드에 고정하여 재촬영 시에도 동일한 대사를 유지할 수 있으며, 길어진 클립은 자동으로 잘리지 않고 재촬영을 유도하여 대화의 완결성을 보장합니다. Windows 환경에서 Visual Studio와 함께 사용되며, ffmpeg 및 TypeScript를 활용합니다.

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

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

게임플레이 스타일의 NPC 대화 클립

GTA V 클립 20개(examples/gta-v, DirectorClips.cs, tools/shoot.ps1, tools/edit.ts)에서 검증된 방법: 클립은 한 번의 대화 교환으로, 5~10초 길이이며, 일반 플레이의 한 순간처럼 보여야 합니다.

대본 작성

clip: 물총
at: grove                         거리, 집 위치 또는 "x, y, z, heading"
time: 21                          시간

a: player                         먼저 말하는 사람: 플레이어, 캐릭터, 또는 음성이 있는 페드 모델
b: LamarDavis

line: Lamar, 총을 치워. 물총이야.
reply: 그래도 무섭다고 우기고, 자신은 Grove Street에서 가장 무서운 남자라고 말해    (LLM이 실시간으로 작성)
# 또는 승인된 테이크 고정:
say: [고함] 물총이 무섭다고? 이게 Grove Street에서 제일 무서운 거야!
do: none                          실행할 동작 (동작 이름 또는 none)

NPC 전용 클립(경찰과 촌뜨기, 해병과 관광객)이 가장 좋습니다: 플레이어를 숨기고 두 NPC가 대화하게 하세요.

게임플레이처럼 보이게 하기

  • 고정된 게임플레이 카메라: 모든 프레임에서 따라가기 카메라의 뷰 모드와 플레이어 기준 방향 및 피치를 설정하고, look 입력을 비활성화합니다. 고정이면 충분합니다; 영화 같은 카메라는 트레일러처럼 보입니다.
  • 파트너 프레이밍: 플레이어가 가리지 않도록 파트너를 앞쪽 약간 옆에 세웁니다(앞으로 2m, 오른쪽으로 1m). 해당 지점 주변을 레이캐스트하여 벽, 키오스크, 출입구에서 멀리 돌립니다.
  • 지면에 고정: 보도에 스냅하고, 레이캐스트로 지면을 찾습니다(차양과 지붕은 높이 조회를 속일 수 있음).
  • 클린 화면: 게임의 HUD와 자막은 켜고, 모드의 어떤 것도 표시하지 않습니다(알림, 개발 패널, 도움말 텍스트 없음). 테이크 중에는 전화와 도움말 텍스트를 억제합니다.
  • 먼저 렌더링, 그 다음 롤: 클립이 시작되기 전에 답변을 작성하고, 동작을 선택한 후 두 음성을 렌더링한 다음, 연속으로 재생합니다. 아무도 GPU를 기다리지 않습니다.

녹화, 동기화, 편집

  • shoot.ps1: 게임을 전면으로 가져오고, 모드를 다시 로드하며, 화면(ffmpeg ddagrab)과 PC 오디오(WASAPI 루프백)를 별도 파일로 녹화하고, 스크립트를 시작하며, 포커스를 잃으면(게임 일시 정지) 캡처를 다시 시작합니다.
  • 동기화: 각 캡처 세그먼트는 타임스탬프가 기록된 흰색 플래시와 1kHz 비프음으로 시작합니다. 모드는 clip_start/clip_end와 각 대사의 audio_on/audio_off를 타임라인에 기록합니다.
  • edit.ts --clips <take>: clip_start 0.2초 전부터 마지막 단어 또는 동작까지, 게임 창 크기로 자르고, 1920 너비, 음량이 정규화된 클립당 하나의 MP4를 생성합니다. 클립을 10초로 제한하고 잘릴 대사가 있으면 보고하며, 대사를 자르지 않습니다.
  • 재촬영, 단어 자르지 않음: 길어진 클립은 다시 촬영하거나(새 렌더링은 길이가 다를 수 있음) 대사를 몇 단어 줄입니다. 승인된 답변은 say:/do:로 고정하여 재촬영해도 농담이 유지되도록 합니다.
  • 보내기 전에 확인: 클립당 한 프레임의 연락처 시트(ffmpeg -ss 5 ... tile=5x4)를 사용하면 숨겨진 파트너나 샷의 벽을 몇 초 만에 찾을 수 있습니다.

주의사항

  1. 아무 일도 일어나지 않음 / 다시 로드 후 모드가 돌아오지 않음. Windows Smart App Control이 새 DLL을 거부했습니다(Code Integrity 이벤트 3077). 새 빌드를 먼저 테스트 로드하고, 마지막으로 로드된 빌드를 유지하세요.
  2. 테이크 로그에 비디오 시작이 없음. 다른 프로세스가 로그 파일을 열고 있었습니다(Windows에서 tail -F는 작성자를 차단함). 다른 스크립트가 추가하는 파일을 보지 말고, 다른 파일을 감시하세요.
  3. 클립 도중에 전화 또는 도움말 텍스트가 나타남. 클립이 롤링되는 동안 모든 프레임에서 이를 억제하세요.
  4. 클립의 음성은 복제된 것입니다. 클립을 어디에 게시하기 전에 인간이 결정합니다. AI임을 명시하세요.

관련 스킬