mcpField
R
roblox-npc-ai

roblox-npc-ai

github.com/tabooharmony開発1382.1k 回インストール2 週間前に更新
リポジトリ

roblox-npc-ai について

Roblox の NPC や敵キャラクターの開発向けスキルです。経路探索、ステートマシン、検知、更新ループを扱い、経路再試行の制限とサーバー側での判断を重視します。

主な機能

  1. 01PathfindingService の設定
  2. 02NPC ステートマシンの遷移
  3. 03距離・視野・視線による検知
  4. 04ネットワーク所有権の指針
  5. 05AI ループの間引きと分散

活用シーン

  1. 01障害物を避ける NPC の移動
  2. 02巡回・追跡・逃走状態の実装
  3. 03段階的なプレイヤー検知

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tabooharmony/roblox-brain --skill roblox-npc-ai

インストール後、Claude Code で/roblox-npc-aiを入力して読み込まれたか確認します。

同梱ファイルreferences/full.md

詳細

Roblox NPC と AI

読み込むタイミング

NPC/敵キャラクターの経路探索、ステートマシン、LOS/FOV 検出、スポーン、AI ループ、物理の所有権を扱う場合に読み込みます。

クイックリファレンス

PathfindingService
local path = PathfindingService:CreatePath({
    AgentRadius = 2, AgentHeight = 5, AgentCanJump = true,
    Costs = { Water = 20, DangerZone = math.huge },
})
path:ComputeAsync(npcPos, targetPos)
if path.Status ~= Enum.PathStatus.Success then return end
for _, wp in path:GetWaypoints() do
    if wp.Action == Enum.PathWaypointAction.Jump then humanoid.Jump = true end
    humanoid:MoveTo(wp.Position)
    if not humanoid.MoveToFinished:Wait() then return end
end
  • ブロックされた場合は、上限付きの再試行またはキャンセルポリシーを適用して再計算します。
  • Studio では、展開前に代表的なマップで Workspace.PathfindingUseImprovedSearch をテストしてください。この設定はスクリプトから変更できません。
  • 時間のかかるリクエストや繰り返しの再計算は避けてください。移動する衝突可能なジオメトリは、ナビゲーションメッシュの処理を引き起こすことがあります。
  • 領域モディファイア:アンカー設定したパーツと PathfindingModifier の Label → Costs
  • ドアには PassThrough = true、分断されたナビゲーションメッシュには PathfindingLink を使用します。
  • コストに math.huge を指定すると、通行不可になります。
ステートマシン

idle → patrol → chase → attack → flee → dead

  • idle/patrol → chase(プレイヤーを検出)→ attack(射程内)→ idle(見失う)
  • 任意の状態 → flee(体力が低い)→ idle(安全);任意の状態 → dead(体力 ≤ 0)
  • 状態遷移では、移動の変更、ターゲットのクリーンアップ、キャンセルを管理します。
検出(距離 → FOV → LOS)
  1. 距離 (a-b).Magnitude:最も低コストなので、常に最初に実行します。
  2. FOV forward:Dot(toTarget) のコサイン値。普遍的な角度ではなく、ゲームに合わせて設定した視野角を使用します。
  3. LOS workspace:Raycast:高コストなので、最後に実行します。
  • 設計に聴覚や近接検出が含まれる場合は、FOV を常に回避する仕組みではなく、個別に設定可能なシグナルとして実装します。
ネットワーク所有権
  • 従来型のプロジェクトでは、物理演算が重要な NPC に SetNetworkOwner(nil) を使用する場合がありますが、これだけで完全なセキュリティが確保されるわけではありません。Server Authority プロジェクトでは、ネットワーク所有権をセキュリティ境界として扱うのではなく、権限モデルを設定してください。
更新ループ
  • 普遍的な更新間隔を設定するのではなく、NPC の数、経路探索のコスト、プロファイラーの結果に応じて、AI の更新頻度を抑え、タイミングをずらしてください。NPC の判断と移動はサーバー側で行い、クライアント側のコードでは表示処理を行うことができます。

スポナー、ライフサイクルのクリーンアップ、タイムアウト処理、パフォーマンス予算については、references/full.md を読み込んでください。

コメント