スポンサーサイト

--–--–-- (--) --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

それでも僕はやってない

2015–02–11 (Wed) 13:32
Arma3の現代戦MOD、RHS:Escalationが人気なので、既存のミッションのユニットをRHSに置き換えることにしました。
何かの参考になればと思い、私のとった方法を書き残します。とても野暮ったい方法で作業をしましたので、もっとスマートな方法をご存知の方は是非教えてください。



追記を読む
スポンサーサイト

部屋の戸から鬼が出より

2014–05–24 (Sat) 21:51
FSMの手習いを一つ作りました。
一定範囲内からランダムで建物を選び出し、これまたランダムなBuildPosにユニットを配置するものです。
BuildPosは建物の種類ごとにその数が決まっていますので、BuildPosが少ない建物を選んだ場合に大きなBuildPosの値を指定するとユニットは原点0,0,0へ配置されてしまいます。
そこで、ちゃんと範囲内の建物に配置されたかどうかを検出し、建物内に配置されるまでスクリプトを繰り返すようにしました。
とても簡単なループですので、FSMを把握する一助になれば幸いです。

http://www1.axfc.net/u/3244537.zip

RndBldPos.png

可能性は無限大

2014–05–18 (Sun) 23:26
ARMAにはFSM形式でのスクリプト処理が導入されていることをご存知でしょうか?
FSM(有限状態機械、有限オートマトンとも)とは、予め決められた初期状態から条件によって分岐しつつ、有限個の状態へと遷移するシステムのモデルのことで、論理学や計算機科学、言語学などの分野で利用されているそうです。
語弊を承知で表現すれば、スゴロクみたいなものだと思います。

さて、ARMA1以降のARMAシリーズでは、このFSMをスクリプト処理方法としてサポートしており、条件に応じて分岐や繰り返しが視覚的に管理しやすいスクリプト作成が可能となっています。
FSMの編集には、BISから提供されているFSM Editorかユーザー製のFSM Editを利用することになります。
BIはModuleの動作にFSMを頻繁に利用しており、pboファイルを解凍することでその内容を把握することが出来ます。

coc.jpg
FSMで記述されたHigh CommandのChain of Commandです。

FSM Editorは2014年5月現在で制約を抱えています。
sqfファイルなどをテキストエディタで編集する場合とは異なり、スクリプトコマンドの補完やハイライトが使えないほか、
各状態ごとに条件や実行内容を記述していくため、スクリプト全体の検索や置換などが出来ません。
sqfとfsmで実行できる内容には違いがありませんので、両者を目的に応じて使い分けることも必要ですし、
下図のようにfsmファイルをテキストエディタでも編集し、内容を精査する場合もあるかもしれません。
text.jpg
なお、FSM Editではハイライトが可能なようです。

ARMAのFSMには8種類のアイテムが用意されています。
それらは条件分岐を行うCondition、スクリプトを実行するState、可読性向上のために線を折り曲げるknee(関節)の3つに大別できます。
icons.jpg

State同士やCondition同士を直接繋ぐことは出来ず、必ずstateとconditionが交互に続くことになります。

Stateにはfsmの開始状態であるStart State、fsmを終了するEnd State、それ以外のUser Stateの3つがあります。

Conditionには、状態が遷移した直後に条件が判断されるCondition(黄)、他のConditionが満たされない限り、それが満たされるまで待ち続けるUser Condition(白)、
他のConditionが満たされなければ常に採用されるTrue Condition(ネズミ色)、機能不明なInput Condition(水色)があります。
各Conditionには優先度(priority)が設定されており、複数のConditionが同時に満たされている場合は、値の高いものが優先されます。

F1キーでアイテムの新規作成、F2で移動、F3キーでアイテム同士の接続ができます。
このあたりはARMAのミッションエディタと似た感触ではないでしょうか。

File→Page Setup→Enable Gridをチェックすることでアイテムをきれいに整列させることができます。
また、FsmAttributes→Compile ConfigからFSM Editorフォルダ内のscriptedFSM.cfgを指定することで、"No Compile Config Specified!"と表示されるエラーを回避できます。
fsm形式で保存したスクリプトをミッション内で実行するためにはexecFSMコマンドを使用します。

正直なところ、私もまだ使い始めたばかりですのでFSM Editorのすべてを理解しているわけではありませんが、指揮官を含む人間の意思決定やミッションの状況判定の再現をはじめ、非常に多彩な表現を可能にするスクリプト作成方法だと思います。

みーまいん

2014–04–10 (Thu) 00:28
マルチプレイヤーの防衛ミッションで指揮をとった際、プレイヤーの方々の貴重なプレイ時間を対戦車地雷の敷設というデジタル田植え作業以外のことに充てられないかと思い、シンプルな地雷敷設スクリプトを作りました。

以下のURLからダウンロードしていただけます。
http://www1.axfc.net/u/3219253.zip

このスクリプトの全般、とくに散布界の制限についてはStratoさんに多大なアドバイスをいただきました。

●使い方
mineLayer.sqfの先頭行にあるように、以下の2行を敷設ユニットのinit欄に記述してください。

