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.

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 Çalışma zamanı yükü
6 Hedef platformlar
9 Modüler alt sistemler
1 Bakılacak kod tabanı

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.

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

Yenilikler

Bloom aktif geliştirme aşamasında — sadece son birkaç haftada 300'ü aşkın commit. Son öne çıkanlar:

Renderer

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.

Materials

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.

Tools

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.

Post-FX

İ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ş.

Platform

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.

DX

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.