Repo ahwootech/BRUTAL là một framework C# mã nguồn mở để làm game, hoặc để tự dựng engine riêng trên nền nó. Không có editor, không có scene graph, không có renderer sẵn. Đúng nghĩa “framework”, không phải engine đóng gói.
Cái làm nên chuyện ở đây là lớp interop tự viết, cho C# gọi thẳng vào native API và thư viện hệ thống. Quanh lõi đó là các thư viện con: cấp phát bộ nhớ unmanaged, string không allocation, collection không allocation, job scheduling, logging, localization, cùng binding cho Vulkan, GLFW, Dear ImGui, FMOD, RakNet, Jolt, Box2D. Mỗi thư mục top-level trong repo là một NuGet package riêng, muốn dùng cái nào thì reference cái đó.
Nó giải quyết vấn đề gì, nói thẳng
Vấn đề là chi phí dựng nền. Một studio muốn rời Unity hay Unreal thường phải bỏ vài năm làm interop, memory, math, threading, binding đồ họa trước khi viết được dòng gameplay đầu tiên. BRUTAL gom đúng phần nền đó lại, phát hành miễn phí, để dev tập trung vào phần trên.
README nói rõ triết lý: “You are only as independent as your tools are.” Và họ tự nhận framework này khó dùng hơn Unity, Unreal hay Godot ở nhiều chỗ. Đổi lại, khi bạn làm thứ gì đó không theo khuôn mẫu, nó dễ hơn hẳn. Bạn phải biết mình muốn làm gì trước đã. Câu này tôi thấy thành thật, hiếm repo nào chịu viết ra.
Vài điểm cụ thể trong README:
- Miễn phí, kể cả game thương mại. Không royalty, chỉ xin credit.
- Source ở đây, giấy phép dựa trên MIT. Nếu một ngày đội ngũ không còn chịu trách nhiệm với dev, bạn fork và đi đường riêng.
- Cố tình nhỏ. Họ làm tốt vài thứ low-level: interop, memory, concurrency, math, string, binding native library trên C# và Vulkan mới nhất. Tránh allocation, dùng unmanaged memory và unsafe code khi hợp lý.
- Là nền, kiểu kernel. Họ so với Linux kernel và Ubuntu, thừa nhận phép so không chính xác tuyệt đối nhưng đủ ý.
Và họ nói thẳng cái không làm: không có editor, không có scene graph, không có renderer, và không thêm. PR nào đi lệch mục đích sẽ bị từ chối. Với một repo đang hot, việc dám đóng cửa tính năng như vậy khá lạ.
Vì sao nó đang hot
1.702 sao, tạo ngày 14/10/2026, cập nhật 16/10/2026. Hai ngày, hơn 1.700 sao. Con số đó phần lớn đến từ danh sách project đang dùng nó, chứ không phải từ benchmark.
Bảng project trong README đáng đọc kỹ:
- RimWorld (Ludeon Studios) dùng engine Waylith, và Waylith được xây trên BRUTAL. Ludeon báo hiệu năng gấp 2 đến 4 lần bản Unity trong test của họ, phần lớn mod hiện có vẫn tương thích. Đây là điểm neo lớn nhất. Một game sống bằng mod mà chuyển engine không vỡ mod là chuyện không nhỏ.
- Kitten Space Agency (RocketWerkz) chạy trực tiếp trên BRUTAL, là pre-alpha miễn phí, mô phỏng hệ Mặt Trời ở tỉ lệ thật.
- Cùng studio còn Torpedia, Art of the Rail, Gruntz. Thêm Afterskies của Floating Origin Interactive.
Nhu cầu phía sau cũng dễ hiểu. Dev C# có Unity, nhưng Unity là engine đóng, quyết định kiến trúc thay bạn, và chuyện phí, license thì ai cũng biết. Godot thì C# là công dân hạng hai. BRUTAL nhắm đúng khoảng trống: người muốn viết C#, muốn kiểm soát memory và render loop, không muốn tự viết lớp interop Vulkan từ đầu.
Điểm khác biệt so với engine thông thường nằm ở chỗ nó không cố giải quyết bài toán của bạn. Bạn tự chọn stack, tự chọn NuGet package, kể cả bên thứ ba. Không bị khóa vào hệ sinh thái của ai.
Cài và chạy thử
Yêu cầu: .NET 10 SDK, GPU hỗ trợ Vulkan 1.3 với driver mới (nếu có render), Vulkan SDK nếu muốn bật validation layer khi dev, Windows hoặc Linux.
Project đầu tiên, mở một cửa sổ:
dotnet new console -n HelloBrutal
cd HelloBrutal
dotnet add package Ahwoo.Brutal.Core
dotnet add package Ahwoo.Brutal.Glfw
Nội dung Program.cs, phần đầu từ README:
using Brutal.GlfwApi;
using Brutal.Numerics;
if (!Glfw.Init())
throw new Exception("Failed to initialize GLFW");
Glfw.WindowHint(Glfw
Đoạn code trên bị cắt trong README rút gọn nên tôi không dựng完整 ví dụ được. Muốn chạy đầy đủ thì xem thẳng trang chủ ahwoo.com/brutal hoặc file README gốc trên GitHub, đừng copy nửa chừng rồi thắc mắc tại sao không compile.
Lưu ý nhỏ: package trên NuGet có prefix Ahwoo.Brutal.*, còn namespace trong code là Brutal.*. Dễ nhầm lúc dotnet add package, gõ sai là không tìm thấy.
Ai nên dùng, ai không
Dùng khi bạn thuộc một trong các nhóm này:
- Dev hoặc studio C# đang cân nhắc rời Unity và không muốn tự viết toàn bộ lớp native từ số 0.
- Người làm simulation, tool chuyên dụng, game có yêu cầu render hoặc memory không giống engine phổ thông.
- Team muốn kiểm soát toàn bộ stack, chấp nhận đọc source và tự debug ở tầng thấp.
- Ai đang tò mò Kitten Space Agency chạy thế nào bên dưới.
Không dùng khi bạn cần kéo thả làm game 2D trong một tuần, cần asset store, cần cộng đồng trả lời câu hỏi trong 10 phút. README tự nói nó khó hơn Unity, Unreal, Godot. Tin họ đi.
So sánh nhanh
Với Unity: Unity cho bạn editor, asset pipeline, ecosystem khổng lồ, đổi lại là engine đóng và phụ thuộc vào quyết định của công ty. BRUTAL ngược lại gần như mọi mặt, trừ ngôn ngữ là C#. Với Godot: Godot là engine hoàn chỉnh, C# dùng được nhưng không phải trọng tâm. BRUTAL không phải engine, nên đặt lên bàn cân trực tiếp hơi khập khiễng. Với việc tự viết lớp interop: BRUTAL tiết kiệm cho bạn phần lớn thời gian của giai đoạn nền, và phần đó đã được chứng minh qua RimWorld.
Ưu và nhược, đọc trước khi clone
Ưu: miễn phí cả game thương mại, không royalty. Giấy phép dựa trên MIT, fork được. Đã có sản phẩm thật chạy production. Module hóa thành NuGet, reference đúng cái cần, không kéo cả đống dependency. Hiệu năng có số cụ thể từ Ludeon (2 đến 4 lần bản Unity).
Nhược và điểm cần cảnh giác:
- Repo mới tạo ngày 14/10/2026. Tuổi đời tính bằng ngày. Đừng nhầm độ chín của công nghệ với độ hot của repo. Công nghệ thì đã chạy trong RimWorld, nhưng cộng đồng công khai thì còn non.
- License: phần thông tin repo ghi “không rõ”, README nói “MIT-based licence”. “Based” chứ không phải “MIT” thuần. Trước khi dùng cho dự án thương mại, đọc file license thật trong repo và mục
LICENSEScủa từng thư viện. Đừng tin dòng mô tả. - Không có editor, không có renderer. Bạn phải tự viết render loop, tự quản lý scene. Với người quen Unity, đây là cú sốc.
- Tài liệu: README khá tốt về định hướng, nhưng để hiểu sâu thì phải đọc source. Chưa thấy hệ thống docs đầy đủ.
- Cần .NET 10 SDK và GPU Vulkan 1.3. Máy cũ hoặc môi trường CI không có GPU rời sẽ gặp phiền.
Một chi tiết tôi thấy đáng ghi nhận: họ nói rõ sẽ từ chối PR đi lệch mục đích. Với framework low-level, việc giữ phạm vi hẹp là điều kiện sống còn. Nhưng nó cũng có nghĩa: nếu bạn cần tính năng X không có trong danh sách, đừng chờ họ thêm, tự viết hoặc fork.
Nếu bạn đang cân nhắc, cách thử rẻ nhất là tải Kitten Space Agency (miễn phí, pre-alpha) chạy thử, rồi clone repo đọc thư mục Brutal.Interop. Đọc xong mà thấy hiểu thì framework này dành cho bạn. Đọc xong mà hoa mắt thì quay lại Unity, không sao cả. Repo ở đây: ahwootech/BRUTAL.
