# AeThex Engine - Studio Integration Plan ## Overview Replace Godot's C++ editor with AeThex Studio's web UI while keeping the powerful C++ runtime. ## Architecture ### What We Keep (C++ Engine Runtime) - ✅ Scene system & nodes - ✅ GDScript VM - ✅ Physics (2D/3D) - ✅ Rendering (Vulkan/OpenGL) - ✅ Audio engine - ✅ Asset pipeline - ✅ Export system - ✅ Networking ### What We Replace (Editor UI) - ❌ Godot's C++ editor UI - ❌ Built-in script editor - ❌ Scene tree inspector - ❌ Resource dock - ❌ FileSystem dock ### What We Add (Studio UI) - ✅ AeThex Studio (Next.js web app) - ✅ Monaco editor (VS Code engine) - ✅ AI assistant panel - ✅ Modern UI/UX - ✅ Web-based 3D viewport - ✅ Cross-platform consistency ## Implementation Phases ### Phase 1: Headless Engine Mode (Week 1) **Goal:** Strip out Godot editor, keep runtime **Changes:** 1. Add `--headless-editor` flag to engine 2. Remove editor UI initialization 3. Keep scene/resource system accessible via API 4. Add JSON-RPC server for Studio communication **Files to modify:** ``` engine/main/main.cpp - Add headless mode engine/editor/editor_node.cpp - Conditional compilation engine/core/api/ - Add JSON-RPC server ``` **Build command:** ```bash scons platform=windows target=editor headless_editor=yes ``` ### Phase 2: JSON-RPC Bridge (Week 2) **Goal:** Communication between Studio (web) and Engine (C++) **API Endpoints:** ```javascript // Studio calls Engine engine.loadScene(path) // Load .tscn file engine.saveScene(path) // Save scene engine.createNode(type) // Spawn node engine.setProperty(node, property, value) engine.runGame() // Start game engine.stopGame() // Stop game engine.exportProject() // Build game // Engine notifies Studio on_scene_changed() // Scene modified on_node_selected() // Node clicked in viewport on_property_changed() // Inspector update needed on_console_output() // Debug messages ``` **Implementation:** ```cpp // engine/editor/studio_bridge.h class StudioBridge : public Object { GDCLASS(StudioBridge, Object); private: HTTPServer *rpc_server; WebSocketServer *ws_server; public: void start_server(int port); void handle_rpc_call(const String &method, const Dictionary ¶ms); void send_event(const String &event, const Dictionary &data); }; ``` **Communication:** ``` Studio (localhost:3000) ←→ WebSocket ←→ Engine (localhost:6007) ``` ### Phase 3: Studio UI Adaptation (Week 3) **Goal:** Modify Studio to control the engine **New Studio Components:** ```typescript // studio/src/engine/ ├── bridge.ts // WebSocket to engine ├── scene-tree.tsx // Scene hierarchy from engine ├── inspector.tsx // Node properties from engine ├── viewport.tsx // 3D preview (Three.js mirroring engine) ├── console.tsx // Engine output └── game-runner.tsx // Play mode control ``` **Example:** ```typescript // studio/src/engine/bridge.ts class EngineBridge { private ws: WebSocket; async loadScene(path: string) { return await this.call('load_scene', { path }); } async createNode(type: string) { return await this.call('create_node', { type }); } onNodeSelected(callback: (node) => void) { this.on('node_selected', callback); } } ``` ### Phase 4: 3D Viewport Integration (Week 4) **Goal:** Studio displays engine's 3D viewport **Two approaches:** **Approach A: Screen Sharing** - Engine renders to texture - Sends pixels via WebRTC/WebSocket - Studio displays in canvas **Approach B: Native Window** - Engine creates separate window - Studio embeds window handle - Lower latency, better performance **Recommended:** Approach B (native embedding) ### Phase 5: Packaging (Week 5) **Goal:** Distribute as single application **Option 1: Electron Wrapper** ``` AeThex.exe ├── electron.exe (Studio UI) └── aethex_runtime.exe (Engine) ``` **Option 2: CEF Embedded** ``` AeThex.exe (Single binary) ├── Chromium Embedded Framework │ └── Studio UI (embedded web) └── Engine Runtime (C++) ``` **Recommended:** Electron (faster development) ## Technical Details ### Build System Changes **New SCons options:** ```python # custom.py headless_editor = "yes" # Remove Godot editor UI embed_studio = "yes" # Bundle Studio files studio_port = 6007 # RPC server port ``` **Build command:** ```bash scons platform=windows target=editor \ headless_editor=yes \ embed_studio=yes \ -j4 ``` ### File Structure ``` AeThex-Engine-Core/ ├── engine/ # C++ runtime │ ├── core/ │ ├── scene/ │ ├── servers/ │ └── studio_bridge/ # NEW: Studio↔Engine API ├── studio/ # Web UI (Next.js) │ ├── src/ │ │ ├── components/ │ │ └── engine/ # NEW: Engine integration │ └── out/ # Build output (static files) └── packaging/ └── electron/ # Electron wrapper ``` ### Distribution Package ``` AeThex-Engine-v1.0-windows.zip ├── AeThex.exe # Electron app ├── resources/ │ ├── aethex_runtime.exe # C++ engine │ ├── studio/ # Web UI files │ └── templates/ # Project templates └── README.txt ``` ## Development Workflow ### Local Development ```bash # Terminal 1: Run Engine cd engine ./bin/aethex.linuxbsd.editor.x86_64 --studio-mode --port 6007 # Terminal 2: Run Studio UI cd studio npm run dev # Studio connects to localhost:6007 # Changes hot-reload automatically ``` ### Production Build ```bash # 1. Build Engine cd engine scons platform=windows target=editor headless_editor=yes # 2. Build Studio cd studio npm run build # 3. Package with Electron cd packaging/electron npm run package ``` ## Testing Strategy ### Unit Tests - Engine RPC endpoints - Studio API client - Scene serialization/deserialization ### Integration Tests - Studio creates node → Engine spawns it - Studio modifies property → Engine updates - Engine emits event → Studio receives ### E2E Tests - Create new project - Add 3D scene - Write script - Run game - Export project ## Performance Targets | Metric | Target | |--------|--------| | Studio → Engine latency | <16ms | | Scene load time | <2s | | Property update | <5ms | | Viewport FPS | 60fps | | Memory overhead | <100MB | ## Rollout Plan ### Alpha (Internal) - Basic scene editing - Node creation/deletion - Property inspector - Script editor ### Beta (Early Users) - 3D viewport - Game runner - Asset pipeline - Export system ### V1.0 (Public) - AI assistant - Cross-platform export - Template library - Full documentation ## Timeline | Phase | Duration | Deliverable | |-------|----------|-------------| | 1 | 1 week | Headless engine | | 2 | 1 week | RPC bridge | | 3 | 1 week | Studio UI integration | | 4 | 1 week | 3D viewport | | 5 | 1 week | Electron packaging | | **Total** | **5 weeks** | **Alpha Release** | ## Next Steps 1. ✅ Create headless engine branch 2. ⬜ Implement JSON-RPC server 3. ⬜ Modify Studio for engine control 4. ⬜ Test scene editing workflow 5. ⬜ Package as Electron app --- **Ready to start implementation?** 🚀