ソースからビルド

このページは自動翻訳されており、誤りが含まれる場合があります。誤りを見つけた場合は「このページを編集」リンクからご協力ください。

エンジン自体に取り組みたいコントリビューターと開発者向けです。

必要なもの

  • .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 へのプルリクエスト、新しいコンパイラ警告は出さないこと。


← すべてのドキュメント このページを編集