Skip to content
This repository was archived by the owner on Mar 19, 2026. It is now read-only.

HMasataka/Seed

Repository files navigation

Seed

クロスプラットフォーム対応のメタバースエンジン。

デスクトップ (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 develop

direnv を使用していれば自動で有効になる。

ビルドと実行

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        # インフラ停止 + データ全消去

Protocol Buffers

task proto:gen          # フォーマット + Go/C# コード生成
task proto:check        # 生成コードが最新か検証 (CI用)

UGCドキュメント

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スクリプト実行)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors