開発¶
注釈
このページはWindowsでの開発を仮定しています。
THRotatorのソースコードの入手¶
gitによりTHRotatorのリポジトリをクローンしてください。
- DLLのソースコード: massanoori/THRotator (GitHub)
- マニュアルのソースコード: massanoori/THRotator-manual (GitHub)
次に、コマンドプロンプトでクローン先のディレクトリにカレントディレクトリを移し、 git submodule update --init
を実行します。このコマンドにより、外部ライブラリの fmt と json.hpp 、 ImGui のソースコードが取得されます。
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++ Libraries の Current Release から最新版をダウンロードし、適当なディレクトリに解凍します(例えば、 C:\boost\
など)。
次に、boostの filesystem
モジュールをビルドします。
- 使っているOSが64 bitの場合は、
スタートメニュー
→Visual Studio 20XX
→VS20XX x64 Native Tools コマンドプロンプト
、32 bitの場合は、VS20XX x86 Native Tools コマンドプロンプト
を開きます。 - 開いたコマンドプロンプトで、解凍したboostの、
bootstrap.bat
のあるフォルダへ移動します。 bootstrap.bat
を実行します。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しか実行できません。
プロジェクトファイル生成¶
- CMakeをインストーラからインストールした場合は、
スタートメニュー
→CMake
→CMake (cmake-gui)
を実行します。直接ダウンロードした場合は、bin\cmake-gui.exe
を実行します。 Where is the source code:
に、THRotatorのソースコードがあるルートディレクトリのパスを入力します。Where to build the binaries:
に、プロジェクトファイルの生成先、およびビルドを行うディレクトリのパスを入力します。Configure
ボタンを押します。Generatorの選択画面が出るので、ここでVisual Studio XX 20XX
を選択し、Finish
ボタンを押します。Win64、ARMが付いているものは選択しないでください。BOOST_INCLUDE_DIR
に、boostのインクルードディレクトリ(bootstrap.batがあるディレクトリ)のパスを入力します。BOOST_LIB_DIR
に、boostのライブラリディレクトリ(デフォルトでは、<boostのインクルードディレクトリ>\stage\lib
)を入力します。- 再度
Configure
ボタンを押し、エラーがなければGenerate
ボタンを押します。
ビルド¶
- プロジェクト生成先にある
THRotator.sln
を開いてください。 - 5つのプロジェクトが読み込まれます。
- ALL_BUILD (すべてのプロジェクトをビルドするプロジェクト)
- d3d8 (Direct3D 8版THRotator)
- d3d9 (Direct3D 9版THRotator)
- localization_en-US (THRotatorの英語UIリソースDLL)
- ZERO_CHECK (CMakeが自動で生成)
- Direct3D 8版をビルドしたい場合は
d3d8
、Direct3D 9版をビルドしたい場合はd3d9
をビルドしてください。
ローカライズ¶
THRotatorはWindowsのMultilingual User Interface (MUI)による、GUIやエラーメッセージの多言語化が可能です。
新しい言語を追加する際は、英語版のリソースをテンプレートとして容易に作成可能です。フランス語を追加することを例に、作成の流れを見ていきましょう。
注釈
ここでは、具体的な翻訳については扱いません。
1 テンプレートをコピー¶
- まず、ひな型となる
localization_en-US
があるフォルダに、新しくlocalization_<言語名>
を作成します。言語名は、 Available Language Packs for Windows の Language/culture name です。また、このページには Language hexadecimal identifier に言語IDも記載されていますので、このIDもメモしておきます。今回はフランス語を例としていますので、localization_fr-FR
を作成します。また、言語IDの 0x040c をメモしておきます。 localization_en-US
の中にある、CMakeLists.txt
、resource.h
、THRotator_en-US.rc
を、新たに作成したlocalization_<言語名>
(今回はlocalization_fr-FR
) にコピーします。localization_<言語名>\THRotator_en-US.rc
を、localization_<言語名>\THRotator_<言語名>.rc
(今回はTHRotator_fr-FR.rc
)にリネームします。
2 CMakeの準備¶
localization_<言語名>\CMakeLists.txt
を開き、en-US
となっている部分を、<言語名>
に置換します。また、set(language_id 0x0409)
の 0x0409 を、メモしておいた言語IDに置き換えます。今回は言語IDが 0x040c なので、set(language_id 0x040c)
に変更します。localization_<言語名>\CMakeLists.txt
の編集は以上です。- ソースコードのルートフォルダにある
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.dll
、 d3d9.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 に従い増やします。
メジャーバージョンは、次の場合に増加します。
- ユーザとのやり取りが大きく変わるような仕様変更を行ったとき。
- 新しいデータフォーマットが、古いバージョンと互換性がないとき。
- その他の革命的な変更を行ったとき。
マイナーバージョンは、次の場合に増加します。
- 比較的大きな機能追加や改善が行われたとき。
- データフォーマットは古いバージョンからアップグレードできるが、その逆ができないとき。
パッチバージョンは、次の場合に増加します。
- 小規模だが重要な問題が修正され、その修正ができる限り早くリリースされるべき時。
- 比較的小さな機能追加や改善が行われたとき。
- 以上の変更が、データフォーマットの前方、後方互換性を損なわないこと。