Game Engine Open Source

Game native dari TypeScript

Tulis TypeScript. Rilis game native. Tanpa browser, tanpa C++. Bloom mengompilasi game kamu secara ahead-of-time dan menjalankannya di Metal, DirectX 12, Vulkan dan WebGPU — satu codebase, enam target, rendering PBR sungguhan dan physics siap pakai.

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 runtime
6 Platform target
9 Subsistem modular
1 Codebase yang dikelola

Kenapa Bloom?

Bloom adalah satu-satunya game engine yang memungkinkan kamu menulis TypeScript dan merilis game yang benar-benar native. Tanpa Electron, tanpa WebView, tanpa runtime browser. Kode kamu dikompilasi ahead-of-time oleh kompiler Perry dan berjalan di atas core Rust.

API Sederhana

Seluruh API muat di satu cheatsheet. Tanpa class, tanpa inheritance, tanpa sihir. Hanya fungsi yang kamu panggil.

Benar-benar Native

Satu renderer, empat backend — Metal, DirectX 12, Vulkan dan WebGPU. Material PBR, cascaded shadows, TAA dan post-FX siap pakai.

Rilis ke Mana Saja

macOS, Windows, Linux, iOS, tvOS dan Web dari satu codebase. Siap untuk Steam, App Store dan itch.io.

Semua yang kamu butuhkan

Sembilan subsistem modular, masing-masing bisa diimpor secara terpisah. Pakai hanya yang kamu butuhkan.

Core

Pembuatan window, game loop, penanganan input, timing, dan kontrol frame.

bloom/core

Shapes

Menggambar bentuk 2D — garis, persegi, lingkaran, poligon — plus deteksi tabrakan.

bloom/shapes

Textures

Pemuatan gambar, manajemen tekstur, sprite batching, dan render-to-texture.

bloom/textures

Text

Pemuatan font TTF dan OTF, rendering teks, dan pengukurannya.

bloom/text

Audio

Efek suara, streaming musik, audio posisional 3D, WAV / OGG / MP3.

bloom/audio

Models

Pemuatan glTF 2.0, animasi skeletal di GPU, material PBR, mesh primitif.

bloom/models

Math

Vektor, matriks, kuaternion, fungsi easing, dan pembangkit angka acak.

bloom/math

Physics

Rigid & soft body bertenaga Jolt, character controller, kendaraan, raycast, constraint.

bloom/physics

Scene

Scene graph mode retained — transform, visibilitas, bayangan, binding material.

bloom/scene

Satu codebase. Semua platform.

Bloom memetakan ke API grafis native di tiap platform melalui satu renderer berbasis wgpu. TypeScript kamu dikompilasi ke binary asli — atau ke bundle WASM untuk web.

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

Yang baru

Bloom sedang dalam pengembangan aktif — 300+ commit hanya dalam beberapa minggu terakhir. Sorotan terbaru:

Renderer

Auto-DRS & penajaman CAS

Render scale dinamis menyesuaikan otomatis ke target FPS, dengan upscale + RCAS sharpen pass agar tetap tajam di resolusi pecahan.

Materials

Refleksi planar + texture array

Refleksi planar mirip cermin dengan oblique-clip dan fallback IBL. Terrain splat-mapped via texture-array binding dengan mip.

Tools

CLI imposter baker

Atlas oktahedral untuk LOD jauh — rilis hutan padat dan kerumunan tanpa mencekik anggaran draw call kamu.

Post-FX

Post pass yang bisa ditumpuk

Tone mapping ACES / AgX, auto-exposure, bloom, DoF, motion blur, SSGI, SSAO, TAA — disusun melalui render target ping-pong.

Platform

HiDPI lintas platform

Windows, Linux dan Web kini berbagi penanganan HiDPI yang sama seperti yang sudah dimiliki macOS dan iOS. UI kamu tetap tajam di setiap layar.

DX

Hot reload shader WGSL

Simpan shader, lihat hasilnya kurang dari satu detik. Material dikompilasi ulang di tempat selama pengembangan.

Pola yang familiar, tenaga native

Interface biasa, fungsi murni, tanpa sihir. Kalau kamu bisa TypeScript, kamu bisa Bloom.

Bentuk 2D & Tabrakan

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

Kamera 3D & Model

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

Siap membangun game-mu?

Bloom open source dan gratis. Langsung lompat masuk, bangun sesuatu, dan rilis ke mana saja.