Communitygithub.com

christos-antono/NPCTalk

錄製NPC對話短片,呈現真實遊玩般的片段,準備好直接發布。涵蓋指定地點與時間的腳本對話、固定於玩家背後的遊戲攝影機、台詞來回播放、遊戲原生HUD與字幕、剪輯時間軸標記、畫面與音效同步、16:9(與9:16)的5-10秒片段,以及固定台詞以便重錄已批准的鏡頭與超時重拍。適用於用戶需要展示對話NPC的示範影片、剪輯或集錦。

NPCTalk 是什麼?

NPCTalk 是一個用於在遊戲引擎內(如GTA V)錄製即時NPC對話短片的工具型技能,讓所產出的片段看起來就像真實的遊玩過程,適合直接發布於社群媒體。它支援腳本化對話(包含玩家、特定角色或配音的NPC),並能自動處理攝影機固定、角色站位、地面對齊、畫面清潔(僅顯示遊戲HUD與字幕)、語音預先渲染後再播放以確保流暢。錄製流程包含螢幕與音效同步捕捉(透過shoot.ps1腳本)與自動剪輯(透過edit.ts腳本),能產生5-10秒的16:9或9:16片段,並針對超時或失誤提供重拍機制。其主要用途是製作展示型示範影片、精彩片段或NPC對話集錦,且提供詳細的gotchas說明(如DLL載入問題、日誌鎖定、來電干擾等)以協助開發者除錯。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

遊玩風格的NPC對話片段

在20個GTA V片段中有效的方法(請見 examples/gta-v、DirectorClips.cs、tools/shoot.ps1、tools/edit.ts): 一個片段是一次對話交換,長度5-10秒,看起來就像普通玩家遊玩中的一個瞬間。

編寫腳本

clip: 水槍
at: grove                         一個街道位置、一棟房屋,或「x, y, z, heading」
time: 21                          一天中的小時
A: player                         誰先發言:玩家、角色,或一個有配音的ped模型
B: LamarDavis
line: Lamar, 把槍放下。那是水槍。
reply: 堅持說那仍然很可怕,而且他是Grove Street最令人畏懼的男人    (由LLM即時撰寫)
# 或者固定一個已批准的台詞:
say: [大喊] 怕一支水槍?這他媽的是Grove Street最令人畏懼的東西!
do: none                           要播放的動作(動作名稱,或 none)

僅NPC的片段(一個警察和一個鄉巴佬、一個海軍陸戰隊員和一個觀光客)是效果最好的:隱藏玩家,讓兩個NPC自己對話。

看起來像遊玩

  • 固定的遊戲攝影機: 每一幀都將跟隨攝影機的視角模式及其相對於玩家的朝向與俯仰固定住,並停用視角輸入。固定視角就可以了;電影運鏡會看起來像預告片。
  • 框住對話夥伴: 讓他們站在玩家前方並稍微側邊(向前2公尺,向右1公尺),這樣玩家不會擋住他們;在該位置進行射線檢測,避開牆壁、攤位和門口。
  • 讓他們著地: 貼齊路面,並向下進行射線檢測以找到地面(遮雨棚和屋頂會誤導高度查詢)。
  • 乾淨畫面: 顯示遊戲的HUD和字幕,不顯示任何模組相關內容(沒有通知、開發面板或幫助文字)。在拍攝期間抑制來電和幫助文字。
  • 先渲染,再播放: 寫好回覆、選擇動作,並在片段開始前渲染好兩個角色的聲音,然後再讓它們依次播放。沒有人需要在鏡頭前等待GPU。

錄製、同步、剪輯

  • shoot.ps1:將遊戲視窗置前、重新載入模組、錄製螢幕(ffmpeg ddagrab)和電腦音訊(WASAPI loopback)為獨立檔案、啟動腳本,並在失去焦點時重新開始錄製(遊戲會暫停)。
  • 同步: 每個錄製片段以一個白色閃爍和一個帶時間戳記的1kHz嗶聲開始;模組會記錄 clip_start/clip_end 以及每個台詞的 audio_on/audio_off 到時間軸。
  • edit.ts --clips <take>:每個片段輸出一個MP4,從 clip_start 前0.2秒開始,到最後一個字或動作結束,裁切至遊戲視窗大小,寬度1920,並進行響度正規化。它會將片段限制在10秒以內,並回報任何會被切斷的台詞,而不是直接將其剪掉。
  • 重拍,不要切斷台詞: 長度過長的片段需要重拍(新渲染的長度會不同),或者將台詞精簡幾個字。使用 say:/do: 來固定已批准的台詞,這樣重拍時就能保留笑點。
  • 發送前先預覽: 建立一個每個片段一幀的聯絡表(ffmpeg -ss 5 ... tile=5x4),可以在幾秒內發現隱藏的夥伴或畫面中的牆壁。

注意事項

  1. 什麼都沒發生 / 模組在重新載入後沒有回來。 Windows Smart App Control 拒絕了新的DLL(Code Integrity 事件3077)。先測試載入新版本;保留最後一個能載入的版本。
  2. 該片段的日誌中沒有影片開始記錄。 另一個程式持有了日誌檔案(Windows 上的 tail -F 會阻塞寫入者)。不要監看另一個腳本正在附加寫入的檔案;請監看不同的檔案。
  3. 來電或幫助文字在片段進行中出現。 在片段播放的每一幀中都抑制它們。
  4. 片段中的語音是複製品。 在將任何片段發布到任何地方之前,由人類決定;並聲明這是AI生成。

相關技能