予め断っておくと、この知識の使い道はありません。
内容
船体のモジュールや区画は、見かけのHPが0でも生存することがある。(以下、HPを持つ部位全てを「モジュール」と表現する。主砲、副砲、艦首艦尾などを含む)
仕組み
モジュールの状態は以下の形で整数にパックされ、サーバーから送信されている:
見て分かる通り、モジュールのHPは正確な数字ではなく、最大HPに対する残りHPの割合が送られてくる。
クライアントがこの割合からHPを復元する際には、1023で割った数に最大HPを掛けることになる。
したがって、各モジュールのHPが表現できる最小の値はで表され、最大HPの増加に伴って精度が悪化していく。
ただし、サーバー側では正確な数値を保持しているため、この値パック/アンパックによってゲームプレイ上の結果は変化しない。また、モジュールの生存状態は別途(途中3ビット)送信されているため、クライアント側の処理としても問題が発生することはない。
モジュール最大HPと表現できる最小HPの早見表
モジュールの最大HP | 表現できる最小HP |
1000 | 0.978 |
5000 | 4.89 |
10000 | 9.78 |
50000 | 48.9 |
例: 最大HP50000のモジュールでは、残りHP48も1も同じ(どちらも計算上0になる)
余談
検証のため「実際のモジュールHPは残るが、割合としてパックした値は0」になる組み合わせを計算した。
射撃対象として主砲HPを基準にしている(乱数がなくわかりやすいため):
砲弾アルファダメージ(攻撃側) | 砲塔HP(ターゲット側) | 破壊直前の砲塔に残るHP | 割合で表現できる最小HP | 備考 |
2150 (Östergötland) | 20000 (Kremlin, Soyuz, GK) | 5 | 19.55 | 貫通できないので検証不可能 |
4650 (Tallin) | 20000 (Kremlin, Soyuz, GK) | 5 | 19.55 | |
8650 (Yoshino, Azuma) | 11250 (211~379mm主砲) | 5 | 10.00 |