WoWS - AP爆弾の精度はドイツより日本(2021/8/21更新)

追記(2021/8/21)

  • GZの散布を追加
  • ドイツ空母ツリーの精度を更新

結論

タイトルの通りです。結論だけ書くと、AP爆弾の精度はドイツより日本の方が優れています。
日独両方プレイした人は感覚で気づいたかもしれません。

知っていても役立たないどころか、回避中にバイタル3枚食らって「運ゲーマンがよぉ...」って不快になるだけの知識。
以下興味ある人向け

詳細

爆弾散布界の基本

このゲームにおける爆弾やロケットの基礎散布界は、弾体に設定された以下の要素で決定されます。

  1. 最大散布界: 空母操作中に見える緑の楕円
  2. 中心散布界: 不可視の楕円(基本的には最大散布界>中心散布界)
  3. 中心散布界への命中率: 弾体が中心散布界の楕円内に行く確率

f:id:Kawaii_14:20210827085507p:plain


例外として、ダイナモ作戦の敵空母は「最大散布界<中心散布界 かつ 中心散布界への命中率100%」となっています。

基礎散布界に影響を及ぼすものとして、機体に設定された拡散率(機体を左右に振ると悪化するアレ)があります。

  1. 最大拡散率: 攻撃開始直後または機体ラダー操作により悪化する散布界の最大倍率
  2. 最小拡散率: 機体操作を行わず、攻撃円を最も収束させた際の散布倍率(多くの場合1.0倍)

攻撃開始(基礎散布界*最大拡散率)→収束→最良精度(基礎散布界*1.0=基礎散布界) へ遷移する仕組みです。
(当然ではありますが)この拡散率は最大・中心散布界をともに変化させます。つまり、楕円が広がるにつれ見かけ上の精度は極端に悪化していきますが、中心散布界への命中率が高ければ一定数の着弾が期待できます。
最大拡散率は白竜(2.5倍)>リヒトフォヘン(2.0倍)なので攻撃開始前の楕円は白竜の方が広く見えますが、基礎最大散布界は同様のため、収束させると同じ大きさになります。

各APDBの最大散布界と中心散布界

*縦, 横は楕円の長軸, 短軸にそれぞれ対応しています。

機体 最大散布界(横) 最大散布界(縦) 中心散布界(横) 中心散布界(縦) 中心散布界への命中率
ライン, 鳳翔 0.83 3.33 0.42 1.67 75%
龍驤, 翔鶴(初期) 1 4 0.62 2.48 75%
ウェーザー 1 4 0.62 2.48 50%
グラーフツェッペリン 1.87 2.33 1.16 1.45 75%*1
翔鶴(後期), 白竜 1.17 4.67 0.79 3.16 75%
パーシバル 1.17 4.67 0.79 3.16 58%*2
リヒトホーフェン 1.53 5.92 1.18 4.74 66%*3

中心散布界への命中率における差が精度のばらつきを生み出しています

*1:0.8.10PT前: 50%

*2:0.8.10PT前: 50%

*3:0.8.10PT前: 50%

WoWS - 水中弾通知Mod

概要

タイトルまんまです。自分が撃った、または受けた弾が水中弾となった場合に通知を出します。
水中弾で発生する謎判定やバイタルが起きた時に「納得」できます。知識があると面白い、というだけのMod。
被弾した場合は最後に(received)が追加されます。

f:id:Kawaii_14:20200810202711p:plain
自身の射撃により水中弾が発生した場合
f:id:Kawaii_14:20200810202852p:plain
水中弾で被弾した場合
ダウンロード

drive.google.com

導入方法
  • ZIPを解凍します。
  • res_modsフォルダ内に"PnFMods"というフォルダを作成します。
  • 先に作成したPnFModsフォルダへ、解凍したUnderwaterHitフォルダを移します。(ファイル構造は res_mods\PnFMods\UnderwaterHit\Main.pyのようになります)
f:id:Kawaii_14:20200810203924p:plain
ファイル構造
  • res_mods直下に"PnFModsLoader.py"という空のパイソンファイルを作ります。適当なテキストファイルを作って拡張子を.pyにすればOK
