このプロジェクトについて

World Engineは、Argus Labsのシャーディングされたロールアップアーキテクチャ上に構築されたオンチェーンゲームエンジンおよびGamechain SDKとして説明されています。READMEには、このプロジェクトは作業中であり、ゼロから書き換えられているため、現在のリポジトリは完成したエンジンではなく、主に開発用の足場であると記載されています。 開発環境のセットアップはprotoとmoonを中心としています。protoをインストールした後、リポジトリのルートから`proto install`を実行すると、`.prototools`に固定されたGoとmoonのバージョンがインストールされます。`go`と`moon`がそれらのバージョンに解決されるように、protoのシムはPATH上に残しておく必要があります。 一般的なタスクはmoonを通じて公開されています: - `moon tasks`はプロジェクトタスクを一覧表示します。 - `moon run world-engine:build`はGoパッケージをビルドします。 - `moon run world-engine:lint`はリントを実行し、固定されたリンターをインストールします。 - `moon run world-engine:lint-fix`はリント修正を適用します。 - `moon run world-engine:test`はすべてのGoテストを実行します。 - `moon run world-engine:test-ci`はcoverage.outとjunit.xmlを書き出します。 - `TEST_SEED=123 moon run world-engine:test`はテストシードを再生します。 golangci-lintは無視される`bin/tools`ディレクトリにインストールされ、gotestsumは`go tool`を通じて実行されます。失敗したテストは再現用のシードをログに記録します。Moonのタスクキャッシュは無効化されているため、ランダム化されたテストは毎回実行されますが、Go自体のコンパイルおよびテストキャッシュは有効のままです。 生成されたクライアントは別々のプロジェクトです。`moon run proto-csharp:build`または`proto-csharp:pack`はC#クライアントをビルドまたはパッケージ化し、.NET SDKが必要です。デバッグ版は`build-debug`と`pack-debug`を使用します。`moon run proto-ts:build`はTypeScriptクライアントの型チェックを行い、Node/npmと、事前に`proto/gen/ts`での`npm install`が必要です。 Moonは以前のTaskfilesを置き換えます。タスク名はハイフンを使用するため、`test:ci`は`world-engine:test-ci`になります。C#の`rebuild`タスクはビルド前にクリーンを行い、`update`は古い依存関係を変更せずに報告します。フォーマットと分析の失敗は呼び出し元に伝播します。 CIはローカル開発と同じGoタスクを実行します。Box2Dワークフローは独自のアーキテクチャマトリックスと明示的な`determinism-*`ターゲットを維持します。ワークフローは`moon ci`ではなく明示的なターゲットを選択し、高コストな決定性チェックを専用のマトリックスに保ちます。生成されたクライアントは、SDKがインストールされたランナー上で明示的に選択でき、クリーンアップとフォーマットは自動的には実行されません。