Renderoni
🍝 Renderoni
3D-Webspiele, al dente serviert.
Eine voll ausgestattete, agenten-native 3D-Engine für Three.js und Rapier.
Deterministische WebAssembly-Physik, deklarative Voreinstellungen und integriertes Model Context Protocol (MCP) für KI-Paarprogrammierung.
⚡ Das Problem & Die Lösung
Das Erstellen von 3D-Spielen mit Three.js und Rapier WebAssembly bedeutet normalerweise, tausende Zeilen Boilerplate-Code zu schreiben: feste Zeitschritt-Schleifen, Transformationsinterpolation, Charakter-Controller, räumliches Audio, Partikelsysteme und UI-Projektionen.
Gleichzeitig haben KI-Code-Agenten (Claude, Gemini, Cursor) Schwierigkeiten mit 3D-Engines, da Spielschleifen nicht-deterministische Blackboxen sind, die teure Bildschirmfotos erfordern.
Renderoni bietet Ihnen beides:
Für Menschen: Eine deklarative, voll ausgestattete 3D-Engine. Ein einziger
createRenderoni()-Aufruf startet Physik, Rendering, Kamerasteuerung, räumliches Audio, Animationszustandsmaschinen und Partikelsysteme mit typisierten Voreinstellungen.Für KI-Agenten & Headless-CI: Ein deterministischer Simulationskern mit einem integrierten Model Context Protocol (MCP)-Server. Agenten inspizieren Szenen mittels leichtem semantischen Markdown (<500 Bytes / ~120 Tokens), senden typisierte Aktionen und überprüfen den Spielzustand headless in Node.js in unter 10ms.
Related MCP server: maige-3d-mcp
🎮 Live-Demos
Probieren Sie den interaktiven Spielplatz live in Ihrem Browser aus: elemarin.github.io/renderoni (oder führen Sie lokal npm run dev aus).
Demo | Funktion | Steuerung |
🪙 Quickstart Demo | Live interaktive Browser-Implementierung des README-Schnellstarts: Heldenfigur, rotierender Goldmünzen-Sensor, Audio-Klingel und Partikelburst-VFX. |
|
✈️ Flight Simulator | Aerodynamische Flugphysik mit Auftrieb, Widerstand, Start- und Landebahn, einziehbarem Fahrwerk und Ringkurs. |
|
🧱 Vast Voxel Sandbox | Multi-Biom-prozedurale Welt (~2.000+ Blöcke) mit Ozeanwasser, Sandstränden, sanften Hügeln, schneebedeckten Gipfeln und Bäumen. |
|
🔦 PSX 3rd-Person Horror | Retro-PSX-Survival-Horror mit Third-Person-Verfolgungskamera, gotischem Herrenhaus-Flur, Taschenlampe, Schlüsselrätsel und animiertem Eisentor. |
|
📦 Installation
npm install renderoni three @dimforge/rapier3d-compatTree-shakable subpath exports:
import { createRenderoni } from 'renderoni';
import { body, kccPlayer, sensor, light } from 'renderoni/presets';
import { audio } from 'renderoni/audio';
import { animation } from 'renderoni/animation';
import { vfx } from 'renderoni/vfx';
import { ui } from 'renderoni/ui';
import { createMCPServer } from 'renderoni/mcp';
import 'renderoni/testing/matchers';🚀 Quickstart
import { createRenderoni } from 'renderoni';
import { body, kccPlayer, sensor, light } from 'renderoni/presets';
import { audio } from 'renderoni/audio';
import { vfx } from 'renderoni/vfx';
// 1. Initialize engine (runs headlessly in CI or interactively in browser)
const game = await createRenderoni({
mode: 'interactive', // or 'headless'
seed: 42,
subsystems: [
audio({ volume: 0.8 }),
vfx({ particles: true }),
],
});
// 2. Add Environment & Lighting
game.add(light({ type: 'directional', position: [20, 40, 20] }));
game.add(body({ shape: 'box', type: 'fixed', size: [100, 1, 100], position: [0, 0, 0] }));
// 3. Add Collectible Item
const coin = game.add(sensor({
id: 'golden_coin',
shape: 'sphere',
radius: 0.6,
position: [4, 1.2, 0],
}));
// 4. Add Player Character
const player = game.add(kccPlayer({
id: 'hero',
position: [0, 1.5, 0],
moveSpeed: 6.5,
}));
// 5. Handle Gameplay Events
game.events.on('sensor.enter', ({ sensor, target }) => {
if (sensor.id === 'golden_coin' && target.id === 'hero') {
game.audio.play('coin_pickup');
game.vfx.spawnParticles({ count: 16, position: [4, 1.2, 0] });
coin.destroy();
}
});
// 6. Run headlessly (CI/Tests) or start interactive render loop (Browser)
game.step(60); // Step 60 fixed ticks in ~1ms (Headless CI)
// game.start(); // Start 60fps presentation loop (Browser)🤖 KI-Agenten-Integration (MCP-Server)
Verbinden Sie Claude Desktop, Antigravity, Cursor oder einen anderen MCP-Client direkt mit Ihrer Simulation:
{
"mcpServers": {
"renderoni": {
"command": "npx",
"args": ["renderoni", "mcp"]
}
}
}Integrierte MCP-Tools:
describe: Gibt aktive Entitäten, Kollider, Tags und Engine-Schemata zurück.observe: Gibt extrem dichte Tier-0-Markdown-Zusammenfassungen (<500B / ~120 Tokens) mit Positionen, Geschwindigkeiten und Spielzustand zurück.act: Injiziert deterministische semantische Spielaktionen (game.act({ name, payload })).step: Erhöht die Simulation um $N$ feste Ticks und gibt Zustands-Hashes zurück.check: Wertet maschinelle AST-Assertionen aus.
🧪 Headless-Testing mit Vitest
Führen Sie vollständige Spielintegrationstests headless in Node.js in unter 10ms mit benutzerdefinierten Vitest-Matchern aus:
import { expect, test } from 'vitest';
import { createRenderoni } from 'renderoni';
import { kccPlayer, sensor } from 'renderoni/presets';
import 'renderoni/testing/matchers';
test('player collects coin and verifies state hash', async () => {
const game = await createRenderoni({ mode: 'headless', seed: 42 });
const hero = game.add(kccPlayer({ id: 'hero', position: [0, 1, 0] }));
const coin = game.add(sensor({ id: 'coin', position: [3, 1, 0] }));
hero.actions.move({ x: 1, z: 0 });
game.step(60);
expect(game).toHaveTick(60);
expect(hero.position[0]).toBeGreaterThan(1.5);
expect(game).toHavePassedDiagnostics();
});🏛️ Architektur
┌────────────────────────────────────────────────────────────────────────┐
│ L3 APPLICATION │
│ Game Rules, Custom Assets, Levels, Shaders, UI Layouts │
├────────────────────────────────────────────────────────────────────────┤
│ L2 TOOLING & AGENTS │
│ Built-in MCP Server (stdio/SSE), Vitest Matchers, Live Inspector │
├────────────────────────────────────────────────────────────────────────┤
│ L1 BATTERIES & SUBSYSTEMS │
│ Spatial Audio • Skeletal Animation • UI Projections • VFX Emitters │
│ Declarative Presets: body, sensor, light, kccPlayer, dynamicPlayer │
├────────────────────────────────────────────────────────────────────────┤
│ L0 DETERMINISTIC KERNEL │
│ Integer Tick Clock • Seeded PRNG • Dual-Buffer Transform Pipeline │
│ Quantized State Hashing (XXH3) • Resource Ownership Tracking │
├────────────────────────────────────────────────────────────────────────┤
│ NATIVE ENGINES │
│ Three.js (WebGL / WebGPU) │ @dimforge/rapier3d-compat (WASM) │
└────────────────────────────────────────────────────────────────────────┘📜 Lizenz
MIT © Esteban Leandro Marín
This server cannot be deployed
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Build, run and publish 3D games in the Zero engine from Claude Code, Cursor or Codex, over MCP.
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP Server that enables LLMs to build real-time 3D web applications in the PlayCanvas Editor.125284 npm137MIT
- AlicenseAqualityDmaintenanceEnables AI agents to control and manipulate live 3D scenes across frameworks like Three.js, A-Frame, and Babylon.js using a comprehensive set of object and environment tools. It features an integrated in-world chat system that allows for real-time scene modifications directly from within the 3D canvas.3314 npm3MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for inspecting and manipulating Three.js/Threlte scenes in real-time.24 npm8MIT
- AlicenseNot gradedqualityAmaintenanceAn AI-native game engine MCP server that enables AI agents to create, modify, and run games using 53 tools for scene creation, physics, audio, 3D rendering, and AI-generated images and music.1MIT