Game Engine de Código Aberto

Jogos nativos a partir de TypeScript

Escreva TypeScript. Publique jogos nativos. Sem navegador, sem C++. A Bloom compila seu jogo ahead-of-time e o executa em Metal, DirectX 12, Vulkan e WebGPU — uma única base de código, seis alvos, renderização PBR de verdade e física prontos para uso.

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 Overhead de runtime
6 Plataformas-alvo
9 Subsistemas modulares
1 Base de código para manter

Por que a Bloom?

A Bloom é a única game engine que permite escrever TypeScript e publicar jogos verdadeiramente nativos. Sem Electron, sem WebView, sem runtime de navegador. Seu código é compilado ahead-of-time pelo compilador Perry e roda sobre um core em Rust.

API Simples

A API inteira cabe em um cheatsheet. Sem classes, sem herança, sem mágica. Apenas funções que você chama.

Verdadeiramente Nativo

Um renderer, quatro backends — Metal, DirectX 12, Vulkan e WebGPU. Materiais PBR, sombras em cascata, TAA e post-FX inclusos.

Publique em Qualquer Lugar

macOS, Windows, Linux, iOS, tvOS e Web a partir de uma única base de código. Pronto para Steam, App Store e itch.io.

Tudo o que você precisa

Nove subsistemas modulares, cada um importável de forma independente. Use somente o que você precisa.

Core

Criação de janela, game loop, tratamento de input, temporização e controle de frame.

bloom/core

Shapes

Desenho de formas 2D — linhas, retângulos, círculos, polígonos — além de detecção de colisão.

bloom/shapes

Textures

Carregamento de imagens, gerenciamento de texturas, batching de sprites e render-to-texture.

bloom/textures

Text

Carregamento de fontes TTF e OTF, renderização de texto e medição.

bloom/text

Audio

Efeitos sonoros, streaming de música, áudio posicional 3D, WAV / OGG / MP3.

bloom/audio

Models

Carregamento de glTF 2.0, animação esqueletal na GPU, materiais PBR, primitivas de mesh.

bloom/models

Math

Vetores, matrizes, quatérnios, funções de easing e geração de números aleatórios.

bloom/math

Physics

Corpos rígidos e moles com Jolt, controladores de personagem, veículos, raycasts, restrições.

bloom/physics

Scene

Scene graph em modo retido — transformações, visibilidade, sombras, vinculação de materiais.

bloom/scene

Uma base de código. Toda plataforma.

A Bloom mapeia para a API gráfica nativa de cada plataforma através de um único renderer baseado em wgpu. Seu TypeScript compila para binários reais — ou para um bundle WASM para a web.

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

Novidades

A Bloom está em desenvolvimento ativo — mais de 300 commits só nas últimas semanas. Destaques recentes:

Renderer

Auto-DRS e sharpen com CAS

A escala de renderização dinâmica se ajusta automaticamente ao seu FPS-alvo, com um passe de upscale + RCAS sharpen para manter a nitidez em resoluções fracionárias.

Materials

Reflexões planares + arrays de texturas

Reflexões planares estilo espelho com oblique-clip e fallback IBL. Terreno com splat-map via vinculação de texture arrays com mips.

Tools

CLI de imposter baker

Atlas octaédricos para LODs distantes — publique florestas densas e multidões sem estourar seu orçamento de draw calls.

Post-FX

Passes de pós-processamento empilháveis

Tone mapping ACES / AgX, exposição automática, bloom, DoF, motion blur, SSGI, SSAO, TAA — compostos via render targets em ping-pong.

Platform

HiDPI multiplataforma

Windows, Linux e Web agora compartilham o mesmo tratamento de HiDPI que macOS e iOS já tinham. Sua UI permanece nítida em qualquer display.

DX

Hot reload de shaders WGSL

Salve um shader, veja o resultado em menos de um segundo. Materiais recompilam no lugar durante o desenvolvimento.

Padrões familiares, poder nativo

Interfaces simples, funções puras, zero mágica. Se você sabe TypeScript, você sabe Bloom.

Formas 2D e Colisão

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âmera 3D e Modelos

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();

Pronto para construir seu jogo?

A Bloom é open source e gratuita. Mergulhe, construa algo e publique em todo lugar.