f:id:Kawaii_14:20200810204014p:plain
PnFModsLoader.py

以上

Changelog
  • 10/25: 他のModと競合するバグの修正。処理、ファイル容量の軽量化。
  • 04/09: 処理改善。前の仕様がアホすぎた

バグ等何かあったら教えて下さい。ウルトラワイドモニタで作成・プレイしているので、FHDだと表示位置がよくないかもしれません(未確認)

WoWS - 双眼鏡ズームイン時間・角度の設定方法

カメラ設定は"(ゲームフォルダ)/bin/(バージョン番号)/res"内の"cameraConsumer.xml"に保存されています。これをコピー・編集してres_modsに入れることで変更を適用できます。
Aslain等でズーム倍率を変更している場合コピペは不要です。res_mods内に生成されているものを直接編集してください。

このファイルをNotepad++で開いておいてください。メニューバー→表示→全て畳む、の操作をしておくと見やすさが向上します。

設定項目

ズームイン・ズームアウト時間

ズームイン: SnakeTail_zoomin
ズームアウト: SnakeTail_zoomout
でそれぞれXML内を検索すると、下記画像のような項目が出てきます。timeタグの間を好みの数字に変更してください。単位は秒です。

f:id:Kawaii_14:20200805142503p:plain
例: zoomin
爆弾投下後に艦載機視点へ戻る時間

gotoTrackPlaneで検索してください。minTimeとmaxTimeをそれぞれ小さい数字にすることで、爆弾追従後のカメラを即時、艦載機に戻せます。

f:id:Kawaii_14:20200805144128p:plain
gotoTrackPlane
ズームイン時の俯角

俯角制限を解除すると近距離戦で役立ちます。ただし、カメラの設定をどれだけ有利にしても、実際の弾道は砲塔そのものの俯角に依存します。

f:id:Kawaii_14:20200805185110p:plain
変更する場所

上記画像で示されている部分(modes→snake_tail→states)を探してください。
states以下の各stateがカメラのズーム段階に対応しています。
stateを開くとminPitchというタグがあります。この数字を負の(絶対値が)大きい数(-90等)に変更してください。

この操作を全てのstateタグに繰り返すと、どのようなズーム段階であっても俯角を取ることが可能になります。

f:id:Kawaii_14:20200805185429p:plain
minPitchに適当な数字を入れる

WoWS - 迎撃戦闘機の詳細性能一覧(0.11.0)

艦載機消耗品(と母艦自衛用)の迎撃(パトロール)FTの性能一覧です。0.10.10時点。

母艦FTの消耗品はPCY038_FighterAutoにあり、そこでは国籍やTierに関わらず同じ戦闘機(PAAF001_Grumman_F3F)が指定されています。しかし、実際に使用されるのは(船)/(船体)/consumablePlaneTypesに記載されている戦闘機です。

共通項目
召喚にかかる時間[秒] 6
敵機が防衛エリアに侵入してから迎撃を開始するまでの猶予時間[秒] 5
追撃継続時間[秒]*1 40
視界(船、艦載機のスポット可能距離)[km] 15
被発見距離[km] 7.5
共通でない項目

一部例外には別途注記があります。

機体 速力[ノット] HP その他
Ranger 221 125
Lexington 235 163
Enterprise 235 163
Saipan 238 208
Midway 266 203
Roosevelt 266 203
Furious 221 164
Ark Royal 221 164
Implacable 235 215
Indomitable 235 238
Audacious 266 289
Bearn 221 1670 視界(船、艦載機のスポット可能距離): 2km
Weser 221 355
Loewenhardt 221 355
Parseval 235 565
Graf Zeppelin 235 565
Richthofen 266 203
Immelmann 266 203
龍驤 211 123
翔鶴 235 158
加賀 235 139
白竜 266 180
Serov 221 123
Pobeda 221 123
Chkalov 221 123
Nakhimov 221 123
Sanzang 238 208
TIPS
  • 戦闘機にも抗堪専門家や攻撃機改良2などの効果は適用されます
  • イギリスは比較的高耐久、ドイツは高耐久、ソ連は速度が一定、というようにツリー毎のフレーバーがあります
  • ドイツ(ティアによらず150ノット固定)を修正した後にソ連迎撃機(221ノット固定)を出してくるWG、何故なのか
  • Bearn(フランス空母)の戦闘機は(プレイヤー操作が操作する)T10艦載機並みの耐久を持ち、T6で全滅させるのは至難の業
  • 設定上、ドイツ迎撃機は攻撃態勢中の被ダメージ軽減効果(x0.7)を持ちますが、機能していません

