不要ユニット識別用マーカー
Posted: 2007.Jul.11(Wed) 05:08
島風です。
夏っぽく、幽霊の話にビビリながら、早速本題です。
Nor様、おめでとうございます。
よく見つけはったですね。もう少しデータを見る必要がありますが、たぶん大丈夫ではないでしょうか。ただ、若干の解説が必要です。
「0」になっていたのは1ユニットだけで、それは「おそらく」脱出したcrewがやられちゃった場合のようです。「おそらく」と書いたのは、
ためです。
逆のパターンとして、Norさんにも送付したDRシナリオ#1、セーブデータ023.datでは、ポーランド軍の最後から2番目のユニット、Ursus A は、セクション1のB6列は「1」ですが、
でした。追加実験として、終了直前ターンのセーブデータで、敵の全ユニットについて、他の所は全くいじらずに、セクション1のB6列のみを「0」にしたらどうなるかをみてみました。その結果は、
でした。これらのことから推測されるのは、
i)はちょっとびっくりです。
うーん、シナリオ作者は、ここさえ「0」にしておけばそのユニットは無かったことにできますね。本来はデバッグと言うか、シナリオを練っていく仮定で、とりあえず作ったけど不要なユニットについてここを「0」にしておいて、最終段階ではデータから消すのでしょう。しかし、時間がなかったり、ついうっかり消し忘たりして、その結果、Norさんが大変な思いをすることになった、のでしょうね。
また、脱出したクルーですが、例えば戦車が破壊されるとAFVの損害が+1されます。その際に、乗員3名が脱出してその後破壊された場合、MENの損害に+3するとダブルカウントになるので、それを防ぐためにB6列が「0」になっているのでしょう。もしB6列が無ければ、あちこちのパラメータをいじくらなくてはなりませんが、B6列があるので、ここ1個だけフラグを立てれば済みますね。(脱出クルーの損害について、僕はダブルカウント無しと推測しましたが、正確なところはどうなのでしょう。ご存じの方がいたらおしえていただけませんか)
ii)で、「マップ上にいるかいないか」が「生存」と一見無関係なのは、飛行機や盤外砲は「マップ上にいなくても生存している」ことがあるためでしょう。
ポーランド軍のUrsus A は、セクション1のB6列は「1」ですが、シナリオには一切出てこないし、これも本当は作者の消し忘れで、不要ユニット扱いでもいいと思います。解析には役に立ったので消し忘れた作者に感謝です。
となっていました。 "rbhelp.txt"にはない設定があるのかなぁ。
夏っぽく、幽霊の話にビビリながら、早速本題です。
Code: Select all
セクション1のB6列は、不要ユニット識別用マーカーとして利用可能、と思われる。
よく見つけはったですね。もう少しデータを見る必要がありますが、たぶん大丈夫ではないでしょうか。ただ、若干の解説が必要です。
ををっ、とりあえず10シナリオ分のデータを見ましたが、確かに「1」が立っていますねっ、ほぼ全て。鍵は「B6」列です。ここはまだ未解読ですが、不要ユニットが存在する3つのデータのいずれでも、不要ユニットは全てB6列の値が0になっています(他は全て1)。
「0」になっていたのは1ユニットだけで、それは「おそらく」脱出したcrewがやられちゃった場合のようです。「おそらく」と書いたのは、
Code: Select all
1. セクション34の1E列の生存フラグは 0=dead となっている。
2. セクション17のユニット座標00〜03は「FF」で、このユニットはマップ上にはいないことになっている。
3. しかし、セクション1の79列の部隊の状態を表す数値は 0=Ready となっている。
4. セクション1の74列の部隊の残兵力を表す数値は 「3」、7A列の Damage は「0」となっている。
逆のパターンとして、Norさんにも送付したDRシナリオ#1、セーブデータ023.datでは、ポーランド軍の最後から2番目のユニット、Ursus A は、セクション1のB6列は「1」ですが、
Code: Select all
11. セクション34の1E列の生存フラグは 1=alive となっている。
12. しかし、セクション17のユニット座標00〜03は「FF」で、このユニットはマップ上にはいないことになっている。
13. セクション1の79列の部隊の状態を表す数値は 5=Destroyed となっている。
14. セクション1の74列の部隊の残兵力を表す数値は 「0」、7A列の Damage は「0」となっている。
15. 一方、セクション37の166列のside1のSVの現シナリオでの損害を表す数値は「0」となっている。
Code: Select all
B6列が「0」のユニットは、マップ上にも表示されないし、損害もカウントされない。
Code: Select all
i) セクション1のB6列は強力(ほぼ最強?)なフラグで、ここが「0」になると他のパラメーターを無視して、ゲームに存在しなかったことになる。
ii) 「生存」に関しては、セクション34の1E列の生存フラグが優先され、 1=alive となっていれば、たとえマップ上にいなかったり、セクション1でDestroyed となっていても、損害にカウントされないし、B6列が「1」であれば不要ユニットとは見なされない。
うーん、シナリオ作者は、ここさえ「0」にしておけばそのユニットは無かったことにできますね。本来はデバッグと言うか、シナリオを練っていく仮定で、とりあえず作ったけど不要なユニットについてここを「0」にしておいて、最終段階ではデータから消すのでしょう。しかし、時間がなかったり、ついうっかり消し忘たりして、その結果、Norさんが大変な思いをすることになった、のでしょうね。
また、脱出したクルーですが、例えば戦車が破壊されるとAFVの損害が+1されます。その際に、乗員3名が脱出してその後破壊された場合、MENの損害に+3するとダブルカウントになるので、それを防ぐためにB6列が「0」になっているのでしょう。もしB6列が無ければ、あちこちのパラメータをいじくらなくてはなりませんが、B6列があるので、ここ1個だけフラグを立てれば済みますね。(脱出クルーの損害について、僕はダブルカウント無しと推測しましたが、正確なところはどうなのでしょう。ご存じの方がいたらおしえていただけませんか)
ii)で、「マップ上にいるかいないか」が「生存」と一見無関係なのは、飛行機や盤外砲は「マップ上にいなくても生存している」ことがあるためでしょう。
ポーランド軍のUrsus A は、セクション1のB6列は「1」ですが、シナリオには一切出てこないし、これも本当は作者の消し忘れで、不要ユニット扱いでもいいと思います。解析には役に立ったので消し忘れた作者に感謝です。
情報ありがとうございます。DRの初期シナリオ、例えば39年のポーランドなどは、地形(05列)値はすべて「01」ですが、68列と天候は現在の天候値取得方法は、最初に地形(05列)値をチェックし、この値によって3パターンに分けた後、天候(68列)を表示しています。というのも、地形によって天候値の意味するところが違うようだからです。
Code: Select all
01, 02 : Hazy
03 : Clear
04, 05 : Rainning
06 : Thunder Storm