Motor de juego de código abierto

Juegos nativos desde TypeScript

Escribe TypeScript. Publica juegos nativos. Sin navegador, sin C++. Bloom compila tu juego de forma anticipada y lo ejecuta en Metal, DirectX 12, Vulkan y WebGPU — una sola base de código, seis destinos, renderizado PBR real y físicas listas desde el primer momento.

main.ts
import { initWindow, windowShouldClose,
         beginDrawing, endDrawing,
         clearBackground, drawText,
         Colors } from "bloom";

initWindow(800, 450, "My Game");

while (!windowShouldClose()) {
  beginDrawing();
  clearBackground(Colors.RAYWHITE);
  drawText("Hello, Bloom!",
    190, 200, 20, Colors.DARKGRAY);
  endDrawing();
}
0 Sobrecarga en tiempo de ejecución
6 Plataformas destino
9 Subsistemas modulares
1 Base de código que mantener

¿Por qué Bloom?

Bloom es el único motor de juego que te permite escribir TypeScript y publicar juegos verdaderamente nativos. Sin Electron, sin WebView, sin runtime de navegador. Tu código se compila de forma anticipada con el compilador Perry y corre sobre un núcleo en Rust.

API sencilla

Toda la API cabe en una hoja de referencia. Sin clases, sin herencia, sin magia. Solo funciones que invocas.

Verdaderamente nativo

Un solo renderer, cuatro backends — Metal, DirectX 12, Vulkan y WebGPU. Materiales PBR, sombras en cascada, TAA y post-FX listos de fábrica.

Publica en todas partes

macOS, Windows, Linux, iOS, tvOS y la Web desde una sola base de código. Listo para Steam, App Store e itch.io.

Todo lo que necesitas

Nueve subsistemas modulares, cada uno importable de forma independiente. Usa solo lo que necesites.

Core

Creación de ventanas, bucle de juego, manejo de entrada, temporización y control de cuadros.

bloom/core

Shapes

Dibujo de formas 2D — líneas, rectángulos, círculos, polígonos — más detección de colisiones.

bloom/shapes

Textures

Carga de imágenes, gestión de texturas, batching de sprites y render-to-texture.

bloom/textures

Text

Carga de fuentes TTF y OTF, renderizado de texto y medición.

bloom/text

Audio

Efectos de sonido, streaming de música, audio posicional 3D, WAV / OGG / MP3.

bloom/audio

Models

Carga glTF 2.0, animación esqueletal por GPU, materiales PBR, primitivas de malla.

bloom/models

Math

Vectores, matrices, cuaterniones, funciones de easing y generación de números aleatorios.

bloom/math

Physics

Cuerpos rígidos y blandos con Jolt, controladores de personaje, vehículos, raycasts y restricciones.

bloom/physics

Scene

Grafo de escena en modo retenido — transformaciones, visibilidad, sombras y enlace de materiales.

bloom/scene

Una sola base de código. Todas las plataformas.

Bloom se mapea a la API gráfica nativa de cada plataforma a través de un único renderer basado en wgpu. Tu TypeScript compila a binarios reales — o a un bundle WASM para la web.

macOS
Metal
Windows
DirectX 12
Linux
Vulkan
iOS
Metal
tvOS
Metal
Web
WebGPU / WASM

Novedades

Bloom está en desarrollo activo — más de 300 commits solo en las últimas semanas. Lo más destacado:

Renderer

Auto-DRS y nitidez con CAS

La escala de renderizado dinámica se autoajusta a tu FPS objetivo, con un paso de upscale + RCAS sharpen para mantener la imagen nítida en resoluciones fraccionarias.

Materials

Reflejos planares + arrays de texturas

Reflejos planares tipo espejo con oblique-clip y respaldo de IBL. Terreno con splat-map mediante bindings de array de texturas con mips.

Tools

CLI de horneado de impostors

Atlas octaédricos para LODs lejanos — publica bosques densos y multitudes sin ahogar tu presupuesto de draw calls.

Post-FX

Pasadas de post apilables

Tone mapping ACES / AgX, autoexposición, bloom, DoF, motion blur, SSGI, SSAO, TAA — compuestos mediante render targets en ping-pong.

Platform

HiDPI multiplataforma

Windows, Linux y Web ahora comparten el mismo manejo de HiDPI que macOS e iOS ya tenían. Tu UI se mantiene nítida en cualquier pantalla.

DX

Hot reload de shaders WGSL

Guarda un shader y ve el resultado en menos de un segundo. Los materiales se recompilan en sitio durante el desarrollo.

Patrones familiares, potencia nativa

Interfaces simples, funciones puras, cero magia. Si sabes TypeScript, sabes Bloom.

Formas 2D y colisiones

import { drawRect, drawCircle,
         checkCollisionRecs } from "bloom/shapes";

drawRect(100, 100, 200, 80, Colors.GREEN);
drawCircle(400, 300, 50, Colors.GOLD);

if (checkCollisionRecs(player, enemy)) {
  playSound(hitSound);
}

Cámara y modelos 3D

const camera: Camera3D = {
  position: { x: 10, y: 10, z: 10 },
  target: { x: 0, y: 0, z: 0 },
  up: { x: 0, y: 1, z: 0 },
  fovy: 45, projection: 0
};

beginMode3D(camera);
drawModel(tree, { x: 0, y: 0, z: 0 });
drawGrid(10, 1);
endMode3D();

¿Listo para construir tu juego?

Bloom es de código abierto y gratuito. Súmate, construye algo y publícalo en todas partes.