*1:この時間が経過しても目標に追いつけない場合、追跡を諦め元の位置へ戻る

Gameparams.json(WoWS内部データ)の解説

 参考前記事↓ 

kawaii-14.hatenablog.com

 

上記手順で進めていくと"gameparams.jsonというファイルが生成されるはずです。この記事はこのJSONファイルの見方を説明します。ただし、「全砲弾のうち跳弾優遇があるものだけを調べたい」「船の質量を列挙したい」といった深い用途に関しては、データ構造のみ頭に入れて処理はPython等で頑張るといいです。間違っても手作業で探したりしないように...。

1. 前準備 JSONファイルを開く

  1. まずはNotepad++をインストールしましょう。詳しい方法はGoogleに聞いてください
  2. Notepad++でGameparams.jsonを開きます。ファイルが巨大なため数秒~程度フリーズします。
  3. JSONが正常な場合、画面左端に折りたたみボタンが出てきます。
    画面左下にJSON Fileの表示がない時はファイルの破損が考えられます。その場合はもう一度Gameparams.dataから.jsonを生成してみてください。

    f:id:Kawaii_14:20200629012248p:plain

    正常な場合の表示


  4. 画面上部ツールバーの「表示」から「すべて畳む」をクリックしてください。この操作でNotepad++が数分固まりますが、Twitterでも見ながら待ってください。処理が終了すると展開ボタンだけが残されます

    f:id:Kawaii_14:20200629013104p:plain

    折りたたみが正常終了
  5. 展開ボタンを押すと全IDが一覧表示されます。ここがスタートラインです。

 

2. データの構造

一覧表示された各要素はすべて

P(国籍1字)(種別1~2字)(三桁の番号)_(要素の名前)

で表されます。例えば、ミッドウェイの前期、後期第一(HVAR)、後期第二戦闘機(Tiny Tim)はそれぞれ「PAAF110_Midway_stock」「PAAF210_Midway_top」「PAAF310_Midway_top」(Parameter, America, Aircraft, Fighter, 1~3: 1:初期, 2:後期, 3:後期別ルート, 10: Tier10)です。番号部分については例外も多いのですが、最初3~4字のアルファベットは必ずこのルールに従います。国籍(2文字目)と種別(3文字目)の主要項目一覧は以下の通りです。

  

国籍
アメリ A
イギリス B
共通要素(アップグレード, 消耗品, 天気, シナリオの敵, コレクション等) C
フランス F
ドイツ G
イタリア I
日本 J
ソ連/ロシア R
イギリス連邦 U
パンアメリ V
パンヨーロッパ(ネザーランド/ポーランド/スウェーデン) W
パンアジア Z
イベント X

―――――――――――――――――――

