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.
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();
} 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.
Quoi de neuf
Bloom est en développement actif — plus de 300 commits ces dernières semaines. Quelques nouveautés récentes :
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.
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.
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.
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.
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.
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.