開発

注釈

このページはWindowsでの開発を仮定しています。

THRotatorのソースコードの入手

gitによりTHRotatorのリポジトリをクローンしてください。

次に、コマンドプロンプトでクローン先のディレクトリにカレントディレクトリを移し、 git submodule update --init を実行します。このコマンドにより、外部ライブラリの fmtjson.hppImGui のソースコードが取得されます。

THRotatorのビルド

ここでは、THRotatorのビルドするまでの手順を説明します。

ビルドに必要なソフトウェアは、次の通りです。

  • Microsoft Visual C++ (2015以降)
  • Boost C++ Libraries
  • CMake

Microsoft Visual C++ のインストール

注釈

インストール済みの場合は不要です。

Visual Studio のホームページ から、Visual Studioをダウンロードしてください。エディションは無料で利用可能なCommunityで問題ありません。

Visual Studio 2015以降の場合、Visual C++がデフォルトでインストールされないので、インストールオプションでVisual C++をインストールするように設定を変更してください。

Boost C++ Libraries のインストール

注釈

filesystem モジュールがビルド済みの場合は不要です。

Boost C++ LibrariesCurrent Release から最新版をダウンロードし、適当なディレクトリに解凍します(例えば、 C:\boost\ など)。

次に、boostの filesystem モジュールをビルドします。

  1. 使っているOSが64 bitの場合は、 スタートメニューVisual Studio 20XXVS20XX x64 Native Tools コマンドプロンプト 、32 bitの場合は、 VS20XX x86 Native Tools コマンドプロンプト を開きます。
  2. 開いたコマンドプロンプトで、解凍したboostの、 bootstrap.bat のあるフォルダへ移動します。
  3. bootstrap.bat を実行します。
  4. b2.exe が出来上がるので、そのあとに b2 --with-filesystem runtime-link=shared,static を実行します。

CMake のインストール

注釈

CMake 3.5 以降をインストール済みの場合は不要です。

CMakeのホームページDownload にある、最新のリリース(Latest Release)から、以下のいずれかをダウンロードし、インストーラの場合はインストールを行ってください。

  • Windows win64-x64 Installer (64 bit OS向けインストーラ)
  • Windows win64-x64 ZIP (64 bit OS向け実行ファイル)
  • Windows win32-x86 Installer (32 bit OS向けインストーラ)
  • Windows win32-x86 ZIP (32 bit OS 向け実行ファイル)

使っているOSが64 bitの場合は、プラットフォームはwin64-x64、win32-x86の両方を使えますが、32 bitのOSの場合はwin32-x86しか実行できません。

プロジェクトファイル生成

  1. CMakeをインストーラからインストールした場合は、 スタートメニューCMakeCMake (cmake-gui) を実行します。直接ダウンロードした場合は、 bin\cmake-gui.exe を実行します。
  2. Where is the source code: に、THRotatorのソースコードがあるルートディレクトリのパスを入力します。
  3. Where to build the binaries: に、プロジェクトファイルの生成先、およびビルドを行うディレクトリのパスを入力します。
  4. Configure ボタンを押します。Generatorの選択画面が出るので、ここで Visual Studio XX 20XX を選択し、 Finish ボタンを押します。Win64、ARMが付いているものは選択しないでください。
  5. BOOST_INCLUDE_DIR に、boostのインクルードディレクトリ(bootstrap.batがあるディレクトリ)のパスを入力します。
  6. BOOST_LIB_DIR に、boostのライブラリディレクトリ(デフォルトでは、 <boostのインクルードディレクトリ>\stage\lib )を入力します。
  7. 再度 Configure ボタンを押し、エラーがなければ Generate ボタンを押します。

ビルド

  1. プロジェクト生成先にある THRotator.sln を開いてください。
  2. 5つのプロジェクトが読み込まれます。
  • ALL_BUILD (すべてのプロジェクトをビルドするプロジェクト)
  • d3d8 (Direct3D 8版THRotator)
  • d3d9 (Direct3D 9版THRotator)
  • localization_en-US (THRotatorの英語UIリソースDLL)
  • ZERO_CHECK (CMakeが自動で生成)
  1. Direct3D 8版をビルドしたい場合は d3d8 、Direct3D 9版をビルドしたい場合は d3d9 をビルドしてください。

