Moteur de jeu open source

Des jeux natifs en TypeScript

Écrivez du TypeScript. Livrez des jeux natifs. Pas de navigateur, pas de C++. Bloom compile votre jeu en amont et l'exécute sur Metal, DirectX 12, Vulkan et WebGPU — un seul code, six cibles, du vrai rendu PBR et de la physique prêts à l'emploi.

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 Surcoût d'exécution
6 Plateformes cibles
9 Sous-systèmes modulaires
1 Base de code à maintenir

Pourquoi Bloom ?

Bloom est le seul moteur de jeu qui vous permet d'écrire du TypeScript et de livrer des jeux véritablement natifs. Pas d'Electron, pas de WebView, pas de runtime de navigateur. Votre code est compilé en amont par le compilateur Perry et s'exécute sur un cœur écrit en Rust.

API simple

Toute l'API tient sur un aide-mémoire. Pas de classes, pas d'héritage, pas de magie. Juste des fonctions que vous appelez.

Vraiment natif

Un seul renderer, quatre backends — Metal, DirectX 12, Vulkan et WebGPU. Matériaux PBR, ombres en cascade, TAA et post-FX inclus.

Livrez partout

macOS, Windows, Linux, iOS, tvOS et le Web depuis une seule base de code. Prêt pour Steam, App Store et itch.io.

Tout ce dont vous avez besoin

Neuf sous-systèmes modulaires, chacun importable indépendamment. N'utilisez que ce dont vous avez besoin.

Core

Création de fenêtre, boucle de jeu, gestion des entrées, timing et contrôle des frames.

bloom/core

Shapes

Dessin de formes 2D — lignes, rectangles, cercles, polygones — plus la détection de collisions.

bloom/shapes

Textures

Chargement d'images, gestion des textures, batching de sprites et rendu vers texture.

bloom/textures

Text

Chargement de polices TTF et OTF, rendu et mesure de texte.

bloom/text

Audio

Effets sonores, streaming musical, audio positionnel 3D, WAV / OGG / MP3.

bloom/audio

Models

Chargement glTF 2.0, animation squelettique GPU, matériaux PBR, primitives de mesh.

bloom/models

Math

Vecteurs, matrices, quaternions, fonctions d'easing et génération de nombres aléatoires.

bloom/math

Physics

Corps rigides et mous propulsés par Jolt, contrôleurs de personnage, véhicules, raycasts, contraintes.

bloom/physics

Scene

Graphe de scène en mode retenu — transformations, visibilité, ombres, liaison de matériaux.

bloom/scene

Une base de code. Toutes les plateformes.

Bloom s'appuie sur l'API graphique native de chaque plateforme via un renderer unique propulsé par wgpu. Votre TypeScript se compile en véritables binaires — ou en bundle WASM pour le web.

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

Quoi de neuf

Bloom est en développement actif — plus de 300 commits ces dernières semaines. Quelques nouveautés récentes :

Renderer

Auto-DRS et netteté CAS

L'échelle de rendu dynamique s'ajuste automatiquement à votre FPS cible, avec une passe d'upscale et de netteté RCAS pour rester net en résolutions fractionnaires.

Materials

Réflexions planaires + tableaux de textures

Réflexions planaires façon miroir avec oblique-clip et repli IBL. Terrain en splat-mapping via des liaisons de tableaux de textures avec mips.

Tools

CLI imposter baker

Atlas octaédriques pour les LOD lointains — livrez des forêts denses et des foules sans étouffer votre budget de draw-calls.

Post-FX

Passes post empilables

Tone mapping ACES / AgX, auto-exposition, bloom, DoF, motion blur, SSGI, SSAO, TAA — composés via des cibles de rendu en ping-pong.

Platform

HiDPI multi-plateforme

Windows, Linux et Web partagent désormais la même gestion HiDPI que macOS et iOS avaient déjà. Votre interface reste nette sur chaque écran.

DX

Hot reload des shaders WGSL

Enregistrez un shader, voyez le résultat en moins d'une seconde. Les matériaux se recompilent sur place pendant le développement.

Des patterns familiers, une puissance native

Interfaces simples, fonctions pures, zéro magie. Si vous connaissez TypeScript, vous connaissez Bloom.

Formes 2D et collision

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

Caméra 3D et modèles

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

Prêt à construire votre jeu ?

Bloom est open source et gratuit. Lancez-vous, construisez quelque chose, et livrez-le partout.