ソースからビルド
エンジン自体に取り組みたいコントリビューターと開発者向けです。
必要なもの
- .NET 10 SDK
- シェーダーをコンパイルするための
glslc— Vulkan SDK に含まれるか、sudo apt install glslc - Vulkan 1.3 対応の GPU ドライバー
- Linux または Windows
クローンとビルド
git clone https://github.com/MASS4ORG/Turian.git
cd Turian
./build.sh compile # 復元、シェーダーの SPIR-V へのコンパイル、全プロジェクトのビルド
Windows では build.cmd または build.ps1 を使います。ビルドは NUKE で構成されています。シェーダーをコンパイルした後なら、単純な dotnet build でも動作します。
ソースから Studio と CLI を実行する
# Studio でプロジェクトを開く
dotnet run --project Turian/Editor/Studio -- --project ../TurianExamples/example-01
# CLI
dotnet run --project Turian/Editor/CLI -- new /tmp/MyGame
dotnet run --project Turian/Editor/CLI -- export /tmp/MyGame
dotnet run --project Turian/Editor/CLI -- screenshot ../TurianExamples/example-01 --out shot.png
サンプルプロジェクトは別リポジトリ turian-examples にあります。Turian の隣にクローンしてください。
リポジトリの構成
Gaya/ Studio が動作するプラグインプラットフォーム(Gaya.Sdk、Gaya.Host)。Turian への参照はなし
Turian/
Engine/
Attributes/ エンジン・エディター・スクリプトが共有する属性([Range]、[Button]、[TypeId]…)
Core/ Vulkan レンダラー、シーングラフ、コンポーネント、アセット、入力、ローカライズ、シリアライズ
UI/ Guinevere 上の .ui / .uss ゲーム UI
Editor/
Core/ UI 非依存のエディターロジック:ビルド、アセットのインポート、インスペクター、プレイモード
Gaya.Plugin/ Turian Studio 本体 — Gaya プラグイン(パネル、コマンド、ビューポート)
Studio/ Gaya とプラグインをホストするデスクトップ実行ファイル
CLI/ turian-cli
Bootstrap/ リリースパッケージの turian-cli / turian-studio ランチャー
CSharp/ Roslyn ソースジェネレーターとアナライザー
Turian.Tests/ エンジンとエディターのテスト
.nuke/ ビルド、パッケージング、リリースのターゲット
Studio は UI の外殻にすぎません。ロジックは Editor/Core かエンジンに置き、CLI やテストからも使えるようにします。
組み込みコンポーネントの追加
組み込みコンポーネントは Turian/Engine/Core にあります。シリアライズされる型にはすべて、安定して一意な [TypeId] が必要です。新しい GUID を一度生成したら、シーンファイルに保存されるため決して変えないでください:
namespace Turian.Engine.Core;
/// <summary>ノードを上下に揺らします。</summary>
[ComponentContextMenu("Motion/Bobber")]
[TypeId("0b8d9c3e-6f3a-4a52-9d1e-2f5c7a1b8e40")]
public class BobberComponent : Component
{
/// <summary>動きの高さ(メートル)。</summary>
public float Amplitude { get; set; } = 0.25f;
/// <inheritdoc />
public override void OnUpdate(float deltaTime) { /* … */ }
}
[ComponentContextMenu] は Inspector の Add Component メニューに配置します。
テストの実行
dotnet run --project Turian.Tests/Turian.Tests.csproj
dotnet test ではなく dotnet run を使ってください。テストスイートは Microsoft.Testing.Platform で動きます。CI は ./build.sh Restore Compile TestReport で同じテストを実行します。
パッケージング
./build.sh Pack --configuration Release --runtime-identifier linux-x64 # zip アーカイブ
./build.sh Pack DebianPackage --configuration Release --runtime-identifier linux-x64
./build.sh Pack --configuration Release --runtime-identifier win-x64 # zip + NSIS インストーラー
成果物は artifacts/ に出力されます。Windows インストーラーには makensis(NSIS)が必要で、Linux でも動作します。
CI/CD
GitHub Actions はプッシュのたびにテストを実行します(ci.yml)。毎日のジョブが新しいコミットがあればリリースのタグを付け、Windows と Linux のパッケージ、GitHub リリース、ghcr.io/mass4org/turian-cli コンテナイメージを公開します。
貢献
貢献ガイドラインを読んでください:Conventional Commits、main へのプルリクエスト、新しいコンパイラ警告は出さないこと。