1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WoWS MODつくるよ(開発環境構築&チュートリアル編)

Last updated at Posted at 2023-02-06

WoWS MODつくるよ(開発環境構築&チュートリアル編)

WoWSとはWarGaming社が提供するオンラインゲームWorld of WarShipsのことです
MODはゲームプレイにおいてユーザに許可された改造機能の総称で、外観変更や音声変更、支援情報の表示ということができます。
日本語で検索すると出てくる情報には、見た目を変更するテクスチャ系MOD、音声を変更するMODなどありますが、情報支援型のGUI系MODの作成情報はほぼありません。

リリース7年経過したゲームであり
MODの開発環境がPython2 + Flash(AIR/ActionScript3)+ XMLという現在トレンドからはずれ、SDKは本家のサポートもはずれており
いずれロストテクノロジーと化すであろうことから個人的な忘備録として記載します。

この記事開発環境は「開発はできる」が「最適解でない」ことは片隅にいれておいてください
よって以後更新される場合があります

1.環境構築編

開発環境は仮想マシンで用意するのがよいです
現在使用中の環境に、異端な環境を構築すると他の開発時にしなくてもよい苦労に見舞われます
よって仮想マシンを立ち上げましょう

2.必要なソフトの用意

以下表のソフトをダウンロードします

No. Name Link subscript
Flashdevelop Flashdevelop でダウンロードまたはhttps://github.com/fdorg/flashdevelop よりソースコードを取得しビルドします VisualStudio2022でビルド出来ています
AIR https://airsdk.harman.com/download License Agreementにチェックを入れ[AIR SDK for Windows]をダウンロードします。ActionScriptのコンパイラとなります。
Flex SDK https://flex.apache.org/installer.html Sourceをダウンロード
Java https://www.java.com/ja/download/manual.jsp Flex実行に必要
wows_library.swc https://github.com/qMBQx8GH/mxmeter/commit/43e7786693aea1378d248f7fee877c82f652eae4 WoWS用ActionScript3 ライブラリ
MODのベース https://forum.worldofwarships.com/topic/174245-modapi-contentsdk/ リンク先のModsSDK_ver.zipおよびxml2as.zipを取得

3. 環境のセットアップ

以降は仮想環境内で作業します

・AIRを任意の場所に展開し、環境変数のPathに ~binを登録
→ $ adl が実行できること
・Flex SDKを任意の場所に展開し、環境変数のPathに ~binを登録
→ $ fcsh が実行できること

・Flex SDKフォルダのenv.template.propertyのバックアップを作成
・env.template.propertyをenv.propertyにリネーム
・env.property内の変数AIR_HOMEにAIRを展開したパスを記述し保存
	#AIR_HOME → AIR_HOME=D:\\AIR

4.チュートリアルの実装

WoWSのGUIはゆるいMVCモデルで大まかに「C」がPython「V」をFlashが担当しています
「C」と「V」をつなぐI/Fをwows_library.swcが担っています
「M」はゲームクライアント内で取得できるデータが規定されておりユーザがそれ以外の情報を取得することはできないようになっているので今回は考えません。
取得できる情報はMOD APIの解説ページにある内容で全てです。
https://forum.worldofwarships.com/topic/174161-modapi-documentation/?tab=comments#comment-4093916
ゆるいと述べたのは「V」側のFlashで与えられたパラメタを元にした計算結果を描画することができ、この箇所でユーザへの情報支援を制御できます


Pythonコード

チュートリアルのPythonコードをコピペして適当な名前で保存します

Main.py
API_VERSION = 'API_v1.0'
print ('Hello World!')
Flash(SWFファイル)

・チュートリアルプロジェクトをAS3で作成

・プロジェクトと同フォルダにwows_library.swcをコピー
・[Project] -> [Property]を設定します
image.png
・[Compiler Option] -> [SWC Include Libraries]にwows_library.swcを配置したディレクトリを設定

・AIRとFlexをSDKとして登録
[SDK]->[Manage]->[AS3Context]->[Installed Flex SDKs]
image.png

・プロジェクトにActionScriptソースコードを作成

Main.as
package
{
    import lesta.api.ModBase;
    import flash.text.TextField;
    import flash.text.TextFormat;
    public class Main extends ModBase
    {
        private var tf:TextField = new TextField();
        public function Main()
        {
            super();
        }
        override public function init():void
        {
            super.init();
            var format:TextFormat = new TextFormat();
            format.size = 40;
            gameAPI.stage.addChild(tf);
            tf.defaultTextFormat = format;
            tf.text = "Hello World!";
            tf.textColor = 0xFF0000;
            tf.width = 250;
        }
        override public function fini():void
        {
            super.fini();
        }
        override public function updateStage(width:Number, height:Number):void
        {
            super.updateStage(width, height);
        }
    }
}

この時点でFlashDeveloperでのプロジェクトツリーは以下のようになっています

・ビルドします

Main.swfが生成されます。(違う名前で生成した場合はMODフォルダコピー時にリネームすること)
image.png

エラーが出る場合
	エラーメッセージを確認してください
	・AIRかFlexのパスが通っていないか
	・プロジェクトのPropertyが誤っていないか
	大体これに集約します

5.チュートリアルMODの動作テスト

先行してModStationなりAslainなりで情報支援系のMODを入れてください
諸々必要なファイル群がセットされます
次に2か所に作成したファイルを配置します

・PnFMods

/bin/一番大きい数字/res_mod/PnFMods 内に新規MODのフォルダを作成し
前項で作成したpython,swfファイルを配置します。
双方の拡張子以外の名前は同じである必要があります

・Unbound

/bin/一番大きい数字/res_mod/gui/unbound
上記PnfModからフォルダ毎このフォルダ内に作成したMODを配置します

クライアントの起動

WoWSクライアントを起動し、MODが動作しているかを確認します
・pythonの確認
profile/python.log より作成したMODの文字列を検索してください
[ERROR]となっていなければ、認識成功・クライアントで読み取りできたということになります。
image.png
※Warningはでていますがswf foundということで認識できています

・swfの確認
今回のチュートリアルでは画面上に文字列を常に表示するというものです
クライアント画面左上にActionScriptでセットした文字列’Hello World’が表示されます
MOD-enable.jpg

まとめ

まずはGUI MODのベース部分が動くようになりました
今後ここから機能を追加していきます

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?