Renderoni
🍝 Renderoni
3D веб-игры, подаваемые аль денте.
Движок 3D с полным набором функций, родной для агентов, для Three.js и Rapier.
Детерминированная физика WebAssembly, декларативные пресеты и встроенный протокол контекста модели (MCP) для парного программирования с ИИ.
⚡ Проблема и решение
Создание 3D-игр с Three.js и Rapier WebAssembly обычно означает написание тысяч строк шаблонного кода: циклы с фиксированным шагом, интерполяция трансформаций, контроллер персонажа, пространственный звук, системы частиц и проекции интерфейса.
В то же время ИИ-агенты для кодирования (Claude, Gemini, Cursor) испытывают трудности с 3D-движками, потому что игровые циклы являются недетерминированными чёрными ящиками, требующими дорогих скриншотов для визуального анализа.
Renderoni даёт вам и то, и другое:
Для людей: Декларативный 3D-движок с полным набором функций. Один вызов
createRenderoni()запускает физику, рендеринг, управление камерой, пространственный звук, автоматы анимации и системы частиц с типизированными пресетами.Для ИИ-агентов и безголового CI: Детерминированное ядро симуляции со встроенным сервером Model Context Protocol (MCP). Агенты просматривают сцены через лёгкие семантические Markdown-описания (<500 байт / ~120 токенов), отправляют типизированные действия и проверяют состояние игры безголово в Node.js менее чем за 10 мс.
Related MCP server: maige-3d-mcp
🎮 Живые демо
Попробуйте интерактивную игровую площадку прямо в браузере: elemarin.github.io/renderoni (или запустите npm run dev локально).
Демо | Что делает | Управление |
🪙 Quickstart Demo | Живая интерактивная браузерная реализация quickstart из README: герой, вращающаяся золотая монета-сенсор, звуковой сигнал и VFX с частицами. |
|
✈️ Flight Simulator | Аэродинамическая физика полёта с подъёмной силой, сопротивлением, взлётом и посадкой на взлётную полосу, убирающимся шасси и кольцевой трассой. |
|
🧱 Vast Voxel Sandbox | Многобиомный процедурный мир (~2 000+ блоков) с океанской водой, песчаными пляжами, холмами, заснеженными вершинами и деревьями. |
|
🔦 PSX 3rd-Person Horror | Ретро-хоррор в стиле PSX с камерой от третьего лица, коридором готического особняка, фонариком, головоломкой с ключом и анимированными железными воротами. |
|
📦 Установка
npm install renderoni three @dimforge/rapier3d-compatЭкспорты с поддержкой tree-shaking по подпутям:
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';🚀 Быстрый старт
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)🤖 Интеграция с ИИ-агентами (MCP-сервер)
Подключите Claude Desktop, Antigravity, Cursor или любой MCP-клиент напрямую к вашей симуляции:
{
"mcpServers": {
"renderoni": {
"command": "npx",
"args": ["renderoni", "mcp"]
}
}
}Встроенные инструменты MCP:
describe: Возвращает активные сущности, коллайдеры, теги и схемы движка.observe: Возвращает сверхплотные сводки в Markdown Тир 0 (<500B / ~120 токенов) с позициями, скоростями и состоянием игры.act: Внедряет детерминированные семантические игровые действия (game.act({ name, payload })).step: Продвигает симуляцию на $N$ фиксированных тиков и возвращает хеши состояния.check: Вычисляет утверждения машинного AST.
🧪 Безголовое тестирование с Vitest
Запускайте полные интеграционные тесты игры безголово в Node.js менее чем за 10 мс с помощью пользовательских матчеров 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();
});🏛️ Архитектура
┌────────────────────────────────────────────────────────────────────────┐
│ 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) │
└────────────────────────────────────────────────────────────────────────┘📜 Лицензия
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