roblox-npc-ai について
Roblox の NPC や敵キャラクターの開発向けスキルです。経路探索、ステートマシン、検知、更新ループを扱い、経路再試行の制限とサーバー側での判断を重視します。
主な機能
- 01PathfindingService の設定
- 02NPC ステートマシンの遷移
- 03距離・視野・視線による検知
- 04ネットワーク所有権の指針
- 05AI ループの間引きと分散
活用シーン
- 01障害物を避ける NPC の移動
- 02巡回・追跡・逃走状態の実装
- 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)
- 距離
(a-b).Magnitude:最も低コストなので、常に最初に実行します。 - FOV
forward:Dot(toTarget)のコサイン値。普遍的な角度ではなく、ゲームに合わせて設定した視野角を使用します。 - LOS
workspace:Raycast:高コストなので、最後に実行します。
- 設計に聴覚や近接検出が含まれる場合は、FOV を常に回避する仕組みではなく、個別に設定可能なシグナルとして実装します。
ネットワーク所有権
- 従来型のプロジェクトでは、物理演算が重要な NPC に
SetNetworkOwner(nil)を使用する場合がありますが、これだけで完全なセキュリティが確保されるわけではありません。Server Authority プロジェクトでは、ネットワーク所有権をセキュリティ境界として扱うのではなく、権限モデルを設定してください。
更新ループ
- 普遍的な更新間隔を設定するのではなく、NPC の数、経路探索のコスト、プロファイラーの結果に応じて、AI の更新頻度を抑え、タイミングをずらしてください。NPC の判断と移動はサーバー側で行い、クライアント側のコードでは表示処理を行うことができます。
スポナー、ライフサイクルのクリーンアップ、タイムアウト処理、パフォーマンス予算については、references/full.md を読み込んでください。
コメント
Markdown 対応