Open-Source-Game-Engine

Native Spiele aus TypeScript

Schreib TypeScript. Liefere native Spiele aus. Kein Browser, kein C++. Bloom kompiliert dein Spiel ahead-of-time und lässt es auf Metal, DirectX 12, Vulkan und WebGPU laufen — eine Codebasis, sechs Zielplattformen, echtes PBR-Rendering und Physik direkt out of the box.

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 Runtime-Overhead
6 Zielplattformen
9 Modulare Subsysteme
1 Zu pflegende Codebasis

Warum Bloom?

Bloom ist die einzige Game-Engine, mit der du TypeScript schreibst und wirklich native Spiele ausliefern kannst. Kein Electron, kein WebView, keine Browser-Runtime. Dein Code wird vom Perry-Compiler ahead-of-time kompiliert und läuft gegen einen Rust-Kern.

Einfache API

Die gesamte API passt auf ein Cheatsheet. Keine Klassen, keine Vererbung, keine Magie. Nur Funktionen, die du aufrufst.

Echt nativ

Ein Renderer, vier Backends — Metal, DirectX 12, Vulkan und WebGPU. PBR-Materialien, Cascaded Shadows, TAA und Post-FX direkt mit dabei.

Überall ausliefern

macOS, Windows, Linux, iOS, tvOS und das Web aus einer Codebasis. Bereit für Steam, App Store und itch.io.

Alles, was du brauchst

Neun modulare Subsysteme, jedes einzeln importierbar. Nutze nur, was du brauchst.

Core

Fenstererstellung, Game-Loop, Input-Handling, Timing und Frame-Steuerung.

bloom/core

Shapes

2D-Formen zeichnen — Linien, Rechtecke, Kreise, Polygone — plus Kollisionserkennung.

bloom/shapes

Textures

Bildladen, Texturverwaltung, Sprite-Batching und Render-to-Texture.

bloom/textures

Text

TTF- und OTF-Schriftladen, Textrendering und Vermessung.

bloom/text

Audio

Soundeffekte, Musikstreaming, 3D-Positionsaudio, WAV / OGG / MP3.

bloom/audio

Models

glTF 2.0-Laden, GPU-Skelettanimation, PBR-Materialien, Mesh-Primitive.

bloom/models

Math

Vektoren, Matrizen, Quaternionen, Easing-Funktionen und Zufallszahlengenerierung.

bloom/math

Physics

Jolt-basierte Rigid- und Soft-Bodies, Charaktercontroller, Fahrzeuge, Raycasts, Constraints.

bloom/physics

Scene

Retained-Mode-Szenengraph — Transformationen, Sichtbarkeit, Schatten, Material-Binding.

bloom/scene

Eine Codebasis. Jede Plattform.

Bloom bildet auf jeder Plattform die native Grafik-API ab — über einen einzigen wgpu-basierten Renderer. Dein TypeScript wird zu echten Binaries kompiliert — oder zu einem WASM-Bundle fürs Web.

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

Was ist neu

Bloom wird aktiv entwickelt — allein in den letzten Wochen über 300 Commits. Aktuelle Highlights:

Renderer

Auto-DRS & CAS-Schärfung

Dynamische Render-Skalierung passt sich automatisch an deine Ziel-FPS an, mit einem Upscale- plus RCAS-Schärfungs-Pass, damit das Bild auch bei fraktionalen Auflösungen knackig bleibt.

Materials

Planare Reflexionen + Texture Arrays

Spiegelartige planare Reflexionen mit Oblique-Clip und IBL-Fallback. Splat-gemapptes Terrain über Texture-Array-Bindings mit Mips.

Tools

Imposter-Baker-CLI

Octahedrale Atlanten für entfernte LODs — liefere dichte Wälder und Menschenmengen aus, ohne dein Draw-Call-Budget zu sprengen.

Post-FX

Stapelbare Post-Passes

ACES- / AgX-Tonemapping, Auto-Exposure, Bloom, DoF, Motion Blur, SSGI, SSAO, TAA — kombiniert über Ping-Pong-Render-Targets.

Platform

Plattformübergreifendes HiDPI

Windows, Linux und Web teilen sich jetzt dasselbe HiDPI-Handling, das macOS und iOS schon hatten. Deine UI bleibt auf jedem Display scharf.

DX

WGSL-Shader-Hot-Reload

Shader speichern, Ergebnis in unter einer Sekunde sehen. Materialien werden während der Entwicklung an Ort und Stelle neu kompiliert.

Vertraute Patterns, native Power

Schlichte Interfaces, reine Funktionen, null Magie. Wenn du TypeScript kennst, kennst du Bloom.

2D-Formen & Kollision

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

3D-Kamera & Models

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

Bereit, dein Spiel zu bauen?

Bloom ist Open Source und kostenlos. Spring rein, bau etwas und liefere es überall aus.