ローカライズ

THRotatorはWindowsのMultilingual User Interface (MUI)による、GUIやエラーメッセージの多言語化が可能です。

新しい言語を追加する際は、英語版のリソースをテンプレートとして容易に作成可能です。フランス語を追加することを例に、作成の流れを見ていきましょう。

注釈

ここでは、具体的な翻訳については扱いません。

1 テンプレートをコピー

  1. まず、ひな型となる localization_en-US があるフォルダに、新しく localization_<言語名> を作成します。言語名は、 Available Language Packs for WindowsLanguage/culture name です。また、このページには Language hexadecimal identifier に言語IDも記載されていますので、このIDもメモしておきます。今回はフランス語を例としていますので、 localization_fr-FR を作成します。また、言語IDの 0x040c をメモしておきます。
  2. localization_en-US の中にある、 CMakeLists.txtresource.hTHRotator_en-US.rc を、新たに作成した localization_<言語名> (今回は localization_fr-FR) にコピーします。
  3. localization_<言語名>\THRotator_en-US.rc を、localization_<言語名>\THRotator_<言語名>.rc (今回は THRotator_fr-FR.rc)にリネームします。

2 CMakeの準備

  1. localization_<言語名>\CMakeLists.txt を開き、 en-US となっている部分を、 <言語名> に置換します。また、 set(language_id 0x0409)0x0409 を、メモしておいた言語IDに置き換えます。今回は言語IDが 0x040c なので、 set(language_id 0x040c) に変更します。localization_<言語名>\CMakeLists.txt の編集は以上です。
  2. ソースコードのルートフォルダにある CMakeLists.txt を開き、最後の行に add_subdirectory(localization_<language name>) を追加します。

フランス語の例では、localization_fr-FR\CMakeLists.txt の中身は次のようになります。

# resource language and its ID
# for a list of languages and IDs, visit https://msdn.microsoft.com/en-us/library/hh825678.aspx
set(language fr-FR) # Edited
set(language_id 0x040c) # Edited

include(../internationalization/THRotator_i18n.cmake)

また、ルートフォルダにある CMakeLists.txt の中身は次のようになります。

# Abbreviated

add_subdirectory(d3d9)
add_subdirectory(d3d8)
add_subdirectory(localization_en-US)
add_subdirectory(localization_fr-FR) # Added

3 プロジェクトファイルの生成

本ページの プロジェクトファイル生成 で説明している方法で、プロジェクトファイルを生成します。

4 翻訳

THRotator.sln を開きなおすか、再読み込みすると、プロジェクト localization_<言語名> が追加されているはずです。

Visual Studioのリソースビューを開き"localization_<言語名> の中にあるString Tableやダイアログリソースを翻訳していきます。String Tableやダイアログリソースのプロパティの Language が、 英語 (米国) になっていますので、翻訳先の言語に変更してください。フランス語の例では、 フランス語 (フランス) に変更します。

5 ビルドと実行

プロジェクト localization_<言語名> をビルドすると、d3d8.dlld3d9.dll の出力ディレクトリに言語名のフォルダができ、その中に .mui ファイルが出来上がります。

d3d8.dll または d3d9.dll と一緒に、言語名のフォルダもゲームの実行ファイルのフォルダにコピーします。そのままゲームを実行すると、お使いのPCにその言語が存在すれば、THRotatorのGUIやメッセージがその言語で表示されるようになります。

注釈

d3d8.dll.muiまたはd3d9.dll.muiには、それぞれd3d8.dll、d3d9.dllのチェックサムが埋め込まれます。.dllのチェックサムと.muiに埋め込まれたチェックサムが異なる場合は、言語の読み込みが失敗してしまいます。

マニュアルのビルド

マニュアルのビルドは、Sphinxを用いています。

ビルドに必要なソフトウェアは、次の通りです。

  • Python
  • Sphinx
  • 以下のものは多言語対応に必要です。
    • Sphinx-intl

PythonとSphinxのインストール

