Game Engine Mã nguồn mở

Game native viết bằng TypeScript

Viết TypeScript. Xuất bản game native. Không trình duyệt, không C++. Bloom biên dịch game của bạn trước thời gian chạy và chạy trên Metal, DirectX 12, Vulkan và WebGPU — một codebase, sáu nền tảng, kết xuất PBR thực thụ và vật lý có sẵn.

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 Chi phí runtime
6 Nền tảng đích
9 Hệ thống con dạng module
1 Codebase cần bảo trì

Vì sao chọn Bloom?

Bloom là game engine duy nhất cho phép bạn viết TypeScript và xuất bản game native thực sự. Không Electron, không WebView, không runtime trình duyệt. Mã nguồn của bạn được biên dịch trước thời gian chạy bởi trình biên dịch Perry và chạy trên một lõi viết bằng Rust.

API Đơn giản

Toàn bộ API gói gọn trong một tờ cheatsheet. Không class, không kế thừa, không phép thuật. Chỉ là các hàm bạn gọi.

Native Thực thụ

Một bộ kết xuất, bốn backend — Metal, DirectX 12, Vulkan và WebGPU. Vật liệu PBR, đổ bóng phân tầng, TAA và post-FX có sẵn.

Xuất bản Khắp nơi

macOS, Windows, Linux, iOS, tvOS và Web từ một codebase. Sẵn sàng cho Steam, App Store và itch.io.

Mọi thứ bạn cần

Chín hệ thống con dạng module, mỗi cái có thể import độc lập. Chỉ dùng những gì bạn cần.

Core

Tạo cửa sổ, vòng lặp game, xử lý đầu vào, định thời và điều khiển khung hình.

bloom/core

Shapes

Vẽ hình khối 2D — đường, hình chữ nhật, hình tròn, đa giác — cùng phát hiện va chạm.

bloom/shapes

Textures

Tải hình ảnh, quản lý texture, gộp sprite và render-to-texture.

bloom/textures

Text

Tải font TTF và OTF, kết xuất chữ và đo kích thước.

bloom/text

Audio

Hiệu ứng âm thanh, phát nhạc dạng stream, âm thanh định vị 3D, WAV / OGG / MP3.

bloom/audio

Models

Tải glTF 2.0, hoạt hình xương trên GPU, vật liệu PBR, các mesh nguyên mẫu.

bloom/models

Math

Vector, ma trận, quaternion, hàm easing và sinh số ngẫu nhiên.

bloom/math

Physics

Vật thể cứng và mềm bằng Jolt, bộ điều khiển nhân vật, phương tiện, raycast, ràng buộc.

bloom/physics

Scene

Đồ thị scene retained-mode — biến đổi, hiển thị, đổ bóng, gắn vật liệu.

bloom/scene

Một codebase. Mọi nền tảng.

Bloom ánh xạ tới API đồ họa native trên từng nền tảng thông qua một bộ kết xuất duy nhất dựa trên wgpu. TypeScript của bạn được biên dịch thành các binary thực — hoặc thành một bundle WASM cho web.

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

Có gì mới

Bloom đang được phát triển tích cực — hơn 300 commit chỉ trong vài tuần qua. Các điểm nổi bật gần đây:

Renderer

Auto-DRS & CAS sharpen

Tỉ lệ kết xuất động tự điều chỉnh theo FPS đích, kèm một lượt upscale + RCAS sharpen để giữ hình sắc nét ở độ phân giải phân số.

Materials

Phản chiếu phẳng + texture array

Phản chiếu phẳng kiểu gương với oblique-clip và IBL dự phòng. Địa hình splat-mapped qua các binding texture-array kèm mip.

Tools

CLI bake imposter

Atlas dạng octahedral cho LOD ở xa — xuất bản rừng cây dày đặc và đám đông mà không làm nghẹt ngân sách draw-call.

Post-FX

Các lượt post xếp chồng

Tone mapping ACES / AgX, auto-exposure, bloom, DoF, motion blur, SSGI, SSAO, TAA — kết hợp qua các render target ping-pong.

Platform

HiDPI đa nền tảng

Windows, Linux và Web giờ chia sẻ cùng cách xử lý HiDPI mà macOS và iOS đã có. UI của bạn luôn sắc nét trên mọi màn hình.

DX

Hot reload shader WGSL

Lưu một shader, thấy kết quả trong chưa đầy một giây. Vật liệu được biên dịch lại tại chỗ trong lúc phát triển.

Mẫu thức quen thuộc, sức mạnh native

Interface đơn giản, hàm thuần, không phép thuật. Nếu bạn biết TypeScript, bạn biết Bloom.

Hình khối 2D & Va chạm

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

Camera 3D & 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();

Sẵn sàng dựng game của bạn?

Bloom là mã nguồn mở và miễn phí. Hãy nhảy vào, dựng thứ gì đó và xuất bản nó khắp nơi.