ホーム › フォーラム › TRI Gaming フォーラム › ARMA3 ミッションエディットスレ
-
投稿者投稿
-
2016年2月5日 2:22 AM #96240tricoキーマスター
↑HCは今いろいろテスト中です。
2016年2月5日 2:32 AM #96242tricoキーマスターお知らせです。
2月8日(月)に、以下のModをサーバーから削除します。@3cb_baf_vehicles
@CAF_AG
@hlc_ar15
@hlcmods_ak
@leights_opfor
@rds_ag_comp合わせてCoopサーバーのミッションをいったんリセットします。
エディタの方は上記Modを抜いた状態で動作確認して、ミッションリストに記入してから再度アップロードしてください。
お手数ですがよろしくお願いします。2016年2月5日 1:24 PM #96301く”らぅん参加者AK12消さないで下さい。一生のお願いです。
2016年2月5日 4:09 PM #96334Tempura9メンバー@hlcmods_akは消さないで下さい
2016年2月12日 12:03 PM #97772く”らぅん参加者CUP UnitsのTakistan Armyのファクションでバグを見つけました。
-
Automatic Rifleman (CUP_O_TK_Soldier_AR)
を入れると、
-
Bad vehicle type CUP_B_Civpack_WDL_RPK
と出てミッションを読み込めなくなります。
エディターの皆さんは修正が来るまでこのユニットを使わないようにして下さい。
特に既存ミッションのクラスネーム書き換えで使用してしまわないように気をつけましょう。2016年2月13日 8:23 PM #98051michy_REV19キーマスターMods Update #133の後、TRYKのNVG枠アイテムがArsenalに表示されなくなってしまったようです。(#132かもしれません)
原因はCUPか何かとの競合かと思われます。
問題はArsenalから取り出せなるだけですので、ギアスクリプトに組み込んだ場合や、イベントリに入れたアイテムに関しては問題なく使用可能です。(Arsenalを開くと消えるかどうかは未検証)
また一部のアイテムについては、フェイスウェア枠に殆ど同じ物が収録されているので、こちらの使用をお勧めいたします。TRYKのNVG枠アイテムは雰囲気重視のオサレ系が殆どですのでプレイに支障は出ませんが、見た目重視のミッションを作成したい方はご注意下さい。
(ここまで書いて自分だけだったらすみません…)
2016年2月14日 2:34 AM #981172016年2月15日 12:23 AM #98382michy_REV19キーマスターけっこう前から表示されてなかったんですね…しらなかった…
2016年2月16日 9:02 PM #98834nekokichi59メンバーSHK_Fastropeというファストロープスクリプトですが、8人でテストした段階では問題なく動作しました。
ただし、チヌークでファストロープを行うとテールローターが吹っ飛んでしまうようです…ACE3でファストロープが追加されるまでのつなぎにはなるかと!
https://forums.bistudio.com/topic/187445-shk-fastrope/2月17日追記:
BIFormにて、このスクリプトを使用したところFPSの低下やRAM使用量の増大が報告されているので使うなら少人数ミッションだけのほうが良いかもしれません。
トホホ…- この返信は8年、 8ヶ月前にnekokichi59が編集しました。
2016年2月17日 6:05 PM #99064michy_REV19キーマスター>>ただし、チヌークでファストロープを行うとテールローターが吹っ飛んでしまうようです…
ARMR3のPhysXロープの仕様で、ロープの付け根が機体にめり込んでいるとテイルローターに当たり判定が入ってしまうことがあるようです。ロープ作成座標のZ軸を下げて機体と干渉しないようにすれば直るかもしれません。機体との相対座標設定はユーザーコンフィグの下のアレイで調整できます。
ロープ自体の挙動についてはACE3の給油ロープが同じ物を使用しているので参考になると思います。
2016年2月18日 6:29 PM #99345takaゲスト本日、SHK_Fastropeを使用した29人ミッションをUPしてしまいました。
様子見て、SHK_Fastrope削除等の予定です。最近ミッション作るようになりました。遅れましたが宜しくご指導お願いします。
2016年2月18日 8:51 PM #99375michy_REV19キーマスターついにEden Editorの公開版がリリースされましたね!
3Dになったことでいろいろとパワーアップしているので、エディットを始めてみたいと考えている方はこの機会に是非!
BIの公式ガイドです↓
Eden Editor – Bohemia Interactive Community2D Editorからの移行のポイントについてはこちらです。
オブジェクト配置の際、Emptyサイドに車両が表示されないと思いますが、該当するサイドから乗員入りの車両を選択し、
Left-Alt
キーを押しながら配置すれば乗員が空になります。2016年2月25日 7:32 PM #100561classic参加者2016年2月26日 12:34 PM #100683tricoキーマスターEdenエディタについて。
・現在は2Dと3Dのエディタが両方あり、メインメニューからエディタを起動する時に選択できます。
・既存のミッション(sqmファイル)を3Dエディタで開くとインポートされ、2Dエディタで開けなくなります。ただし自動で作成されるバックアップファイルの拡張子をsqmにすると元に戻せます。
・3Dで保存したsqmファイルはバイナライズされますが、サイズが圧縮されてロード時間がちょっと短くなる以外に違いはありません。セーブする時にチェックを外すと今まで通りテキストで保存されます。
・将来的に(Apexで?)2Dエディタは削除されるらしいです。
3Dエディタの良いところ。
・オブジェクトの配置、建物の上階とかテーブルの上とかに物を置くのが楽。
・オートセーブ機能がある。
・Undo(巻き戻し)機能がある。
・Garbage Collection(死体と残骸が一定数以上になると削除する)が設定できる。
逆に欠点としては、
・一部のModが対応していない(Nimitzとか)、また予期しないModのバグがあるかもしれない。
・ちょっと重いので長時間の作業に向かない。
サーバーにアップするミッションは、今のところ2D・3Dどちらで作っても構いません。ただし既存のミッションを3Dにインポートした時は必ずプレビューできちんとオブジェクトが配置されているか確認してください。稀に物がちょっと浮いていたりすることがあります。
2016年2月27日 9:44 PM #100884michy_REV19キーマスターどうも皆様こんにちは、ミッションが完成しないことに定評のあるmichyでございます。
Edenエディタがリリースされ早一週間、新しいインターフェイスには賛否両論あるようですね。
ところで、私たちが普段遊んでいるマルチプレイでは、サーバーと複数のクライアントの間で処理した情報を相互に送信し合っており、処理をどこで行うか、その結果をどこに渡すか、ということが重要になっています。私自身もこれを理解するのにかなり苦労しましたが、最近ようやくわかるようになってきたので、本日はマルチプレイミッションでの処理位置について、注意すべきことをまとめたいと思います。上の方に埋もれてしまっている、Lineさんの書き込みも参考にしながらまとめさせていただきました。
※先駆者の皆様の二番煎じなうえに間違ったことを書いているかもしれません。もし何かあったら遠慮なく突っ込み入れてください。
※以下の構文はあくまで私流の書き方です。1.トリガーやウェイポイントでの処理
例えば、敵の自走式対空砲を破壊するタスクがあったとします。自軍はAltis島南東端の市街地Kavalaからスタートし、対空砲は北東端に位置するMolosの空港に配備されており、これを破壊することでタスク1を完了させます。このとき、対空砲に変数名
aagun1
を設定したうえでトリガーのコンディション欄には、!alive aagun1
といった形で、対空砲が破壊されているかどうか判定を行います。もし破壊されている(コンディション欄がtrue
である)なら、タスクの完了を判定する変数task1done
をtrueに
変化させるために、OnAct欄にtask1done=true
と記述します。タスクの完了判定はこれにて完了していますが、ほとんどのエディタの方は、
task1done=true
の記述とセットでpublicVariable "task1done"
といった記述をしているかと思います。このpublicVariableとは、変数を”全ての”クライアントに配信するコマンドです。なぜこのような処理が必要かというと、上の例で挙げたAltis島のKavalaとMolos間には直線距離でも20km以上の距離があり、Molosで対空砲が破壊された際にKavalaにいたプレーヤーが破壊を検知できない可能性があるためです。(もしかするとBIが、ユーザーによって変数名が指定したオブジェクトに対しては、ステータスを優先定期にブロードキャストするようなアルゴリズムを組んでいるかもしれませんが…)またJIP(途中参加)プレイヤーも同じように、参加直後にトリガーの状態を正しく受信できないことがありますが、publicvariableを噛ませることによって、正しく動作させることが出来ます。
まとめますと、タスクなどの重要な情報を処理する際には、publicvariable等のコマンドを使用して、全てのプレイヤーが共有出来るようにすることが重要です。
逆に入れると困るシチュエーションも無くは無いですが例外としておきます。publicvariableコマンド自体はよほど長いデータを配信しない限り重くならないはずなので、盲目的に入れてしまって問題ないと思います。2.イベントスクリプトでの処理
イベントスクリプトとは、BIによってファイルの名前と配置する位置(ミッションフォルダのルートディレクトリ)が決められており、決められた時にだけ実行されるスクリプトのことです。初めて聞く方もいるかもしれませんが、init.sqfファイルがこれにあたります。init.sqfは、ブリーフィング画面に入る前にサーバー及びクライアントで読み込まれるスクリプトです。この他にもいくつかイベントスクリプトがあるので、4つご紹介いたします。
・initServer…ブリーフィング画面に入る前にサーバーのみで読み込まれるスクリプト
・initPlayerServer…クライアントがミッションに参加したとき(ミッションスタート時のクライアントとJIPの両方)に、サーバーのみで読み込まれるスクリプト(チケット制PvPに便利?)
・initPlayerLocal…クライアントがミッションに参加したとき(ミッションスタート時のクライアントとJIPの両方)に、そのクライアントのみで読み込まれるスクリプト
・onPlayerRespawn…クライアントがリスポーンしたときにそのクライアントのみで読み込まれるスクリプトちなみに、エディタ上で記述できる各ユニットのinitialization欄のスクリプトは、ミッション参加時(JIP含む)に全てのクライアントとサーバーで読み込まれます。、
また、これらのスクリプトには実行される順番が決められており、複数併用した場合には注意が必要です。
基本的に通常のCOOPミッションでinit.sqf以外を使う機会は無いと思いますが、もし使う場合は実行されるタイミングと、サーバーで実行されるのかクライアントで実行されるのか、JIPに対応しているのか、という点に気を付けて選定してください。
3.スクリプトのグローバル効果
スクリプトコマンドには、効果がグローバルに反映される(=全てのクライアントで反映される)ものと、ローカルなもの(スクリプトを実行したクライアントだけで反映される)があります。スクリプトがグローバルなのかローカルなのかは、Bikiスクリプトコマンドの各ページに記載されています。(コマンド名の下のアイコンの一番右のやつ)
例として、addMagazineCargoとaddMagazineCargoGlobalを比較してみます。前者がローカル、後者がグローバルなコマンドです。(Arma3以前の作品では挙動の違いあり)名前から非常に似ていますね。これらはどちらも車輛や弾薬箱などのイベントリ内にマガジンを追加するコマンドですが、前述のとおり、addMagazineCargoではコマンドを実行したクライアントのみでマガジンが追加され、addMagazineCargoGlobalは参加している全てのクライアントでマガジンが追加されます。ここで注意しなければならないのが、グローバルエフェクトを持つコマンドを全てのクライアントで実行すべきでない場合がある点です。例えばグローバルなaddMagazineCargoGlobalコマンドをinit.sqfに記述してしまうと(init.sqfに書くことは無いと思いますが…)、全てのクライアントで設定した数のマガジンが生成されてしまいます。より具体的にいうと、STANAGを10本追加するように設定していて、30人のプレイヤーが参加していた場合、1つのイベントリに300本のSTANAGが追加されてしまう、という状態になってしまいます。もっと危険な例を挙げると、同じくグローバルなcreatUnitコマンドでこれをやらかしてしまうと、敵の増援が設定した人数×参加しているプレイヤーの人数分召喚されてしまい、味方は阿鼻叫喚状態になってしまいます。
これを避けるためには、サーバーのみで実行するようなコマンドを追加する必要があります。とり鯖で一般的に使用されている、イベントリにマガジン等を追加するスクリプトの頭には、
if (!isServer) exitWith {};
というコマンドがついていると思います。これは、もしそのスクリプトがサーバー以外で実行されていたら、{}内のスクリプトを実行するという記述で、{}内には何も入っていないため、何もせずに終了する、という動作をします。つまり、サーバーでない=クライアントで読み込まれた場合、1行目でスクリプトが停止するので、適切な数の弾薬を詰めることが出来ます。逆にテレポートスクリプトなど、サーバー側で実行されると困る場合もあります。その場合は、クライアントでなければスクリプトを停止する、という意味で
if !(local player) exitwith {};
という構文を追加すれば、クライアントのみで読み込まれるようになります。まとめますと、スクリプトコマンドには効果がグローバルに反映されるものとローカルで反映されるものがあり、グローバルエフェクトのコマンドを使用する場合には、どこで処理を行うのか考えてスクリプトファイルを作り必要がある、ということです。
いかがでしたか?文章を書くのは好きなのですが文才が無く乱雑で読みにくくてスミマセン…
少しでもエディタの皆様のお役にたてれば幸いです。- この返信は8年、 8ヶ月前にmichy_REV19が編集しました。理由: ☆超☆絶☆読み辛いのを修正
-
投稿者投稿
- このトピックに返信するにはログインが必要です。