種別
戦闘機(Aircraft, Fighter) AF
雷撃機(Aircraft, Bomber) AB
爆撃機(Aircraft, Divebomber) AD
弾着観測期(Aircraft, Scout) AS
カタパルト(Catapult) C
射撃管制装置(Director) D
モデル上書き(Exterior, Model, 注:ブラック艦艇等) EM
迷彩(Exterior, Permanent camouflage/Skin) EP
ES
EC
測距装置(Finder) F
対空砲(Gun, AA) GA
爆雷投射機(Gun, B?) GB
主砲(Gun, Main) GM
副砲(Gun, Secondary) GS
魚雷発射管(Gun, Torpedo) GT
砲弾(Projectile, Artillery) PA
爆弾(Projectile, Bomb) PB
爆雷(Projectile, Depthcharge) PD
ロケット(Projectile, Rocket) PR
魚雷(Projectile, Torpedo) PT
火器管制レーダー(Radar, Firing) RF
捜索レーダー(Radar, Search) RS
空母(Ship, Aircraft carrier) SA
戦艦(Ship, Battleship) SB
巡洋艦(Ship, Cruiser) SC
駆逐艦(Ship, Destroyer) SD
潜水艦(Ship, Submarine) SS
その他艦艇(Ship, auXiliary) SX
主砲パーツ(Unit, Artillery 注: 以下「パーツ」は船のアップグレード情報) UA
雷撃機パーツ(Unit, Bomber) UB
爆撃機パーツ(Unit, Divebomber) UD
船のエンジンパーツ(Unit, Engine) UE
航空管制パーツ(Unit, Flight control) UF
船体パーツ(Unit, Hull) UH
戦闘機パーツ(Unit, fIghter) FI
潜水艦の聴音機パーツ(Unit, hydroPhone) UP
射撃管制装置パーツ(Unit, S?) US
魚雷発射管パーツ(Unit, Torpedo) UT
艦長(creW) W
要塞等(Building, シナリオ等の要塞) B*
永久旗(Exterior, Ensign) EE
消耗旗(Exterior, Flag) EF
実績(acHievement) H
クラン施設(J?, Building) JB
ランボーナス(J?, Modifier) JM
アップグレード M
エンブレム, ドックタグ等 N*
物資関連(Others, Drop 注:軍拡等のアレ) OD
OE
マップ境界 OG
天気(Others, Weather) OW
消耗品 Y

3. 船のパラメータ

長くなるので詳細はまた別に記事で出します。

船のパラメータを展開すると更にいくつかの子要素があります。どんなものがあるか軽く記述するだけに留めます。

例: PASB510_Ohio オハイオ

  • A1_FireControl: 射撃管制装置
  • A_ATBA: 副砲(副砲による対空パラメータを含む)
  • A_AirArmament: カタパルト
  • A_AirDefense: 対空砲
  • A_Artillery: 主砲
  • A_Engine: エンジン
  • A_Hull: 船体
  • apDamageLimitCoeff: 駆逐艦の強制過貫通に使われる。0.1で10%制限, 0で無制限
  • level: Tier

4. 艦載機のパラメータ

長くなるので(略)

  • aiming~: 照準中の艦載機に関わるパラメータ
    -aimingAccelerationModifier: 攻撃態勢中の加速
    -aimingAccuracyDecreaseRate: 精度悪化速度(小さいほどよい)
    -aimingAccuracyIncreaseRate: 精度向上速度(大きいほどよい)
    -aimingTime: 攻撃体制維持時間
    -aimingHeight: 攻撃準備高度(*30でメートル単位になる)
  • attack~: 攻撃そのものに関するパラメータ
    -attackAngle: ロケットの打ち下ろし角度
    -attackInterval: 一度の攻撃で複数の弾体を撃ち出す場合の攻撃ディレイ(ロケット、ミッドウェイの爆撃等)
    -attackCooldown: 攻撃間のディレイ(爆撃機で9s)
    -attackCount: 一度に撃ち出す弾体の数
    -attackerHeight: 攻撃高度(*30でメートルに)
    -attackerSize: 一度の攻撃に参加する機体数
  • disable~: 攻撃後の操作不可能な艦載機に関するパラメータ
  • forsage~: エンジンブーストに関するパラメータ
    -forsageRegeneration: エンジンブーストの回復量
    -forsageRegenerationDelay: エンジンブーストの回復が始まるまでの時間
  • hangerSettings: 艦載機のハンガー(機数, 回復時間)に関するパラメータ
  • maxSpread, minSpread: 弾体に設定された散布界に対する係数
  • postAttackInvulnerabilityDuration: 攻撃後の無敵時間
  • preparation~: 攻撃準備に関するパラメータ
    -preparationTime: 攻撃準備時間
    -preparationTurnAccelerationModifier, TurnSpeedLimit: 攻撃準備中の旋回制限

5. プロジェクタイルのパラメータ

