Nau Engineを知る:オープンソースゲームエンジンをソースからビルドする
Nau Engineは多くの場で話題になっていますが、カンファレンスでの発表を聞くことと、パブリックリポジトリに飛び込んでコードに触れてみるのとでは大違いです。リポジトリは公開されており、ソースコードはGitHubで入手可能で、アーキテクチャを評価したり、テストビルドのビルドを試したりするために誰でもプロジェクトを自分のマシンにクローンできます。
作者たちはすぐにオープンな配布モデルを発表しています:このエンジンは、商用ゲームのリリースを含め任何用途に無料で使用でき、ライセンス料や隠れたロイヤリティはありません。ソースコードは公開されているため、コミュニティはフォーク、拡張機能、プルリクエストを作成できます。
リポジトリの中身
NauEnginePublicリポジトリを開くと、大規模プロジェクト向けの古典的なC++スタックがすぐに目に留まるでしょう。カスタムパッケージマネージャーで車輪の再発明をしようとはしていません:依存関係はvcpkg経由で取得され、ビルドは最新のCMakeプリセットを使用して管理されています。
エンジン自体はC++で書かれており、サブモジュールに積極的に依存しており、最新のツールが必要です:
- Visual Studio 2022のMSVC v143
- Windows 10 SDKの最新バージョン
- ビルドスクリプト用のPython 3.10以上
- CMakePresets対応のCMakeビルドシステム
現段階では、リポジトリは明確にWindowsプラットフォームに焦点を当てています。ドキュメントにはVisual Studio 2022とClang-CL+Ninjaの組み合わせのプリセットが記載されています。LinuxやmacOSのサポートはまだREADMEに記載されていませんので、現在のところ主要な動作シナリオはMicrosoftスタックに依存しています。
環境と依存関係のセットアップ
ゲームエンジンをゼロからビルドするには常に忍耐が必要です。リポジトリをクローンした後最初に行うべきことはサブモジュールをプルすることです—サブモジュールなしでは、プロジェクトは設定すら行えません:
次にvcpkgパッケージマネージャーとの連携です。まだインストールしていない場合、著者は例えばc:\tools\vcpkgのような別ディレクトリにクローンし、初始化を実行することをお勧めします:
その後、VCPKG_ROOT環境変数を設定する必要があります。この変数がなければ、CMakeはライブラリをどこで見つけるかわかりません。
ところで、リポジトリには便利なヒントがあります:ブランチでvcpkg.jsonファイルが変更された場合、git clean -d -x -fで作業ディレクトリをクリアしてクリーンなビルドを行うのがベストです。重要なのは事前に未保存の変更をすべて保存することです、さもなくばgitが警告なしでそれらを消去してしまいます。
設定とビルドプロセス
依存関係が準備できたら、CMakeが引き継ぎます。プロジェクトには設定済みのプリセットが用意されているため、十数個のコンパイラフラグを手動で指定する必要はありません。
Visual Studio 2022用のプロジェクトを生成するには、次を実行します:
NinjaとClangの組み合わせを好む場合は、代替プリセットがあります:
VS CodeまたはVisual Studioでプロジェクトフォルダーを開くだけでも可能です。IDEは自動的にCMakePresets.jsonファイルを取得し、インターフェースで必要な設定を選択することを提案します。
コンパイルプロセス自体はCLIまたは直接IDEから起動されます:
コンパイルが完了した後、ローカルディレクトリoutputにエンジンをインストールできます:
このフォルダには、さらなる統合の準備ができたビルドが配置されます。
開発者がこのコードを勉強すべき理由
Nau Engineは、それを使ってゲームを作る予定の人々だけでなく、一般的なC++プログラマーにも興味深いものです。
第一に、これは新鮮なコードベースです。多くの人気エンジンは20年前の決定の重荷を背負っています。ここでは、最新のC++標準に基づく近代的なプロジェクトがどのように構成されているか、モジュールがどのように分割されているか、アセット処理パイプラインがどのように動作するかを確認できます。
第二に、このプロジェクトは貢献者に対して完全にオープンです。リポジトリにはオープンなissueとpull requestがあり、コミュニティは徐々にエンジンの改善に参加し始めています。最適化や新機能の貢献ができる複雑なシステムレベルのオープンソースプロジェクトを探しているなら、Nau Engineはプロプライエタリライセンスの面倒くささを除いたその機会を提供します。
第三に、カスタムレンダラー、物理エンジン、スクリプトラッパー экспериментするための良いテスト場です。準備されたモジュラー構造があれば、面倒な環境設定作業に何週間も費やす必要がなくなります。
第四に、ゲームスタジオにとって、海外ベンダーの気まぐれやライセンス契約の突然の変更に依存しない技術スタックを得られる本当のチャンスです。
どこから始めるか
プロジェクトに興味があれば、シンプルに始めてください:リポジトリをクローンし、ビルドガイドの手順に従って、Debugモードでエンジンのビルドを試みてください。ディレクトリ構造を読み、ソースコードの基本サブシステムの実装を確認し、GitHubのIssuesタブを確認してください。ゲームエンジン開発の内側から興味がある人にとって、これは優れた学習材料です。
関連プロジェクト