クロスプラットフォーム対応のメタバースエンジン。
デスクトップ (Windows/macOS/Linux)、モバイル (iOS/Android)、VR (PC VR, スタンドアロンVR, PS VR2) で同一ワールドに参加できる。
| 要素 | 技術 |
|---|---|
| クライアント | C# 14 / .NET 10 |
| サーバー | Go |
| 共有スキーマ | Protocol Buffers (proto3) |
| グラフィックス | Vulkan (macOSはMoltenVK) |
| VRランタイム | OpenXR |
| オーディオ | miniaudio (HRTF/遮蔽対応) |
| ECS | Archetype方式 (SoA, 16KBチャンク) |
| レンダリング | Deferred (デスクトップ) / Forward+ (VR/モバイル) |
| 物理エンジン | GJK+EPA / PGS |
| ネットワーク | カスタムUDP + DTLS 1.3 / WebRTC (SFU) |
| データストア | PostgreSQL + Redis |
| UGCスクリプト | Roslyn + ランタイムサンドボックス |
Nix flakeで開発環境を構築する。
nix developdirenv を使用していれば自動で有効になる。
go-task (task コマンド) を使用する。task --list で全タスク一覧を表示。
task build # 全プロジェクトをビルド
task test # ビルド + 全テスト実行
task run # シェーダーコンパイル + ビルド + アプリ実行
task bench # ベンチマーク実行
task ci # CIパイプライン (clean + shaders + build + test)# 1. インフラ起動 (Docker Hub に繋がらない場合は compose.yml の image を mirror.gcr.io に変更)
task infra:up # PostgreSQL + Redis + coturn
# 2. 鍵・証明書の生成 (初回のみ)
task dev:keygen # Ed25519 鍵ペア → .dev/ed25519.seed
task dev:certgen # DTLS 証明書 → .dev/dtls.crt, .dev/dtls.key
# 3. サーバー起動 (それぞれ別ターミナルで)
task go:run:auth # 認証サーバー (:8080)
task go:run:lobby # ロビー (:8070)
task go:run:sfu # SFU 音声 (:8090)
# world サーバーは DTLS 証明書のパス指定が必要 (Taskfile の dir が server/ のため)
DTLS_CERT_FILE=../.dev/dtls.crt DTLS_KEY_FILE=../.dev/dtls.key task go:run:world # (:9000)
# 4. クライアント起動
task run # デスクトップアプリtask go:build # Goパッケージのビルド
task go:test # Goテスト実行
task infra:down # インフラ停止
task infra:reset # インフラ停止 + データ全消去task proto:gen # フォーマット + Go/C# コード生成
task proto:check # 生成コードが最新か検証 (CI用)task docs:build # docfx APIリファレンスをビルド
task docs:check # ドキュメントビルド検証 (CI用)task launcher:build # .NET MAUI ランチャーをビルド (MAUI workload必須)src/
Seed.Engine/ # エンジンコア (ECS, 物理, レンダリング, オーディオ, ネットワーク)
Foundation/ # 数学, メモリ管理, コレクション, エラー, ログ
Ecs/ # Archetype方式ECS, コンポーネント, フレームループ
Physics/ # 広域/狭域衝突検出, 拘束ソルバー, CCD
Graphics/ # グラフィックス抽象化 + Vulkan実装
Rendering/ # Deferred / Forward+ パイプライン, ステレオ描画
Audio/ # 空間音響 (HRTF, 遮蔽, 距離減衰, LOD)
Network/ # カスタムUDP, DTLS, クライアント予測, デルタ圧縮
Avatar/ # スキンメッシュ, IK, アニメーション, 揺れ骨
GameLogic/ # 移動, グラブ, VRロコモーション
Platform/ # 入力 (GLFW, OpenXR), ウィンドウ, XR
Shaders/ # GLSL → SPIR-V シェーダー
Seed.Engine.App/ # 実行可能なデモアプリ (デスクトップ)
Seed.Engine.App.Android/# Android版
Seed.Engine.App.Ios/ # iOS版
Seed.Engine.Worker/ # ヘッドレスC#ワーカー (区画インスタンス用, NativeAOT)
Seed.Engine.Tests/ # xUnitテスト
Seed.Engine.Benchmarks/ # BenchmarkDotNetベンチマーク
Seed.Shared/ # proto生成のC#型定義
Seed.Scripting.Api/ # UGCスクリプティングAPI (Entity/Physics/UI/Event等)
Seed.Compile/ # Roslynコンパイルサービス (禁止API検出)
Seed.Compile.Tests/ # コンパイルサービスのテスト
Seed.Launcher/ # デスクトップランチャー (.NET MAUI, 自動更新)
server/
cmd/ # エントリーポイント
auth/ # 認証サーバー (JWT, OAuth, パスワード)
lobby/ # ロビーサーバー (WebSocket, ワールド振り分け)
world/ # 共有ワールドサーバー (UDP, AOI, 状態同期)
sfu/ # SFUサーバー (WebRTC, 空間ボイスチャット)
orchestrator/ # オーケストレーター (C#ワーカー管理, gRPC)
parcel/ # 区画サービス (購入, 売買, 維持費)
parcelcontroller/ # 区画コントローラー (gRPC, ワーカー通信)
social/ # ソーシャルサービス (フレンド, DM, チャット)
avatarstore/ # アバターストア (テクスチャ, 表情セット)
admin/ # 管理ダッシュボード (Go + HTMX)
keygen/ # Ed25519鍵ペア生成ツール
internal/ # 内部パッケージ
auth/ # 認証 (JWT, OAuth, レートリミット, ストア)
admin/ # 管理ダッシュボード (ハンドラ, CSRF, 監査ログ)
observability/ # ヘルスチェック, メトリクス, セキュリティヘッダー
world/ # ワールドサーバー実装
lobby/ # ロビーサーバー実装
migrations/ # PostgreSQL DDL
k8s/ # Kubernetes マニフェスト (本番 + 負荷テスト)
pkg/proto/seedpb/ # proto生成のGoコード
proto/ # Protocol Buffers スキーマ定義
docs/ # 設計ドキュメント + UGCドキュメント
デスクトップ / モバイル / VR (C#)
│
プラットフォーム抽象層 (入力, カメラ, UI, レンダリングモード)
│
エンジンコア (ECS, 物理, オーディオ, ネットワーク, レンダリング)
│
Protocol Buffers (カスタムUDP / gRPC)
│
サーバー (Go): 認証, ロビー, 共有ワールド, SFU, 区画オーケストレーター
│
区画インスタンス (C# NativeAOT ワーカー, UGCスクリプト実行)