砲弾について

  • alphaDamage: 砲弾の直撃ダメージ
  • alphaPiercingCS(HE): SAP(HE)砲弾の貫通力
  • ammoType: 砲弾種別(CS=SAP)
  • bulletAirDrag: 砲弾の空気抵抗係数
  • bulletAlwaysRicochetAt: 砲弾の強制跳弾角度
  • bulletRicochetAt: 砲弾の跳弾不可角度
  • bulletDetonator: 信管爆発ディレイ
  • bulletDetonatorThreshold: 信管作動に必要な装甲厚
  • bulletCap: 砲弾標準化の有無
  • bulletCapNormalizeMaxAngle: 砲弾標準化の最大角度
  • burnProb: 発火率
  • damage: 爆風ダメージ
  • depthSplashRadius: 水面下の潜水艦への攻撃半径
  • splashArmorCoeff: 爆風貫通力
  • splashCubeSize: 爆風の大きさ
  • floodGeneration: 浸水を起こすか
  • uwCritical: 浸水発生率
  • buoyancyToDamageCoeff: 潜水艦への深度別ダメージ係数
  • ignoreBuoyancyStates: 攻撃が通らなくなる潜水艦深度
  • pointsOfDamage: 潜水艦への爆風ダメージ距離減衰
  • ignoreClasses: 攻撃を無視する艦種

爆弾、ロケットについて

  • fallingTimeCoef: 弾体の落下時間を強制的にスケーリングする係数
  • innerSalvoSize/outterSalvoSize: 弾体の散布界。楕円の大きさ(*30でメートル単位になる)
  • innerBombsPercentage: 全弾体中、innerSalvoSize内に着弾するものの割合

魚雷について

  • acousticDetection: ソナーピンガーによる誘導パラメータ
  • damageCoeffMaxPing: 魚雷が最大ダメージを与えるのに必要なソナーピングの数
  • isDeepWater: 深度魚雷か否か(魚雷アイコンが変わる, ignoreClassesに何も指定しなければ「駆逐艦にも当たる」深度魚雷も可能なはず)
  • maxDist: 最大射程(*30でメートル単位に)
  • speed: 雷速(雷速*2.685でm/s単位に)

 

これ以上の詳しい内容については直接聞いてください

Googleスプレッドシートで「計算式が無効です」と表示される問題

Googleスプレッドシートで色々やっていたんですが、とあるシートに条件付き書式(カスタム数式)を設定しようとしたところ「計算式が無効です」と表示される現象に悩まされていました。
また、=SUMなんかに指定したセルがセルとして認識されない...等もありました。
当然ながらそれぞれの式は正しく、他のブックだと問題もなく設定/動作するのを確認しているにも関わらず、です。

日本語で検索しても一切引っかからず、英語で調べてようやく原因を見つけたので一応備忘録として残したいと思います。

参考元: Custom Formula for Conditional Formatting Invalid

原因:
「ブック作成者のロケール(言語や時間、数字表記の設定)が日本語以外だと、関数が正しく動かないことがある」です。(正確には、引数同士の区切りが日本語と違うせいで動かないだけです)
ブックのロケールGoogleスプレッドシートの「ファイル>Googleスプレッドシートの設定」を辿っていくと「言語と地域」という欄で確認できます。これが日本語以外だった場合に冒頭のような問題が起きます。特に、ロシア語のような、位区切りやデリミターが特殊な(?)言語になっていたらコレで間違いないです。

解決策:
ブックの言語設定を日本語に変えるか、変更できない(したくない)場合は該当言語のデリミタを使えば解決します。今回私がひっかかったロシア語の場合、引数同士の区切りは「,」(カンマ)ではなく「;」(セミコロン)でした。原因を探るのが比較的難しいだけで、解決は簡単です...。

余談: 日本語設定のブックの場合、セミコロンとドットのどちらもデリミタとして認識してくれる(セミコロンを入れると自動でカンマにしてくれる)一方、ロシア語はセミコロンしか受け付けない(カンマを入れると引数として認識されない、自動修正もされない)みたいです。これも原因究明を遅らせた一因でした。
自分で作ったブック(=日本語ブック)でテスト→普通に動く上にデリミタ修正してくれるじゃん→...どうして特定ブックだと動かないの...?ってなりがち