totalCount = 0;
mAct=this addAction ["Laying mines","mineLayer.sqf",[this,20,30,7,3],0,true,false,""];

引数の1番目は散布界の制限角度です。ユニットの前後に指定した角度の2倍の範囲には敷設されません。
引数の2番目は散布範囲です。メートル単位で指定してください。
引数の3番目は1度に敷設される地雷の個数です。
引数の4番目は1台のユニットが地雷を敷設できる(actionを実行できる)回数です。

時代はグローバル化だよチミィ

2014–03–22 (Sat) 00:40
Armaのスクリプトコマンドは、マルチプレイヤー環境での働きによって2種類に分類することができます。
そのスクリプトが実行されたコンピュータ上でのみ作用する(ローカルな)ものか、あるいはゲームに参加している全てのコンピュータに作用する(グローバルな)ものか、という点です。
より丁寧な説明は、私の魂のブートキャンプ、Arma訓練所さんをぜひご覧ください。

さて、スクリプトの仕様はBIのゲームデザイナーによって設計されているものです。
ローカルな影響力しかないスクリプトの効果を、マルチプレイヤーの参加者全体に及ぼしたくなることだって皆さんもあるかもしれません。私はあります。

ただ、私の知恵では負担の少ない実現方法が浮かびませんでした。
そこでBIforumで聞いてみたところ、BIS_fnc_MPの使い方を教えてもらったので、例を基にご紹介します。



追記を読む

ゲームの中のMocap

2013–01–03 (Thu) 13:43
ARMA2はとても手続き的なゲームです。
非常に複雑で多様な状況を最小限の原則の組み合わせによって作り出すことが、基盤的な方法論として深く根付いているように見えます。
例えば、どのような地形にも対応できるMicroAIや戦況を自動で生成するWarfareモード、数値を入力するだけで市街地を生成するGITAモジュールなど、ゲームを構成する各要素が手続き志向で作られていると捉えることができます。

この手続き志向はARMA2の大きな特長ではありますが、反面AIユニットに特定の行動を確実に実施させるような、結果志向のエディティングに対するサポートは従来それほど重視されてきませんでした。
その点を補うために導入されたのがムービー再生機能や、これからご紹介するunitCaptureファンクションではないかと、個人的には考えています。

さて、unitCaptureとは、プレイヤーユニットの挙動を記録し、AIユニットに再現させる機能です。
航空機に特定の経路を飛行させたり、捕獲対象のユニットを特定の場所に逃げ込ませたりするのに有効だと思います。
ただ、これは位置、方向と発砲の情報を記録するだけですので歩兵に適用した場合、棒立ちのまま地面の上を滑るように移動してしまいます。

方法は以下のとおりです。


1.プレイヤーユニットの挙動を記録します。

構文:[記録対象,記録時間,記録コマ数(FPS),発砲情報の記録,開始時間] spawn bis_fnc_unitCapture;
後ろ3つの引数はオプショナルですので、省略しても問題ありません。

例文:n=[myVehicle,150,30,true] spawn bis_fnc_unitCapture;

上記例文だと、myVehicleの挙動と発砲情報を150秒間、30FPSで記録します。
実際に試して頂ければおわかりのように、記録中はescキーを押すことで任意のタイミングで記録を終了できます。

記録後はゲームが停止しますので、F1キーで移動情報を、F2キーで発砲情報をクリップボードにコピーし、
sqfファイルに転記してください。

2.sqfファイルを作成します。
挙動と発砲情報を書き込み、それぞれを名づけ、実行ファンクションで呼び出す形になります。

構文:
[実行ユニット,位置情報] spawn BIS_fnc_UnitPlayFiring;
[実行ユニット,発砲情報] spawn BIS_fnc_UnitPlayFiring;
例:
_move=とても長い挙動情報;
_fire=そこそこ長い発砲情報;

[myAIVehicle,_move] spawn BIS_fnc_UnitPlay;
[myAIVehicle,_fire] spawn BIS_fnc_UnitPlayFiring;

発砲情報はタイミングと武器しか記録されませんので、ターレットの選択やターゲット、発砲方向などは再現できません。ちょっともったいないですよね。


ネタ元:[OA] UnitCapture & UnitPlay Functions

What I Wrote Is What You See

2012–11–25 (Sun) 14:25
地理的な情報の共有や意思決定について、現状のARMA2のCOOPでは地図上にマーキングした経路や目標を移動しながらGPSで確認する程度です。
複数班での行動プランを共有したり今後のプランを相談する際に、よりわかりやすいコミュニケーション方法があればプレイの質が高まると考え、ちょっとしたスクリプトを書いてみました。
地図をクリックすると地図上にドットマーカーが置かれると同時に、3Dのマップ上にも半透明の球体が置かれるものです。
一人で試してみたところ、状況によっては役立つこともありそうだとは感じました。
ただ、地図を見ながらの書き込みではなく3Dのマップ上を指定してオブジェクトを置く方が扱いやすいケースもありそうです。
オブジェクトの色・種類選択はインターフェイスが煩わしくなるので現実的では無さそうです。


