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.
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();
} 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.
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:
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ố.
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.
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.
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.
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.
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.