Renderoni
🍝 Renderoni
Juegos web 3D, servidos al dente.
Un motor 3D completo, nativo para agentes, para Three.js y Rapier.
Física WebAssembly determinista, ajustes preestablecidos declarativos y Protocolo de Contexto de Modelo (MCP) integrado para programación en pareja con IA.
⚡ El Problema y la Solución
Crear juegos 3D con Three.js y Rapier WebAssembly normalmente implica escribir miles de líneas de código repetitivo: bucles de paso fijo, interpolación de transformaciones, controladores de personajes, audio espacial, sistemas de partículas y proyecciones de interfaz.
Al mismo tiempo, los agentes de IA (Claude, Gemini, Cursor) tienen dificultades con los motores 3D porque los bucles de juego son cajas negras no deterministas que requieren costosas capturas de pantalla.
Renderoni te ofrece ambas cosas:
Para Humanos: Un motor 3D declarativo y completo. Una sola llamada a
createRenderoni()pone en marcha física, renderizado, controles de cámara, audio espacial, máquinas de estado de animación y sistemas de partículas con ajustes preestablecidos tipados.Para Agentes de IA y CI sin Interfaz Gráfica: Un núcleo de simulación determinista con un servidor Protocolo de Contexto de Modelo (MCP) integrado. Los agentes inspeccionan escenas mediante resúmenes semánticos Markdown ligeros (<500 bytes / ~120 tokens), envían acciones tipadas y verifican el estado del juego sin interfaz gráfica en Node.js en menos de 10ms.
Related MCP server: maige-3d-mcp
🎮 Demos en Vivo
Prueba el patio de juegos interactivo en vivo en tu navegador: elemarin.github.io/renderoni (o ejecuta npm run dev localmente).
Demo | Qué Hace | Controles |
🪙 Demo de Inicio Rápido | Implementación interactiva en navegador del inicio rápido del README: personaje héroe, moneda dorada giratoria como sensor, campanilla de audio y VFX de explosión de partículas. |
|
✈️ Simulador de Vuelo | Física de vuelo aerodinámica con sustentación, arrastre, despegue y aterrizaje en pista, tren de aterrizaje retráctil y circuito de anillos. |
|
🧱 Vasto Mundo de Vóxeles | Mundo procesal de múltiples biomas (~2,000+ bloques) con agua oceánica, playas arenosas, colinas onduladas, picos nevados y árboles. |
|
🔦 Terror en Tercera Persona Estilo PSX | Terror de supervivencia retro PSX con cámara de persecución en tercera persona, pasillo de mansión gótica, linterna, rompecabezas de llave y puerta de hierro animada. |
|
📦 Instalación
npm install renderoni three @dimforge/rapier3d-compatExportaciones de subrutas separables:
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';🚀 Inicio Rápido
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)🤖 Integración con Agentes de IA (Servidor MCP)
Conecta Claude Desktop, Antigravity, Cursor o cualquier cliente MCP directamente a tu simulación:
{
"mcpServers": {
"renderoni": {
"command": "npx",
"args": ["renderoni", "mcp"]
}
}
}Herramientas MCP Integradas:
describe: Devuelve entidades activas, colisionadores, etiquetas y esquemas del motor.observe: Devuelve resúmenes Markdown de Nivel 0 ultradensos (<500B / ~120 tokens) con posiciones, velocidades y estado del juego.act: Inyecta acciones semánticas de juego deterministas (game.act({ name, payload })).step: Avanza la simulación $N$ ticks fijos y devuelve hashes de estado.check: Evalúa aserciones del AST de la máquina.
🧪 Pruebas sin Interfaz Gráfica con Vitest
Ejecuta pruebas completas de integración del juego sin interfaz gráfica en Node.js en menos de 10ms con comparadores personalizados de Vitest:
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();
});🏛️ Arquitectura
┌────────────────────────────────────────────────────────────────────────┐
│ 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) │
└────────────────────────────────────────────────────────────────────────┘📜 Licencia
MIT © Esteban Leandro Marín
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityAmaintenanceAn MCP Server that enables LLMs to build real-time 3D web applications in the PlayCanvas Editor.21179131MIT
- 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.33153MIT
- Alicense-qualityDmaintenanceAn MCP server for inspecting and manipulating Three.js/Threlte scenes in real-time.108MIT
- Alicense-qualityCmaintenanceLocal MCP server that gives AI agents 44 engine tools to build, run, and debug real 2D and 3D games through conversation.MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/elemarin/renderoni'
If you have feedback or need assistance with the MCP directory API, please join our Discord server