ArmA3 エディタ講座 プレイヤーグループと搭乗

PCを買い換えました。

ミーハーですのでVRを遊んでみたかったのですが、以前のPCがGTX680だったために推奨条件を満たせず、ならばこの機会にとGTX1080を中心にしたBTOパソコンを買ってみたり。

VRの推奨を満たせなかった…以外に特にGTX680で不自由もしてなかったのですが、買い換えてみるととてもいいですね。

さて、今回はプレイヤーグループの搭乗のお話です。

以前に「AIがヘリに乗って、特定の場所で下車する」というウェイポイントの組み合わせをご紹介しましたが、これはウェイポイントの特性上プレイヤーグループをCPUの乗り物に乗せる~といった場合には非常に具合が悪かったりします。

そこで今回は1つスクリプトを挟ませて「プレイヤーグループが全員乗ったら乗り物が出発」という状態の作り方をご紹介します。


まず最初にウェイポイントの特性ですが、多くのウェイポイントは「分隊全員が達成したら…」ではなく「分隊長が達成したら…」でクリアになってしまいます。

例えば『Get in』は分隊全員が乗車したらではなく、分隊長が乗車した時点で達成されてしまいます。

車両の『Load』も同期しているウェイポイントの分隊長が乗ってしまえば達成されてしまうので、要は機械的に乗車命令を出すCPUの場合は乗車命令によって車両が拘束されますが、中身がプレイヤーの場合ですと、プレイヤーが乗ってから部下に乗車命令を出そうとした場合に勝手に乗り物が走り出してしまうわけです。


と、いうことで「プレイヤー分隊が全員乗ったら…」というスクリプトで車両を制御してしおう!ということですね。

今回もステップ~形式で解説していこうと思います。


ステップ①

まずはプレイヤー分隊にグループ名を与えます。

要は『group』スクリプトです。

『適当なグループ名 = group グループに割り当てたい対象』というスクリプトなのですが、例えば分隊長(プレイヤー)のinitに『Player_Group = group this』という風に書き込むと、プレイヤーの分隊=『Player_Group』といった具合になります。

ステップ②

ウェイポイントに条件をつける。

つまり「乗り物のウェイポイントにプレイヤー分隊全員が乗ったら…」という条件をつけます。


さて重要なのはプレイヤー分隊のメンバー数は戦闘の激しさによってケースバイケースになるということです。

8人分隊だったけど3人しか生きていない場合もあれば、7人生きてる場合もあるし、プレイヤー以外みんな死んでしまった…という場合ももちろんあるわけですね。

ですので単純に『in』だけではダメなわけです。


そこで今回使う例文は『({_x in 乗り物の名前} count units ステップ①で決めた分隊名) == (count units ステップ①で決めた分隊名)』になります。

今回の場合は装甲車に『apc』という名前をつけて『({_x in apc} count units Player_Group) == (count units Player_Group)』といった感じになります。


これで残った分隊員数にかかわらず、分隊全員が乗ったら~という条件になったわけです。

これはテンプレートとして覚えちゃったほうが楽かと思います。

ちなみにトリガーのSkip Waypoint(昔でいうSwitch)でもよいのですが、今回はエディタ上をシンプルにするために乗り物のウェイポイントのConditionにそのまま書き込んでしまいます。

また、この条件が達成されない限りは動かないので別に『Load』でなく『Move』でも大丈夫ですし、またプレイヤー分隊側も『Get in』をわざわざおいて同期する必要もなくなります。

以上のツーステップで完成です。

とてもシンプルですね。

これでプレイヤーが先に乗ってしまったガばかりに離陸してしまったヘリコプターや走り出してしまった装甲車、そして突然走り出した装甲車に撥ね殺されてしまう分隊員…といった事故を極力低減させることができます。


サンプルミッションもご用意しましたので、文章だけではよくわからないなーという方は実際に中をのぞいてみてください。

https://www.axfc.net/u/3785599.zip


最後に、VRもいろいろと試してみたのですが、今の技術レベルだと結構ジャギってしまうようですね。

例えばゲーム上の小さな文字とかはわりと読み取れないってのが多々あったりします。

VRの内部解像度をあげれば良いのですが、ぶっちゃけGTX1080でも2.0くらいまであげちゃうとフレームレートが30きっちゃったりと、まぁ基本的にはゲームにならないってのが多いですね。

といってもそれを補ってあまりある臨場感は格別です。

ARMA3でも早くVRを使いたいのですが、別途ARMAをVR対応させるソフトが必要だそうで、まだ手間取っています。

VBS3がVRに対応したそうですし、ArmA3もいつかVR対応するんじゃないかと思うと、そのために別途ソフトを買うのもどうかなぁという気がしてしまうんですよね。


現状はえっち////////なゲームにもっぱら使ってるのですが、早くいろいろな本格的なゲームで使ってみたいですね。

個人的にはHomeworldみたいな宇宙戦RTSで使えたらとても面白そうだと常々…

(控えめに言って、とてもドキドキする)

”ぐるじあん”のグルジア趣味日記

1コメント

  • 1000 / 1000

  • Sebbi

    2018.01.09 04:36

    はじめまして。突然のコメントですみません。 色々と参考にさせて頂いてミッションを作っているのですが、今回行き詰ることがあり、コメントさせていただきました。 もし、お時間があれば相談に乗って頂けると嬉しく思います。 やりたい事なのですが以下になります。 全てAIが操縦します。 ①AI操縦のヘリがキャンプに着陸(WP移動 条件にheli01 land "land" ;を使用) ②分隊がヘリに搭乗、目標地点へ輸送(WP移動、条件に({_x in heli01} count units PG) == (count units PG); を使用) ③分隊をドロップ(WP infantry paradrop を使用) ④ヘリがRTB(①と同じ条件を使用) 現状、このような内容を作りたいと思っているのですが、②で躓いています。 ①でヘリがヘリポートに着陸しエンジン停止後、乗り込んでいますが離陸しませんし、エンジンも始動しません。 また、①で "land" を "get in" にしてもエンジンが、かかっているだけで移動は開始されませんでした。 こちらで紹介されています車両では私も成功しました。 航空機となるとうまくいきません。 突然のことで大変申し訳なく、厚かましいですが、ご指導頂けますと大変助かります。 よろしくお願い致します。 Sebbi