3.7 KiB
AeThex Studio Bridge Module
Communication bridge between AeThex Studio (web UI) and AeThex Engine (C++ runtime).
Overview
This module provides a JSON-RPC API that allows AeThex Studio to control the engine remotely. The Studio UI (TypeScript/Next.js) can manipulate scenes, nodes, and properties through this bridge without requiring the traditional Godot editor UI.
Architecture
AeThex Studio (localhost:3000)
↕ HTTP/WebSocket
StudioBridge Server (localhost:6007)
↕ Direct API Calls
Engine Scene System (C++ Godot Core)
API Endpoints
All endpoints accept JSON-RPC format:
{
"method": "loadScene",
"params": {
"path": "res://main.tscn"
}
}
Scene Management
-
loadScene - Load a scene file
- Params:
path(String) - Returns: Scene tree structure
- Params:
-
saveScene - Save current scene
- Params:
path(String) - Returns: Success confirmation
- Params:
-
getSceneTree - Get full scene hierarchy
- Params: None
- Returns: Tree of all nodes
Node Operations
-
createNode - Create new node
- Params:
type(String),parent(String),name(String) - Returns: Created node info
- Params:
-
deleteNode - Delete node
- Params:
path(String) - Returns: Deleted node path
- Params:
-
selectNode - Select node in editor
- Params:
path(String) - Returns: Selected node info
- Params:
Property Manipulation
-
setProperty - Set node property
- Params:
path(String),property(String),value(Variant) - Returns: Updated property info
- Params:
-
getProperty - Get node property value
- Params:
path(String),property(String) - Returns: Property value
- Params:
Game Control
-
runGame - Start game instance
- Params: None
- Returns: Success confirmation
-
stopGame - Stop running game
- Params: None
- Returns: Success confirmation
Events (Engine → Studio)
The bridge emits WebSocket events to notify Studio of changes:
- scene_changed - Scene loaded/modified
- node_selected - Node selection changed
- property_changed - Property value updated
- console_output - Engine log message
Usage from GDScript
# Access the singleton
var bridge = StudioBridge
# Start the server
bridge.start_server(6007)
# Check if running
if bridge.is_server_running():
print("Bridge active")
# Send console output to Studio
bridge.emit_console_output("Game initialized", "info")
# Stop the server
bridge.stop_server()
Usage from Studio (TypeScript)
// studio/src/engine/bridge.ts
const response = await fetch('http://localhost:6007/rpc', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'loadScene',
params: { path: 'res://main.tscn' }
})
});
const result = await response.json();
if (result.success) {
console.log('Scene loaded:', result.result);
}
Build Configuration
The module is automatically compiled when building the engine:
cd engine
scons platform=linuxbsd target=editor
No additional flags needed - the module is detected automatically.
Future Enhancements
- WebSocket server for real-time events
- Scene viewport texture streaming
- Debugger integration
- Profiler data streaming
- Asset import pipeline hooks
- Collaborative editing support
Security Notes
⚠️ Development Only: This bridge should only run in development mode. Production games should not expose this API.
The server binds to localhost only by default, preventing external access.
See Also
- docs/STUDIO_INTEGRATION.md - Complete integration plan
- modules/aethex_ai/README.md - AI assistant module