スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
戦闘結果データ分析
戦闘結果をログ出力したい。よそ見していて戦闘結果画面をすっ飛ばしてしまい、夜戦突入すべきか否か、進軍していいものかどうかをしょっちゅう見落とすので、それを回避するため。
戦闘結果はflashで演出するために必要な情報は全てサーバから渡されているので、これを積算すれば戦闘結果になる、はず。

以下応答データを読み解いたメモ。

応答データのapi_data以下に戦闘詳細ログが掲載される。
以下の席次とは[0]欠番[1-6]自軍艦隊席次、[7-12]敵軍艦隊席次を表す。

api_dock_id:戦闘参加戦隊番号
api_ship_ke:敵艦隊艦艇IDリスト[0~6]ただし0は欠番、以下同じ
api_nowhps:戦闘参加艦艇現在HPリスト。0は欠番、[1~6]は自軍艦隊席次、[7~12]は敵軍艦隊席次
api_maxhps:戦闘参加艦艇最大HPリスト
api_midnight_flag:夜戦発生有無フラグ?、1で夜戦突入分岐あり、0でなし
api_eSlot:敵艦隊のスロット装備リスト配列
api_eKyouka:敵艦隊の強化状況リスト配列
api_fParam:自艦隊の戦闘パラメータリスト配列
api_eParam:敵艦隊の戦闘パラメータリスト配列
api_search:索敵結果配列、内容未分析
api_formation:艦隊隊列配列、内容未分析
api_state_flag:開幕航空戦のシーケンス情報、子配列構造
api_plane_from:自軍、敵軍の艦載機発艦艦艇席次配列[[n],[n]]の二次元配列になる。
api_stage1:航空戦のステージ1、恐らく制空権関連の参加艦載機と撃墜状況
api_stage2:航空戦のステージ2、恐らく航空雷撃と航空爆撃の参加艦載機と撃墜状況
api_stage3:航空戦のステージ3、恐らくダメージフェーズ
api_fdam:自艦隊の航空戦被ダメージ
api_edam:敵艦隊の航空戦被ダメージ
api_support_flag:支援艦隊の攻撃有無フラグ、1で支援あり、0で支援なし
api_support_info:支援艦隊の攻撃シーケンスデータ。内容不明だが砲撃戦フェーズ、航空戦フェーズ、雷撃戦フェーズがある可能性がある。支援艦隊編成に依存。
api_opening_flag:開幕攻撃有無フラグ、1で開幕攻撃あり、0で開幕攻撃なし
api_opening_atack:開幕雷撃のシーケンス情報、子配列構造
api_frai:自軍雷撃情報、席次の配列に敵軍の席次が1-6に収納される。0は雷撃なし?
api_erai:敵軍雷撃情報、席次の配列に自軍の席次が1-6に収納される。0は雷撃なし?
api_fdam:自軍の被ダメージ情報、配列構造
api_edam:敵軍の被ダメージ情報、配列構造
api_fydam:自軍の予ダメージ情報、配列構造
api_eydam:敵軍の予ダメージ情報、配列構造
api_fcl:自軍攻撃のクリティカル発生有無情報?、配列構造、1でクリティカル、0で通常or攻撃なし
api_ecl:敵軍攻撃のクリティカル発生有無情報?、配列構造、1でクリティカル、0で通常or攻撃なし
api_hourai_flag:砲雷撃戦のシーケンス情報、[0-3]の構造で[0]一巡目砲撃[1]二順目砲撃[2]三順目砲撃(おそらく未実装)[3]雷撃の発生有無を表す、1で攻撃あり、0で攻撃なし
api_hougeki1:一巡目の砲撃シーケンス
api_at_list:攻撃順序リスト、[0]は未使用で[1-12]に敵味方の攻撃順序が艦隊序列番号で配列設定する、自敵混在の席次
api_df_list:被攻撃順序リスト、[0]は未使用で[1-12]に敵味方の被攻撃順序が艦隊序列番号で配列設定する、自敵混在の席次
api_si_list:攻撃側艦艇の使用武器リスト、該当攻撃順序の艦艇が攻撃に使用する武器番号を配列設定する。-1は未使用もしくは航空攻撃。
api_cl_list:攻撃順序におけるクリティカルの発生有無を配列設定する?どれがクリティカルか否かは識別できていない。
api_damage:攻撃順序において発生したダメージ数を配列設定する
api_hougeki2:二巡目の砲撃シーケンス。内容は恐らく一巡目と同じ
api_hougeki3:三巡目の砲撃シーケンス。おそらく未使用
api_raigeki:雷撃シーケンス
api_frai:自軍の雷撃相手席次配列、敵軍のみの席次
api_erai:敵軍の雷撃相手席次配列、自軍のみの席次
api_fdam:自軍の被ダメ配列
api_edam:敵軍の被ダメ配列
api_fydam:自軍の与ダメ配列
api_eydam:敵軍の与ダメ配列
api_fcl:自軍のクリティカル発生有無配列?
api_ecl:敵軍のクリティカル発生有無配列?

■戦闘結果分析方法
api_nowhpsから自軍と敵軍のHPを取得する
api_stage_flag[2]が1の場合、航空戦のダメージ処理をする
api_support_flagが1の場合、支援艦隊のダメージ処理をする
api_opening_flagが1の場合、開幕雷撃のダメージ処理をする
api_hourai_flag[0-2]がそれぞれ1の場合、砲撃戦のダメージ処理をする
api_hourai_flag[3]が1の場合、雷撃戦のダメージ処理をする

※航空戦、開幕雷撃、雷撃戦のダメージ処理は同じやり方でいける
※被害状況さえわかればいいので与ダメージは当面積算しないでもよい

■HP取得処理
api_nowhpsから[1-12]の配列を取得する
全快からの被害状況を照会する場合にはapi_maxhpsも参照する

■航空戦
api_stage_flag[2]が1の場合以下のダメージ処理を行う
api_kouku.api_stage3.をルートとして
api_fdamから自軍の被ダメージを取得する
api_edamから敵軍の被ダメージを取得する

■支援攻撃
一度支援ログを出して確認する必要あり。航空攻撃と砲撃と雷撃で違いがあるかもみる。

■開幕雷撃
api_opening_flagが1の場合以下のダメージ処理を行う
api_kouku.api_opening_atack.をルートとして
api_fdamから自軍の被ダメージを取得する
api_edamから敵軍の被ダメージを取得する

■砲撃戦
api_hourai_flag[0-2]が1の場合以下のダメージ処理を行う
api_hougeki(n+1)をルートとして
api_df_list[n]から被ダメ艦艇席次を取得し、api_damage[n]から被ダメ数値を取得する

■雷撃戦
api_hourai_flag[3]が1の場合以下のダメージ処理を行う
api_raigeki.をルートとして
api_fdamから自軍の被ダメージを取得する
api_edamから敵軍の被ダメージを取得する


■戦闘結果レポート
案1
自軍と敵軍の「戦闘後HP/開戦時HP」のリストを出力する
案2
自軍と敵軍の「戦闘後HP/最大HP」のリストを出力する
案3艦隊全体の被害率をパーセンテージで追加表示する。(開戦時HPの合計を分母とし、戦闘後の残りHPを分子とするパーセント表示する。
スポンサーサイト
コメント
コメント
コメントの投稿
URL:
本文:
パスワード:
非公開コメント: 管理者にだけ表示を許可する
 
トラックバック
トラックバック URL
トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。