■ Scriptに関する調査報告 ■

OFPミッションを作るにあたってスクリプトは便利ですよね!
スクリプトを使えば、標準で用意されていない機能も作ることができますし〜♪

んが!どうもこのスクリプト・・・ちょっと注意が必要なようです
調査実験した結果をここにまとめておきますね
(周知の事実でしたらごめんなさい)

突然ですが、私が作るミッションではスクリプトを多用しています。
そのおかげでバグも多発していたりするのですが・・・(汗

しかし、最近良く分からないバグに遭遇し始めました。
症状としては、自分だけでテストした時は問題ないのに、マルチプレーを行うとうまく行かないのです!

そこで、この深刻的な問題に対して我がProject Iチームは特別捜査本部を設け、長年に渡り、原因究明に力を注いできました。
本日(2003年6月1日(日))その成果が出たのでここに発表します

まず、次の実験結果をみてみましょう
これはスクリプトにてランダムに兵士を一人殺害(!)する実験です

この実験ではマルチプレーで2人で行っています


そして、これがスクリプト実行後の結果です

んん!?
おかしいですねぇ??
1人しか死なないはずなのに2人も死んでしまっています

ん〜〜ん〜〜
何かありそうですねぇ?


ということで結論!!! Σ(゚Д゚;)はやっ!

どうやらOFPではマルチプレーをしている時に、それぞれのパソコンで独立にスクリプトを実行しているようです
当然、スクリプト内で使われている変数に関しても独立です
これは、スクリプトをセンサーで起動しようが、ユニットの初期化で起動しようが、Radioで起動しようが、結果は同じでした

大抵の場合は、特にこれでも問題ないのですが、次のような場合は注意が必要です

� .薀鵐瀬爐鮖箸�場合

ランダムを使った場合、ネットで繋いである全てのパソコンで同じ値が出てくるという保証はありません

例えば、変数Aに1〜10の値を代入し、それを当てるという場合、パソコンによってAの値は異なるため、答えは複数存在することになります

(Go Land SEではこの種のエラー)

�◆ ̄藹仂紊量簑�

例えばプレーヤーが乗ったT-80が砲撃を受け、破損し、歩きを余儀なくされるというミッションを作ったとしましょう。

この時スクリプトでT-80に砲弾を3発ほど(乗員が死なない程度に)当てたりしますが、このミッションをマルチプレー4人で行った場合、それぞれのパソコンで独立に砲弾を当て始めるため、T-80には合計12発の砲弾が当たることになります。
その結果T-80は大破、炎上することとなるでしょう・・・

(Go Land SEのオープニングでも、この傾向があります(汗))