アーキテクチャ設計
JevDash: System One は、LLM や自律型エージェントを実時間の物理制御環境で評価するために設計された、疎結合デュアルループ(Dual-Loop)アーキテクチャを採用しています。
┌─────────────────────────────────────────────────────────────┐
│ 外部ループ(非同期推論・意思決定) │
│ │
│ ┌────────────────┐ HTTP/JSON ┌─────────────┐ │
│ │ JevAgent / │ ───────────────────> │ Jev Model │ │
│ │ MockAgent │ <─────────────────── │ (Gateway) │ │
│ └────────────────┘ 型付きアクション └─────────────┘ │
│ │ │
│ 状態 │ アクチュエータキュー(スレッドセーフ・バッファ)│
│ サンプリング │
│ ▼ │
├─────────────────────────────────────────────────────────────┤
│ 内部ループ(同期 60 FPS 物理演算) │
│ │
│ ┌────────────────┐ 積分ステップ ┌─────────────┐ │
│ │ Pygame 描画 │ <─────────────────── │ 物理 │ │
│ │ & ライブ HUD │ │ エンジン │ │
│ └────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘1. デュアルループ(Dual-Loop)によるインピーダンス整合
高速な 2D プラットフォーマーでは、衝突判定のすり抜けやコマ落ちを防ぐため、厳格に一定の微小時間(60 Hz)で物理シミュレーションを更新する必要があります。一方で、外部基盤モデルへのネットワーク往復遅延は 50ms 〜 500ms 程度変動します。
この時間スケールのギャップを解消するため、JevDash は 2 つの並行ループで構成されています:
高速内部ループ(60 FPS)
- プレイヤーの運動方程式を積分計算: $$x_{t+\Delta t} = x_t + v_x \Delta t$$ $$v_{y, t+\Delta t} = v_{y, t} + g \Delta t$$
- AABB(軸平行バウンディングボックス)による地形衝突判定と接地判定。
- エージェントが最新コミットしたアクションバッファの滑らかな補間実行。
- 録画有効時のフレームキャプチャと FFmpeg (H.264) へのストリーミング。
非同期外部ループ(エージェントスレッド)
- ゲーム環境から抽象化された感覚スナップショットをサンプリング:
- プレイヤーの座標・速度ベクトル。
- 最寄りの落とし穴、壁、障害物までの距離。
- 現在の慣性に基づくジャンプ到達可能性。
- OpenAI 互換のエンドポイント経由で Jev モデルへリクエスト送信(または決定論的モックで評価)。
- 得られたアクション指示をスレッドセーフなバッファへ格納。
2. 厳格な状態・アクション型定義
JevDash では、物理的な誤認識や出力のハルシネーションを防止するため、厳密な型定義スキーマを採用しています:
観測空間(Observation Space)
json
{
"player": {
"x": 340.5,
"y": 480.0,
"vx": 4.8,
"vy": 0.0,
"is_grounded": true
},
"upcoming_obstacles": [
{
"type": "gap",
"distance": 85.0,
"width": 110.0
}
],
"can_jump": true
}アクション空間(Action Space)
モデルは物理的アクチュエータに対応する指示を出力します:
MOVE_RIGHT: 水平加速度の付与JUMP: ジャンプ力の発動(長押しで最高点到達)SPRINT: 移動速度上限の引き上げIDLE: 摩擦による自然減速
3. 100% クリーンルーム設計
JevDash は既存の商用ゲームアセットや著作権保護ファイルを一切含みません:
- すべてのタイル、障害物、プレイヤーはベクター幾何学プリミティブ(ネオングロー枠線、ハイコントラスト平面)によりプロシージャル描画。
- ステージ構成は数学的アルゴリズムに基づいて生成され、難易度に応じた再現性のあるベンチマークが可能。
- 標準 Pygame 以外の外部ネイティブバイナリに依存せず、Windows、macOS、Linux で同一に動作します。