このプロジェクトについて
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がインストールされたランナー上で明示的に選択でき、クリーンアップとフォーマットは自動的には実行されません。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.