objList=[];
mkList=[];

_trgOn = createTrigger["EmptyDetector",[0,0,0]];
_trgOff = createTrigger["EmptyDetector",[0,0,0]];
_trgDel = createTrigger["EmptyDetector",[0,0,0]];

_trgOn setTriggerActivation ["Hotel","PRESENT",true];
_trgOff setTriggerActivation ["INDIA","PRESENT",true];
_trgDel setTriggerActivation ["JULIET","PRESENT",true];

_trgOn setTriggerStatements ["this","

onMapSingleClick {
_obj = 'Sign_sphere100cm_EP1' createVehicle _pos;
_obj setPos [getpos _obj select 0,getpos _obj select 1,1.5];
objList set [count objList,_obj];
_mk = createMarker [format['mk%1',random 10],_pos];
_mk setMarkerShape 'ICON';
_mk setMarkerType 'Dot';
_mk setMarkerColor 'ColorBlack';
mkList set [count mkList,_mk];
};",""];

_trgOff setTriggerStatements ["this","onMapSingleClick {};",""];
_trgDel setTriggerStatements ["this"," {deleteVehicle _X}forEach objList;
{deletemarker _X}forEach mkList;",""];

_trgOn setTriggerText "Activate 3D Markers";
_trgOff setTriggerText "Deactivate 3D Markers";
_trgDel setTriggerText "Delete All 3D Markers";

色づきやがって・・・

2012–02–12 (Sun) 11:39
以前作った地形の高低差可視化スクリプトをもうちょっと便利にしました。
スクリプトを操作することなく、エディタ上での操作だけでどんな地形でも自動的に色分けできます。

○使い方
・stratPosと名づけられたユニットを色分けしたい範囲の左下に置く
・endPosを範囲の右上に置く
・lowestを範囲内で最も低い場所に置く
・highestを範囲内で最も高い場所に置く
・色分けの細かさをプレイヤーのinit欄に書く
・おもむろにミッションスタート

http://www1.axfc.net/uploader/Sc/so/318293.zip

Keep It Simple Stupid!

2011–12–30 (Fri) 14:33
前回のCOOPミッションを製作してからちょうど1年くらい経ちました。
当時は、「UH-1Y Venomから降り注ぐ無数のミニガンの曳光弾を地上の兵士として眺めたい」という欲求に基づいて歩兵とVenomのミッションを作りましたが、
実際にプレイしてみてもらったところ、「ACE版VenomのFLIRによる効果的な警戒監視能力と微妙な打たれ弱さが従来とは違うゲームプレイを可能にするんじゃないか」という感触を得ました。
そこで、前作の複雑さを少し取り払い、Venomの攻撃能力を過信するのをやめ、もう少しシンプルに
「戦闘する人(歩兵)と戦闘をプランニングする人(VenomのObserver)を分け、冷静な作戦行動を容易にする」ことをテーマにもう一本作りました。

ACE@CO11 Junco Partner v1.1
http://www1.axfc.net/uploader/Sc/so/305247.zip

作るほうとしてはなんだか物足りない感じもしますが、たまには技術的野心のないミッションもアリかな、というのが個人的な心境です。

タイトルの"Junco Partner"は手持ちの音楽の中から適当なものをチョイスしました。
"Junco"という単語がユキヒメドリのことだと辞書に載っていたので前作"Early Bird"との繋がりで採用しましたが、
よくよく調べると、その曲では"Junky"つまりヤク中のことを指していました^w^


ネコの手も借りたい

2011–12–27 (Tue) 13:34
ARMA2が発売されたのは2009年の6月、2011年12月現在から遡って2年以上前のことです。
このゲームは当時から今までの間、唯一無二の戦闘環境シミュレータとしての地位と名声とを獲得し続けてきました。
ですがマルチプレイの人口という観点では、緩やかに下降線を辿っているというのが個人的な実感です。

具体的に言えば、Peca Tacticalの最盛期は18人程度のミッションをプレイしていましたが、現在では8~10人程です。
当然のことながら、人数が減れば出来ることは少なくなってきます。
8人のプレイヤーのうち3人を車両手に取られたり、4人を重機班に回すことになったら歩兵分隊として成り立ちません。

ですので、High Commanderモジュールを積極的に活用してミッションの幅を広げようと考えました。
普通にHCモジュールをシンクロ線で繋いでもマルチプレイ環境でうまいこと動作するのですが、
コマンダーが死んだ際に継承させることが求められる場面もあろうかと、スクリプトを書いてみました。
一人でDedicated Serverを立ててテストした限りではうまく動作しました。
他のユニットに認識されないとユニットの死亡がグループに影響を及ぼさないというエンジンの仕様により、
一つのグループが完全に消滅した後の継承は少し時間がかかるようです。

http://www1.axfc.net/uploader/Sc/so/304387.zip

 | HOME |  次へ »

プロフィール

Monotone

Author:Monotone
わーいぐだぐだランドでーっす

最新記事

最新コメント

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。