Skip to main content
Glama

🍝 Renderoni

3D веб-игры, подаваемые аль денте.
Движок 3D с полным набором функций, родной для агентов, для Three.js и Rapier.
Детерминированная физика WebAssembly, декларативные пресеты и встроенный протокол контекста модели (MCP) для парного программирования с ИИ.

CI Deploy Pages License: MIT TypeScript 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 с частицами.

WASD / Стрелки (Двигать героя), Space (Прыжок), Кнопка 🪙 Возродить монету

✈️ Flight Simulator

Аэродинамическая физика полёта с подъёмной силой, сопротивлением, взлётом и посадкой на взлётную полосу, убирающимся шасси и кольцевой трассой.

W/S (Тангаж), A/D (Рыскание), Q/E (Крен), Shift/Ctrl (Газ), Z/X (Макс/Отсечка), G (Шасси), C (Вид из кабины/преследование), R (Сброс)

🧱 Vast Voxel Sandbox

Многобиомный процедурный мир (~2 000+ блоков) с океанской водой, песчаными пляжами, холмами, заснеженными вершинами и деревьями.

WASD (Ходьба и автошаг), Shift (Спринт), Space (Прыжок), 1-6 (Панель быстрого доступа), ЛКМ/ПКМ (Разрушить/Поставить)

🔦 PSX 3rd-Person Horror

Ретро-хоррор в стиле PSX с камерой от третьего лица, коридором готического особняка, фонариком, головоломкой с ключом и анимированными железными воротами.

WASD (Прогулка детектива), Мышь (Вращение камеры), E (Подобрать ключ и открыть ворота)


📦 Установка

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

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