http://sphinx-users.jp/gettingstarted/install_windows.html をご覧ください。

Sphinx-intlのインストール

Sphinx-intlはsphinxにおける多言語化のためのパッケージです。 python -m pip install sphinx-intl を実行すると、インストールできます。

ビルド (英語)

コマンドプロンプトで、 docs/ ディレクトリに移動し、make.bat html を実行します

すると、 docs/_build/html/ にhtmlファイルが生成されます。

ビルド (その他の言語)

その他の言語のマニュアルのビルドは、少し複雑な手順が必要です。

1 翻訳されるテキストの収集

コマンドプロンプトで、 docs/ ディレクトリに移動し、make.bat gettext を実行します

2 .poファイルの作成または更新

sphinx-intl.exe update -p .\_build\gettext -l <言語> を実行して、doc/locale/<言語>/LC_MESSAGES/ にある.poファイルを作成または更新します。

<言語>Sphinx Documentation の言語リストの中から選んでください。

.poファイルには、オリジナルの英語のテキストと、翻訳されたテキストの組が記録されています。

注釈

sphinx-intl.exe は、 <Python installation>/Scripts/ にあります。

3 .poファイルの編集

作成または更新された.poファイルに、翻訳されたテキストを追加していきます。

1行だけのテキストの翻訳例:

msgid "THRotator User's Manual"
msgstr "THRotator ユーザーマニュアル"

複数行のテキストの翻訳例:

msgid ""
"If you would like to build the manual in a specific language,"
"run ``docs-source/<language>/make.bat html``."
msgstr ""
"特定の言語に対してマニュアルをビルドしたいときは、"
"``docs-source/<言語>/make.bat html`` を実行してください。"

4 ビルド

実際のビルドを行う前に set SPHINXOPTS=-D language=<言語> を実行して、最終的なマニュアルの言語を指定します。

そして make.bat html を実行します。 htmlファイルが、docs/_build/html/ に生成されます。

継続的インテグレーション

THRotatorは、 AppVeyor 上に、継続的インテグレーション (CI) を行うためのプロジェクトを2つ保持しています。

THRotator

https://ci.appveyor.com/project/massanoori/throtator

ビルドとパッケージングを行う、シンプルなプロジェクトです。

このプロジェクトは、CMakeによって生成されるプロジェクトの INSTALL.vcxproj をビルドします。 INSTALL.vcxproj によってコピーされたファイルは、ビルドの成果物として扱われます。

THRotator-cov

https://ci.appveyor.com/project/massanoori/throtator-n7skl

このプロジェクトは、 Coverity Scan で静的解析を行う際に必要になる cov-int のアーカイブをビルドします。 cov-int というフォルダがビルドの成果物として扱われます。

Coverity Scan のプロジェクトは こちら です。もしビルドをサブミットする権限を持っていれば、次のステップにより静的解析を実行できます。

  • Submit a Project Build via URL にアクセスします。
  • File URL に、 https://ci.appveyor.com/api/projects/massanoori/throtator-n7skl/artifacts/build%2Fcov-int.zip と入力します。
  • Upload URL for analysis をクリックしてください。

注釈

AppVeyorからダウンロードした cov-int.zip をCoverity Scanにアップロードすることも可能です。しかし、接続環境によっては数分から数時間かかることがあります。

バージョン番号の加算

THRotatorのバージョンは、 セマンティック バージョニング 2.0.0 に従い増やします。

メジャーバージョンは、次の場合に増加します。

  • ユーザとのやり取りが大きく変わるような仕様変更を行ったとき。
  • 新しいデータフォーマットが、古いバージョンと互換性がないとき。
  • その他の革命的な変更を行ったとき。

マイナーバージョンは、次の場合に増加します。

  • 比較的大きな機能追加や改善が行われたとき。
  • データフォーマットは古いバージョンからアップグレードできるが、その逆ができないとき。

パッチバージョンは、次の場合に増加します。

  • 小規模だが重要な問題が修正され、その修正ができる限り早くリリースされるべき時。
  • 比較的小さな機能追加や改善が行われたとき。
  • 以上の変更が、データフォーマットの前方、後方互換性を損なわないこと。