コンテンツにスキップ

Ch99.1: Your own event map support

怠け者の開発者は、イベントサポートの更新に時間がかかりすぎる。
自分でイベント更新パックを作ってみてはどうでしょう?


付録 ‐‐ イベント海域のサポートを作成する

警告: kcauto の Python 環境を持っていない場合、独自の更新パックを作成することはほぼ不可能です(kcauto/kca_enums/nodes.py にアクセスできないため)。
(2025/11/12 の更新によりノード定義が data/combat/map_enum.json に分離されたため、通常ユーザーにとっても、このガイドは使えるはずです。)

以下の 3 つをアップデートする必要があります:

  1. アセット (assets/combat/_event_next_page_<X>.png および assets/combat/_event_world_E-<X>.png)
  2. マップデータ (data/combat/E-<X>.json)
  3. ノード (data/combat/map_enum.json)

アセット (Assets)

アセットについては、マップアイコンの参照画像をキャプチャする必要があります。
元画像:
image
ターゲット:
_event_world_E-1

また、次ページボタンも必要です。
元画像:
next_page_event.png

ターゲット:
next_page_event_sample.png

次に、assets/combat/_event_next_page_<X>.png および assets/combat/_event_world_E-<X>.png のファイルを置き換えます。


マップデータ (Map data)

kcauto が戦闘と基地航空隊を処理できるように、マップデータを設定する必要があります。
まずは、マップ画像を用意します。
個人的には 艦これ Wiki から取得しています。
スケーリングされていない画像が必要なので、使用するソースには注意してください。

image

信頼できるマップ画像の入手先


ミニツール tool/map/mapCoorUpdater.py がマップデータの作成を補助します。この Python ツールの必要ライブラリは tool/map/mapCoorUpdaterRequirement.txt にリストされています。

ツールを実行すると、KC3 のソースコード から最新のマップエッジデータを取得します。
KC3 がイベントマップデータを更新した後にこれを行うようにしてください。

image

マップ座標アップデーター

基本情報を入力し終えたら、各ノードの座標を定義する必要があります(参照:issue#20 および discussion#71):

  1. マップの左上をクリックします。
  2. ツールのガイドに従い、必要に応じてノードタイプを設定します。
    キーを押してください:
    • o:オプションノード
    • a:対空ノード
    • s:対潜ノード
    • b:ボスノード
  3. 各ノードをクリックします。

image

ノード C をオプションノードとして設定

top_left

画像上のクリック位置

image

E-4.json の設定が完了した mapCoorUpdater


ノード (Nodes)

kcauto が処理できるように、すべてのノードは data/combat/map_enum.json に定義されています。

ただし、新しく更新されたノードをファイルに手動で追加する必要はありません。
tool/map/maps_generater.py を実行すると tool/map/map_enum.json が生成されます。
その後、data/combat/map_enum.json を tool/map/map_enum.json で置き換えてください。

マップデータのデバッグ

E-X.json ファイルをデバッグする必要がある場合に備えて、古い E-5.json を見てみましょう。マップデータはマップ内のノード、エッジ、敵のタイプを定義します。

{
    "world": "E",               // イベントマップ
    "subworld": 5,              // 第 5 海域
    "panel": 1,                 // 1 番目のパネル(上側)に配置。例:E1〜E3 がすべて 1 ページ目にある場合に必要
    "page": 3,                  // 3 ページ目に配置
    "enemy_context": [          // このマップに出現する敵のタイプ。任務モジュールにデータを提供
        "subs",
        "carriers",
        "transports"
    ],
    "nodes": {                  // すべてのノードの座標。ゲームウィンドウ(ブラウザや画面ではなく)の左上からのオフセット
        "A": {
            "coords": [
                157,
                273
            ]
        },
        ...
        ...
        "L2": {
            "coords": [
                775,
                424
            ]
        }
    },
    "edges": {                   // すべてのノード間のエッジ。艦これの API で定義されている
        "1": [
            "Start 1",
            "A"
        ],
        ...
        ...
        "37": [
            "V",
            "U"
        ]
    }
}