第9回 PLマップを作ってみよう。マップのペイロード部分を作る。その2
前回の続きです。
PL(ペイロード)部分のゲームシステムに関するギミックを作っていこうと思います。作業を簡単にするためにUltimate Mapping Resource PackのPL部分のコピーをするのですが、ここは理解せずにコピーするだけならこんな説明も要らないとは思いますのでコピーしないでも作れるようになる程度の説明はしてしようと思います。
テンプレートは以下のページのリソースパックがおすすめ。HAMMER自体にもTF2のゲームシステムに最適化してくれますので入れておいて間違いはないでしょう。
Ultimate Mapping Resource Pack
ページ https://tf2maps.net/threads/ultimate-mapping-resource-pack.4674/
ダウンロード http://tf2maps.net/resources/ultimate-mapping-resource-pack.510/download?version=516
このリソースパックを導入すると 私の例では
ドライブ:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\sourcesdk_content\tf\mapsrcにABS_GametypeLibrary_14-08-11.vmfというファイルが作成されます。これがテンプレートです。
このようなマップが開かれ、必要なところをコピーすればそのゲームシステムが使える寸法です。
今回は1RのPLマップのテンプレートを使ってみましょう。
前回はここまで書いてあったのにまったく使っていなかったのでおさらいを。
この部分が1ラウンド制のPLマップのギミック部分です。
とりあえずコピペして自分のマップに持っていきましょう。ちなみにマップを二つ読み出してマップを切り替えることも出来ます。操作方法はメニューのWindowにある下のほうのマップ名をクリックすればマップが切り替わります。
こんな感じでマップ外にコピーしました。
それぞれのパーツに分けました。(汚い字ですいません)
①はマップの環境やルールなどの設定用エンティティです。
②はPLカートのエンティティ
③はカートが移動するレール部分とキャプチャーするポイントです。
④は最終目標のコントロールポイント
その他、リスポンポイントやセットアップドアなどがあります。
マップに移動していく
これらを自分のマップに移動していきましょう。
まずは①のエンティティ部分を移動させましょう。移動させなくても問題はありませんが、マップの外側にこれらのエンティティが存在するとリークが出て、マップのコンパイルが失敗します。ここら辺はマップの内側へ移動させましょう。私は青チームのリスポンセットアップドアの前に持っていき説明しやすいように並び替えをしました。
左上から
1 tf_gamerules
このエンティティはゲームのルールを設定するエンティティです。
Hud TypeがゲームのHUD部分の表示になります。CP,CTF,PLの種類がありますが(他のゲームシステムに関しては別のエンティティが存在するようです)デフォルトの場合はそのゲームの他のエンティティで決まるようです。CTF Overtimeに関してはCTFのルールで使用するオーバータイムの有り無しですが今回はこの設定のまま変更していません。
2 filter_activator_tfteam (3も内容は同じで赤チーム用です)
このエンティティはTeamで指定しているチームだけが通れるリスポンポイントなどに使われる制限ゾーンの壁です。(指定したチームしか通過できない)しかしながらこのエンティティ自体はその壁ではなくて、このnameを指定したfunc_respawnroomvisualizerというエンティティが制限ゾーンの壁本体になります。
この後にもいくつかfilter_activator_○○というのが出てくるのですが、このフィルターはこのエンティティを指定したものだけを反応させるために使うことが多いです。たとえばトリガーに反応させる場合、赤チームだけとかプレイヤーに反応するなど。いくつかあります。
4 ambient_generic
このエンティティは環境音の設定エンティティです。このエンティティは本来そのポイントから出る環境音を指しますが、このエンティティに関してはゲームの決着がついた場合のカーンという音を指定しています。この名前をOutputで指定してPlayすることにより、Sound Nameの音が再生されます。細かな設定は音量やピッチ、聞こえる距離などの設定がありますが今回はFlagで
Play everywhereというのにチェックが入っているためすべてのプレイヤーのこの音が再生されるという状態になっています。またゲーム開始時にはSilent(無音)でさらにIs NOT Loopedのチェックでループしませんという、再生するまでだれも聞こえないけど再生したら全員が聞こえるという意味合いの環境音になっています。
このエンティティは本来は草の音、機械の音、などの環境音のために作られているエンティティなのでこのような設定になっています。
5 filter_activator_class
このエンティティはいろいろ試したのですが私はよくわかっていません。おそらくHL2のころのプレイヤーと敵などの制限に関するエンティティーだと思います。カートのキャプチャー時にプレイヤー以外のものに反応しないようにフィルターをかけているようなのでこの設定のまま使いましょう。
6 team_train_watcher
下の段の左に戻りましてトレインウオッチャー。文字通り列車を見るエンティティ。カートが今どこにあるかをHUDに連動する情報を扱うところです。
ここは後の説明になりますが、簡単に説明するとCPがどこのpathtrack(カートの移動するポイント)かを指定する物程度の理解でいいと思います。
7 team_control_point_master
このエンティティはコントロールポイントに関する設定のエンティティです。このマップはPLマップですが根本的なルールとしてコントロールマップの亜種として作られています。PLマップにはペイロードを運ぶコントロールポイントが必ず存在します。これらの設定としてこのエンティティが存在します。
またCPのHUDにおける並び順などの設定もあります。
8 game_round_win
ここの設定は主に勝ち負けに関する設定やマップの勝敗が付いた場合の赤青陣営の変更などの設定がメインになります。
このエンティティにINPUTを送ると勝ちや負けが決定します。
9 logic_auto
このエンティティはゲームが開始時に作動するエンティティです。プロパティには設定がほぼありませんがOUTPUTでいろいろな設定の出力が行えます。たとえばマップを読み込んだ時に音を鳴らす、ギミックを動かすなどなど。
10 filter_activator_name
このエンティティはカートが最後落ちる際、爆発するトリガーにこのカートだけが反応するようにフィルターを掛けるエンティティです。
もしこのフィルターを掛けないとカート以外の物理オブジェクトが反応して変なところでカートが爆発するバグが発生してしまいます。
11 team_round_timer
このエンティティはゲーム内の時間に関する設定です。
セットアップの時間やゲーム内の時間、延長があるのかなどの設定です。INPUT入力で時間の追加や変更などが出来、OUTPUT出力で時間が終わったとき、始まったとき、セットアップが終わったときなどに命令を出すことが出来ます。
ゲーム内の設定はこのくらい。長くなるようですので一旦ここで終わります。
次回はカートの動作部分について説明していきます。