AeThex-Engine-Core/engine/modules/studio_bridge
2026-02-24 04:30:27 +00:00
..
config.py new file: LOGO_CONFIG_GUIDE.md 2026-02-24 04:30:27 +00:00
README.md new file: LOGO_CONFIG_GUIDE.md 2026-02-24 04:30:27 +00:00
register_types.cpp new file: LOGO_CONFIG_GUIDE.md 2026-02-24 04:30:27 +00:00
register_types.h new file: LOGO_CONFIG_GUIDE.md 2026-02-24 04:30:27 +00:00
SCsub new file: LOGO_CONFIG_GUIDE.md 2026-02-24 04:30:27 +00:00
studio_bridge.cpp new file: LOGO_CONFIG_GUIDE.md 2026-02-24 04:30:27 +00:00
studio_bridge.h new file: LOGO_CONFIG_GUIDE.md 2026-02-24 04:30:27 +00:00

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
  • saveScene - Save current scene

    • Params: path (String)
    • Returns: Success confirmation
  • 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
  • deleteNode - Delete node

    • Params: path (String)
    • Returns: Deleted node path
  • selectNode - Select node in editor

    • Params: path (String)
    • Returns: Selected node info

Property Manipulation

  • setProperty - Set node property

    • Params: path (String), property (String), value (Variant)
    • Returns: Updated property info
  • getProperty - Get node property value

    • Params: path (String), property (String)
    • Returns: Property value

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