ナビメッシ編集にする
You can help by updating the translation.
Also, please make sure the article tries to comply with the alternate languages guide.Contents
はじめに
ナビゲーションメッシュはマップの"歩くことができるエリア(walkable area)"を表現します。このデータはCounter-Strike:SourceのBot や人質がどのように環境内を動けばいいか"知る"のに必須になります。
ナビゲーションメッシュのデータはマップファイル(.bsp)と対応している.navファイルに保存されます。 例えば、cstrike\maps\de_dust.bsp
のナビゲーションメッシュはcstrike\maps\de_dust.nav
に保存されています。
ナビゲーションメッシュ自動生成
多くのコミュニティで作られたマップをサポートするために、Counter-Strike:Sourceには自動メッシュ生成システムが含まれています。カスタムマップを初めてBOTとプレイするときに、生成システムがマップのための.navファイルを作ります。これにはマップの大きさと複雑さによって数分から数時間かかります。大抵のマップでは大体.navファイルを自動生成するのに5分かかります。生成が完了すると、.navファイルは将来の使用のためにハードディスクに保存されます。
生成時に何が計算されるのか
ナビゲーションメッシュ生成の間に以下のステップが実行されます:
- プレイヤーのspawn地点から開始し、連続した歩くことができるポイントを探し、歩くことができる空間をその地点から"flood-filling(塗りつぶし)"で外側にサンプルしていきます。
- サンプルのデータから長方形のナビゲーションエリアが作成されます。
- 隠れられる場所、スナイパースポットが計算されます。
- Encounter Spot(遭遇スポット)とApproach Point(アプローチポイント)が計算されます(これにはしばらく時間がかかるかもしれません)
- 最初の遭遇エリアが計算されます
生成プロセスの手動開始方法
生成プロセスを手動で開始するには、コンソールでnav_generate
と入力してください。
ナビゲーションメッシュの閲覧
結果のナビゲーションメッシュを見るにはコンソールでnav_edit 1
と入力してください。メッシュ編集をオフにするにはnav_edit 0
と入力してください。
歩くことができる場所の明示的なマーキング (あるいは: "階段の上にメッシュがない")
マップの中には急な階段、傾斜、丘があり、生成システムが混乱して、結果としてナビゲーションメッシュがマップ全体をカバーできないことがあります。これを解決するには、手動で追加のwalkable marker(歩くことのできる場所マーカー)を配置して、生成するときのサンプリング段階でこのポイントから外側にサーチするようにすることができます。
walkable markerを追加していくには、マップの歩くことができるポイントを狙え、それからコンソールでnav_mark_walkable
を入力します。マーカーの配置が終わったら、nav_generate
を入力してメッシュを再生成します。
テスト用のメッシュを素早く生成するには
生成における分析フェーズはとても時間がかかる可能性があります。これを飛ばすにはコンソールでnav_quicksave 1
と入力してください。
注意: この"Quicksave"は分析フェーズを飛ばすため、結果のメッシュはCS BOTと人質の高レベルのプランニングと注意システムに必要な重要なデータを欠いたものになります。それなのでこれはナビゲーションメッシュのテスト、編集、調整には適していますが、外部にnavファイルを公開する前には完全な分析(つまり:
nav_quicksave 0
にした状態)を行うことを忘れないでください
ナビゲーションメッシュの編集
自動でのナビゲーションメッシュ生成もそれなりに働き、カスタムマップでのBotや人質の使用開始を簡単にしています。
しかしながら、注意深く手でナビゲーションメッシュを調整するとBotのパフォーマンスが目に見えて向上する可能性があります。さらに、メッシュに手動で場所名を追加するとBotがどこでイベントが起こったかを伝え、Counter-Strikeレーダーを増強し、全てのラジオメッセージに場所名を追加します。
ナビゲーションメッシュエディタ
エディタをオンにするにはコンソールでnav_edit 1
を入力します。(オフにするにはnav_edit 0
を入力)
- 視点の真ん中にある白い十字がカーソルです。
- カーソルで差しているナビゲーションエリアが選択中のエリアで黄色の枠が表示されます。
- 選択中のエリアから到達できるナビゲーションエリアは赤で表示されます。
- 選択中のエリアの白い線は
nav_split
コマンドを実行したときに分割に使われる線です。
エリア種類
接続関係の種類
メッシュ編集コマンドの使用
全てのメッシュ編集コマンドはコンソールから入力して使うこともできるのですが、実際のところこれらのコマンドをキーにバインドした方がずっと使いやすいです。例えば、bind del nav_delete
はDeleteキーにnav_deleteコマンドをバインドします。このバインドを行った後では、Deleteキーを押すとカーソルの下にあるナビゲーションエリアが削除されます(ナビゲーション編集モードにいる場合)。
CFGファイルを使うことで一度にたくさんのコマンドを一時的にバインドすることができます。これはたくさんのコマンドがあり、しかもこのバインドをキーに永久に適用したいわけではない、ナビゲーション編集に役立ちます。 既成のファイルとその使い方の説明はEditing Bot Navigation CFG File にあります。
Botナビゲーションに関連したコマンド全てのリストについてはナビゲーションメッシュコンソールコマンドリファレンス を参照してください。
メッシュ編集の基本コマンド
保存(Save)
現在のところ、ナビゲーションメッシュ編集システムには"undo"コマンドはありません。 そのためnav_save
コマンドで頻繁に保存することが非常に重要です。
分割(Split)
エリアを2つの隣り合うエリアに分割するには、エリアにカーソルを向けてnav_split
コマンドを実行します。
マージ(Merge)
2つの隣接するエリアを1つにマージするには:
- 1つ目のエリアにカーソルを向け、
nav_mark
を実行 - 2つ目のエリアにカーソルを向け、
nav_merge
を実行
マージを行う場合両方のエリアの端の長さが同じである必要があることに注意してください。
結果のエリアは元となった2つのエリアの全ての接続関係を保持し、マークされたエリアから属性(例:場所名など)を引き継ぎます。
接合(Splice)
接合を行うと、既にある2つのエリアの間に新しいエリアを作成します。接合は強力なツールであり、下の例のように傾斜した場所においてエリアを簡単に作成したりできます。
2つのエリアの間の場所に新しいエリアを接合で作るには:
- 1つ目のエリアにカーソルを向け、
nav_mark
を実行 - 2つ目のエリアにカーソルを向け
nav_splice
を実行
削除(Delete)
エリアを削除するには、カーソルを向けて、nav_delete
を実行します。
新しいエリアの作成
新しいエリアを手動で作成するには:
- カーソルを新しく作成したいエリアの隅になる場所に向けます
nav_begin_area
を実行します- カーソルを動かしてエリアの範囲を決めます
nav_end_area
を実行します
エリア間の接続関係の追加と削除
エリア間の接続関係は行為者が1つのエリアから他のエリアに動くことができるかどうかを定義します。通常の接続関係は双方向で、行為者は自由にエリア間を行き来できます。しかし、接続関係には一方通行も存在し、高い崖から飛び降りることはできるが、飛び上がって戻ることができないといった関係を示しています。
エリアAからエリアBへの一方通行接続を作成するには(エリアAからエリアBには移動可能):
- エリアAにカーソルを向けます
nav_mark
でエリアAをマークします- エリアBにカーソルを向けます
nav_connect
を実行します
双方向接続を作るには、AとBの役割を逆にして上のステップを繰り返してください。
エリアAとエリアBの接続関係を全て削除するには:
- エリアAにカーソルを向けます
nav_mark
でエリアAをマークします- エリアBにカーソルを向けます
nav_disconnect
を実行します
場所名(Place Names)の追加
マップ内の区画を示す場所名をエリアに設定することができます。例えば、マップの中に目立つ家があるなら、その家の中にある全てのナビゲーションエリアに"House"という場所名をタグ付けすることができます。
場所名は以下のように使われています。CS Botのチャットシステムは自分のいる場所を宣言するのに使います。レーダーはプレイヤーの現在位置を示します。テキストチャットやラジオコマンドでもプレイヤー名の後ろに場所名が表示されます。
"場所名ペイントモード(Place Painting Mode)"への切り替えを行うには、nav_toggle_place_mode
を実行してください(nav_edit
がすでに"1"に設定されていると仮定しています)。
使用できる場所名リストを表示するにはnav_place_list
を実行してください。
nav_use_place (場所名)
を入力して使用する場所名を選択します。その場所名を設定したいエリアにカーソルを向けて、nav_toggle_place_painting
を実行します。 "場所名ペイント(place painting)"が実行中の間は、カーソルでエリアを指すとそのエリア現在の場所名が設定されます。場所名ペイントモードを終わるには、もう一度nav_toggle_place_painting
を実行します。
選択(picking)、塗りつぶし(flood-filling)、置き換え(replacing)といったいくつかの追加コマンドがあります。これらのコマンドについては #Place Name Commandsを参照してください。
よくあるナビゲーションメッシュ問題と解決方法
階段とスロープの外側のエリア
自動生成システムはよく階段やランプの端にぶら下がるエリアを作成してしまいます。これらは削除して、BOTが階段やスロープをまっすぐ使うようにさせるべきです。
手すり
現在のBOTナビゲーションシステムにおいて手すりは問題になることがあります。飛び降りるというものも含み、手すりを越える接続関係はそれが必須でなければ避けるべきです。BOTは最終的には飛び降りるジャンプをすることになりますが、その過程はエレガントなものではありません。
過剰なジャンプの防止
nav_no_jump
フラグを使うのはこの場合です。
回転ドアの処理
回転ドアの余裕のためにナビゲーションメッシュの中に空き空間を切り出しましょう。
編集の応用テクニック
梯子
登ることができる表面に対して手動で梯子設定をすることができます。そうした表面にカーソルを向けると、カーソルは緑になります。
nav_build_ladder
の使用
梯子の設定をする簡単な方法は、登ることができる表面をカーソルで指して、nav_build_ladder
を実行することです。
nav_begin_area
とnav_end_area
の使用
nav_build_ladder
が必要ではない場合、以下のように手動で梯子の設定をすることができます:
- 新しい梯子の隅となる部分にカーソルを向けます
nav_begin_area
を実行します- カーソルを動かして梯子範囲を設定します
nav_end_area
を実行します
これはBOTに梯子を登らせて、途中で木箱の上に飛び降りさせるといった場合に役立ちます:
梯子の反転
時には梯子が間違った方向を向いた状態で作成されることがあります。もし梯子が赤で描画されていたら、裏側から見ていることになります。緑の梯子は自分に表面を向けています。梯子の向きを変えるには、梯子にカーソルを向けてnav_ladder_flip
を使用してください。
障害物回避と精密移動
nav_precise
、nav_walk
、nav_stop
を使ってローカルエリアの障害物回避行動を無効にし、BOTの行動をコントロールできます。
避けるエリアをマーク
nav_avoid
を使うことでBOTに通常のエリアが危険すぎるということでない限りこのエリアを避けるように指示できます。
BOTの隠れ場所のコントロール
nav_no_hide
を使うことでBOTがこのエリアに隠れることを防ぐことができます。
(分析フェーズで強制的に隠れる場所を作成させるには)
トリッキージャンプと狭い通路の調整
特定の経路を通るようにナビゲーションエリアをアレンジします。
- BOTがドアや窓の端にひっかかっている場合、ナビゲーションエリアの端を削って、ドアや窓の開いた箇所の真ん中を通るパス作ります。
- BOTがジャンプを試みる最高点は58ユニットです。もしジャンプの最高点が底から59ユニット以上の高さなら、BOTはジャンプしてすぐあきらめます。このあきらめる動作が実際にはジャンプできる場所で起きるのなら、
nav_corner_lower
を使って上側のナビゲーションエリアを少し下げてください。