Visual Studio + vcpkg を用いたビルド手順
このガイドには、Visual Studio と vcpkg を使用して Windows 上で Cataclysm-BN をコンパイルするために必要な手順が含まれています。
このガイドの手順は Windows 10 および 11(64ビット)、Visual Studio 2019 および 2022(64ビット)でテストされていますが、他のバージョンの Windows および Visual Studio でもわずかな変更で同様に機能するはずです。
前提条件:
- モダンな Windows OS がインストールされたコンピューター(Windows 10 または 11)。Windows 7 および 8.1 での動作は保証されていません。
- NTFSパーティションに約 15GB の空き容量 (Visual Studioに約 10GB、vcpkgインストールに約 1GB、リポジトリに約 3GB、ビルドキャッシュに約 1GB)。
- Git for Windows (インストーラーは Git ホームページからダウンロード可能)。
- Visual Studio 2019 or 2022
- 注釈: Visual Studio 2022 を使用している場合、vcpkg のバグを回避するために Visual Studio 2019 のコンパイラをインストールする必要があります。Visual Studio Installer で「個別のコンポーネント」タブを選択し、「MSVC v142 - VS 2019 C++ x64/x86 ビルドツール」のように見えるコンポーネントを検索/選択してください。詳細は https://github.com/microsoft/vcpkg/issues/22287を参照してください。
- 最新バージョンの vcpkg (手順は vcpkg ホームページを参照)。
- 変更点を Bright Nights へ貢献する予定がある場合は、コードフォーマッターもインストールする必要があります。詳細については コードスタイル のセクションを参照してください。
注釈: Windows XP はサポートされていません。
インストールと環境設定:
Visual Studioをインストールします (インストーラーは Visual Studio ホームページからダウンロード可能)。
- 「C++によるデスクトップ開発」と「C++によるゲーム開発」のワークロードを選択してください。
-
Git for Windowsをインストールします (インストーラーは Git ホームページからダウンロード可能)。 -
最新の
vcpkgをインストールし、設定します。
警告: このリポジトリをクローンする場所は、パスに空白を含まないことが重要です。つまり、C:/dev/vcpkg は許容されますが、 C:/dev test/vcpkgは許容されません。
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
bootstrap-vcpkg.bat -disableMetrics
vcpkg integrate install
クローンとコンパイル
- 以下のコマンドラインで Cataclysm-BN リポジトリをクローンします。
注釈: これにより、CBNリポジトリ全体、つまり 3GB 以上のデータがダウンロードされます。テスト目的のみの場合は、--depth=1を追加することを推奨します。
git clone https://github.com/cataclysmbnteam/Cataclysm-BN.git
cd Cataclysm-BN
-
提供されているソリューション (
msvc-full-features\Cataclysm-vcpkg-static.sln) をVisual Studioで開きます。構成 (コンパイルのみが目的の場合はRelease、コード編集を計画している場合はDebugが推奨) とプラットフォーム (x64またはx86) を選択し、ビルドします。必要なすべての依存関係は、vcpkg によって自動的にビルドされ、将来のためにキャッシュされます。 -
ビルド > 構成マネージャーメニューを開き、アクティブなソリューション構成およびアクティブ ソリューション プラットフォームを目的と一致するように設定します。
これにより、Visual Studio は、サウンド、タイル、およびローカライゼーションのサポートを含むリリースバージョンをコンパイルするように設定されます(ただし、言語ファイル自体は自動的にはコンパイルされないことに注意してください。これは後で実行します)。
-
ビルド > ソリューションのビルドまたはビルド > ビルド > Cataclysm-vcpkg-staticのいずれかを選択して、ビルドプロセスを開始します。このプロセスには長い時間がかかる場合があるため、コンピューターの前にコーヒーと本を用意しておくことをお勧めします: 各アーキテクチャの最初のビルドでは、vcpkg を介して依存関係のダウンロードとインストールも行われ、特に時間がかかる場合があります。 -
Visual Studio から直接ゲームを起動したい場合は、以下で説明するように、正しい作業ディレクトリを指定していることを確認してください。そうしないと、ファイルエクスプローラーからしかゲームを起動できません。
-
ローカライゼーションサポートが必要な場合は、Git Bash GUI 内で UNIX系システムと同様に bash スクリプト
lang/compile_mo.shを実行します。これにより、上記のステップ 2 で自動的にコンパイルされなかった言語ファイルがコンパイルされます。
Visual Studio からの実行とデバッグ
-
Cataclysm ゲームバイナリプロジェクト (
Cataclysm-vcpkg-static) がスタートアッププロジェクトとして選択されていることを確認します (ソリューションエクスプローラーで右クリック ->スタートアップ プロジェクトに設定) -
プロジェクトのプロパティで作業ディレクトリを
$(ProjectDir)..に設定します (ソリューションエクスプローラーで右クリック->プロパティ-> 上部ですべての構成とすべてのプラットフォームを選択 ->デバッグ->作業ディレクトリ)。 -
デバッグボタン(上部付近にある緑色の右向きの三角形、または適切なショートカット、例: F5)を押します。
Visual Studio でデバッグボタンを押した後、Cataclysm が起動直後にリターンコード 1 で終了する場合、それは作業ディレクトリが間違っていることが原因です。
Debug ビルドと Release ビルド
Debug ビルドは Release ビルドよりも著しく実行速度が遅くなりますが、追加の安全チェックを提供します。
単に実行可能ファイルをビルドしてゲームをプレイしたい場合は、Release が推奨されます。
コードを編集する予定がある場合は、Debug が推奨されます。
C++ に関して十分な経験があり、以下のことを把握している場合:
DebugとReleaseの内部的な違いReleaseの最適化がデバッガーにどのように影響するか- コード内の未定義の動作を回避する方法
この場合、開発プロセスを高速化するために常に Release ビルドを使用し、ファイルの先頭に
#pragma optimize("", off)
行を追加することで、ファイルごとの最適化を無効にすることができます。
ユニットテストの実行
Cataclysm テストバイナリプロジェクト (Cataclysm-test-vcpkg-static) がスタートアッププロジェクトとして選択されていることを確認し、プロジェクトのプロパティで作業ディレクトリを $(ProjectDir)..に設定してから、デバッグボタンを押します(または適切なショートカット、例: F5を使用します)。これにより、すべてのユニットテストが実行されます。追加のコマンドライン引数は、プロジェクトのコマンドライン引数設定で構成できます。互換性のあるユニットテストランナー(例: Resharper)を使用している場合は、ユニットテストセッションから個々のテストを実行またはデバッグできます。
コードスタイル
私たちは、C++ コードのスタイルの一貫性を保つために Artistic Style ソースコードフォーマッターを使用しています。これはビルド済みの Windows 実行可能ファイルとしても利用可能で、インストールして実行したり、コミット前にコードを自動的にフォーマットするように設定したりできますが、Visual Studio ユーザーにとってさらに便利なオプションは、特定の拡張機能をインストールすることです。詳細については、ツール関連のドキュメントにある
"Astyle extensions for Visual Studio" in tooling
を参照してください。
2022年10月現在、コードスタイルチェックは GitHub の各プルリクエスト (PR) で自動的に実行されるため、変更のスタイル設定を忘れた場合、対応するチェックが失敗するのを確認できます。
ディストリビューションの作成
msvc-full-features フォルダ内にバッチスクリプト distribute.batがあります。これは、サブフォルダ
distribution を作成し、必要なすべてのファイル(例: data/、Cataclysm.exe 、および dll など)をそのフォルダにコピーします。その後、圧縮してインターネット上でアーカイブとして共有できます。