エンジンを拡張する際に役立つ検証フローとチェックリストです。
1. ログと HUD#
Game.updateは__DEV__時にdtをログ出力します。大量に出る場合はexpo start --no-devで実機挙動を確認。Game.onRenderから受け取るGameRenderPayloadを HUD 表示し、elapsed/tick/entities.lengthをリアルタイムに監視。components/game-canvas.tsxのfunctionLogs実装を流用できます。
2. テスト駆動のすすめ#
WorldとEntityは純粋な TypeScript クラスなので Jest で単体テスト可能。Schedulerはupdate(dt)を段階的に呼び、task.callbackが発火するかで検証できます。getTaskCount()を監視すればリーク検知が容易です。
3. 典型的なトラブルシュート#
| 症状 | 対処 |
|---|---|
| Entity が停止する | tickRate が大きすぎて _process が呼ばれていない可能性。__DEV__ ログで dt を確認。 |
| Renderer に反映されない | getSnapshot() で必要なフィールドを返しているか確認。GameCanvas 側で型ガードを追加。 |
| Scheduler タスクが残り続ける | game.cancelTask(id) を useEffect のクリーンアップで呼ぶ。 |
| 複数画面で Game を共有したい | useGameStore の game インスタンスをシングルトンとして取り回し、各画面で onRender を個別登録。 |
4. 将来の拡張ポイント#
docs/game_engine_develop_plan.md に記載されている Step #4 以降(タップ入力、Signal、Sprite 切替など)は現行アーキテクチャを前提としています。API 変更時は互換性を保つため、Hugo ドキュメント内の該当章も更新してください。
5. 推奨コマンド#
# Expo プロジェクトで lint
npm run lint
# Hugo ドキュメントのローカルプレビュー
hugo server -Dドキュメントと実装をセットで更新し、他のエンジニアが本リポジトリ(codigrowa-doc)を見るだけでエンジンを扱える状態を維持しましょう。