Açık Kaynak Oyun Motoru
Native oyunlar, doğrudan TypeScript
TypeScript yaz. Native oyun yayınla. Tarayıcı yok, C++ yok. Bloom oyununu önceden derler ve Metal, DirectX 12, Vulkan ile WebGPU üzerinde çalıştırır — tek kod tabanı, altı hedef, kutudan çıkar çıkmaz gerçek PBR render ve fizik.
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();
} Neden Bloom?
Bloom, TypeScript yazıp gerçek anlamda native oyunlar yayınlamana izin veren tek oyun motorudur. Electron yok, WebView yok, tarayıcı çalışma zamanı yok. Kodun Perry derleyicisi tarafından önceden derlenir ve bir Rust çekirdeğine karşı çalışır.
Basit API
API'nin tamamı bir kopya kağıdına sığar. Sınıf yok, kalıtım yok, sihir yok. Sadece çağırdığın fonksiyonlar.
Gerçek Native
Tek render motoru, dört arka uç — Metal, DirectX 12, Vulkan ve WebGPU. PBR materyaller, kademeli gölgeler, TAA ve post-FX kutunun içinde.
Her Yere Yayınla
Tek bir kod tabanından macOS, Windows, Linux, iOS, tvOS ve Web. Steam, App Store ve itch.io'ya hazır.
İhtiyacın olan her şey
Dokuz modüler alt sistem, her biri bağımsız olarak içe aktarılabilir. Sadece ihtiyacın olanı kullan.
Core
Pencere oluşturma, oyun döngüsü, girdi yönetimi, zamanlama ve kare kontrolü.
bloom/core Shapes
2B şekil çizimi — çizgiler, dikdörtgenler, daireler, çokgenler — artı çarpışma tespiti.
bloom/shapes Textures
Görüntü yükleme, doku yönetimi, sprite gruplama ve doku üzerine render.
bloom/textures Text
TTF ve OTF font yükleme, metin renderlama ve ölçüm.
bloom/text Audio
Ses efektleri, müzik akışı, 3B konumsal ses, WAV / OGG / MP3.
bloom/audio Models
glTF 2.0 yükleme, GPU iskelet animasyonu, PBR materyaller, mesh ilkel cisimleri.
bloom/models Math
Vektörler, matrisler, kuaterniyonlar, easing fonksiyonları ve rastgele sayı üretimi.
bloom/math Physics
Jolt destekli katı ve yumuşak cisimler, karakter denetleyicileri, araçlar, ışın izleri, kısıtlar.
bloom/physics Scene
Tutulan kipte sahne grafiği — dönüşümler, görünürlük, gölgeler, materyal bağlama.
bloom/scene Tek kod tabanı. Her platform.
Bloom, tek bir wgpu tabanlı render motoru aracılığıyla her platformda native grafik API'sine eşlenir. TypeScript kodun gerçek ikili dosyalara — ya da web için bir WASM paketine — derlenir.
Yenilikler
Bloom aktif geliştirme aşamasında — sadece son birkaç haftada 300'ü aşkın commit. Son öne çıkanlar:
Otomatik DRS ve CAS keskinleştirme
Dinamik render ölçeği hedef FPS'ine göre kendini ayarlar; kesirli çözünürlüklerde net kalmak için bir upscale + RCAS keskinleştirme geçişi uygular.
Düzlemsel yansımalar + doku dizileri
Eğik kırpma ve IBL yedeği ile ayna benzeri düzlemsel yansımalar. Mip'li doku dizisi bağlamaları üzerinden splat eşlemeli arazi.
Imposter baker CLI
Uzak LOD'lar için oktahedral atlaslar — çizim çağrısı bütçeni boğmadan yoğun ormanlar ve kalabalıklar yayınla.
İstiflenebilir post geçişleri
ACES / AgX ton eşleme, otomatik pozlama, bloom, DoF, hareket bulanıklığı, SSGI, SSAO, TAA — ping-pong render hedefleri ile birleştirilmiş.
Platformlar arası HiDPI
Windows, Linux ve Web artık macOS ile iOS'un zaten sahip olduğu aynı HiDPI işlemesini paylaşıyor. UI'ın her ekranda net kalır.
WGSL shader hot reload
Bir shader'ı kaydet, sonucu bir saniyeden kısa sürede gör. Geliştirme sırasında materyaller yerinde yeniden derlenir.
Tanıdık desenler, native güç
Düz arayüzler, saf fonksiyonlar, sıfır sihir. TypeScript biliyorsan, Bloom'u biliyorsun.
2B Şekiller ve Çarpışma
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);
} 3B Kamera ve Modeller
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(); Oyununu yapmaya hazır mısın?
Bloom açık kaynak ve ücretsiz. Atla, bir şeyler yap ve her yere yayınla.