同じことで悩む人が減るといいなあと思います

データマイニングの方法(gameparams.dataの解読) 2020/05/22追記 0.9.5対応

お船の詳細なスペックデータや艦長スキル、港で見えない装甲厚を知る方法です。
英語で検索すれば出てきますし、あるいは若干の知識があれば自分でParseできるため、パブリックに公開する気はなかったのですが

「スラバの精度は巡洋艦と同じ」
オハイオはモンタナと同じ程度の性能」
「特殊艦長の、実績トリガーで発動する効果は永続する」

といった、明らかにデータと異なるデマや根拠に乏しい話がまことしやかに囁かれ、SNSや配信で拡散されてゆくのに耐えきれませんでした。
みんな自分でデータマイニングして、正論と数字でデマを殴ろう!

  1. WoWS Unpackerを手に入れてください。Googleに「wows unpacker」と入れれば出てきます。

  2. 「wows_unpacker_gui.exe」と「wowsunpack.exe」をお船のフォルダに入れます。
    (デフォルトならC:\Games\World_of_Warships_Asia。preferences.xml等と同じ階層へ置きます)

  3. 「wows_unpacker_gui.exe」を起動して左下の「Load Content」をクリック、暫くするとコンテンツツリーが出てくるので「res\content\GameParams.data」を選択。
    画面中央下の「>>」ボタンをクリック、右側のペインに「GameParams.data」が移動したのを確認したら右下の「Unpack」をクリック
    sav


  4. ゲームフォルダに「res_unpack\content\GameParams.data」が出来ていたら次のステップへ
    (C:\Games\World_of_Warships_Asia\res_unpack\content\GameParams.data)

  5. 次にPython3をインストールします。Googleで「Python3 インストール」と調べましょう。
    インストール時に「Add Python 3.x to PATH」という設定があるので、必ずオンにしておきましょう。

  6. 下のGoogleドライブからZIPをダウンロードしてください。元々はPython2用に書かれたものをPython3用にスパゲッティ化書き換えたものです。コードの評価は受け付けてません、というかそれが出来るなら自分で書く方が早いと思います!
    winkusai

    https://drive.google.com/file/d/1_vFfDUZPhV7aA-qPWCI1t-Qupj2b2K-s/view?usp=sharing
    0.9.5以降は下記のParamsDecode.pyを使用してください。爆雷の設定でキーにタプルが利用されているせいで旧版だとエラーを出します。
    https://drive.google.com/file/d/1I23OOLGCXQ15o6XZvGKsnZm11lygLlK2/view?usp=sharing


  7. ZIPを解凍して「GameParams.py」と「ParamsDecode.py」を適当なフォルダに置いてください。

  8. あらかじめ解凍した「GameParams.data」を「GameParams.py、ParamsDecode.py」と同じフォルダに入れます。
    kca

  9. Python3のインストール時に設定を変えていなければ「ParamsDecode.py」をダブルクリックするだけで処理が始まります。
    追記: "newline" is an invalid keyword~というエラーが出る場合は、Pythonのバージョンを確認してください。きちんと3.x以降がインストールされているにも関わらずに出る場合は「Python デフォルトバージョン 変更」等で調べてみてください。(ParamsDecode.pyを右クリック→Edit with IDLE 3.7→画面上部のRun→Run moduleでも正常に動きます)

  10. 「all_IDs.txt」「gameparams.json」というファイルが生成されます。
    内容はそれぞれ「船、天候、艦長、モジュール等の全ID一覧」「それぞれの詳細パラメータ」です。

  11. 「gameparams.json」をNotepad++あたりで開きましょう。もはや全てがあなたの手中です。これからはデマやいい加減な情報に惑わされないようにしましょう。
    それぞれのパラメータの見方はいつか別記事で書きたいと思います。ただし、パッチ配信後にサーバー側で性能が変更された場合は次のアップデートまでクライアントに反映されないので注意してください。
おわり
είμαι ο δρόμοςη αλήθεια και η ζωήΚανείς δεν έρχεται στον Πατέρα εκτός από μένα
τετέλεσται