Skip to main content
Glama

🍝 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.

CI Deploy Pages License: MIT TypeScript MCP


⚡ 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.

WASD / Flechas (Mover Héroe), Espacio (Saltar), Botón 🪙 Reaparecer Moneda

✈️ 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.

W/S (Cabeceo), A/D (Guiñada), Q/E (Alabeo), Mayús/Ctrl (Acelerador), Z/X (Máximo/Corte), G (Tren), C (Vista Cabina/Persecución), R (Reinicio)

🧱 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.

WASD (Caminar y Auto-paso), Mayús (Correr), Espacio (Saltar), 1-6 (Barra de herramientas), Clic Izquierdo/Derecho (Romper/Colocar)

🔦 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.

WASD (Caminar Detective), Ratón (Orbitar Cámara), E (Recoger Llave y Abrir Puerta)


📦 Instalación

npm install renderoni three @dimforge/rapier3d-compat

Exportaciones 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

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
3hResponse time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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