2 điểm bởi GN⁺ 2025-08-24 | 1 bình luận | Chia sẻ qua WhatsApp
  • Librebox là game engine 3D mã nguồn mở dựa trên Luau, hướng tới tính tương thích API với Roblox
  • Nhà phát triển có thể sở hữu hoàn toàn trò chơi của mình, từ engine đến mã nguồn
  • Hiện tại dự án đang ở giai đoạn demo, hỗ trợ render cảnh cơ bản, di chuyển camera và tạo các part cơ bản
  • Các phiên bản sau sẽ bổ sung vật lý, nhập liệu người dùng, hỗ trợ đa nền tảng, v.v.
  • Giấy phép là MIT, hoàn toàn miễn phí và cho phép tự do chỉnh sửa cũng như phân phối

Giới thiệu Librebox

  • Librebox là một game engine 3D mã nguồn mở được xây dựng trên engine Luau
  • Mục tiêu chính là cung cấp API tương tự Roblox, để đảm bảo khả năng tương thích với mã Luau hiện có ở mức tối đa
  • Nhà phát triển có quyền sở hữu và sự tự do đối với cả engine lẫn logic game, cho phép phát triển mà không bị phụ thuộc vào nền tảng

Vì sao là Librebox?

  • Có thể tự do sử dụng engine và nắm quyền sở hữu
  • Các nhà phát triển đã quen với Roblox hoặc Luau có thể tái sử dụng mã gần như không cần chỉnh sửa
  • Có thể xây dựng nền tảng riêng và tự do phân phối, biến đổi, kiếm tiền

Mã ví dụ chính

  • Ví dụ: tạo part, xoay và thay đổi màu sắc
    • Tham khảo file examples/part_example.lua
    • Có thể tạo part, màu sắc, vị trí, xoay và xử lý vòng lặp theo cách gần như giống hệt mã Luau/Roblox hiện có

Tóm tắt các tính năng được hỗ trợ (theo phiên bản demo)

  • Render cảnh, ánh sáng, bóng đổ, skybox
  • Render các đối tượng trong game.Workspace
  • Chức năng di chuyển camera cơ bản
  • Hỗ trợ Instance System và các kiểu dữ liệu chính
    • CFrame, Vector3, Color3, Random, v.v.
    • Instance.new, sao chép/phá hủy part, điều khiển thuộc tính
  • Các service phía client
    • Workspace, Camera, Lighting, RunService, v.v.
    • Hỗ trợ sự kiện RenderStep/HeartBeat
  • Hỗ trợ script Luau và scheduler
    • coroutine, event, tác vụ bất đồng bộ (task.spawn, task.wait, v.v.)
  • Xử lý cửa sổ và tối ưu chế độ toàn màn hình

Nền tảng và mở rộng

  • Hiện chỉ hỗ trợ Windows
  • Sử dụng raylib, nên dễ dàng port sang các hệ điều hành khác
  • Phân phối dưới dạng tệp thực thi standalone

Các tính năng dự kiến sẽ được cung cấp trong tương lai

  • Physics engine và phát hiện va chạm
  • Hỗ trợ model/mesh, hình ảnh, GUI, material
  • GUI trên màn hình, Replication/Multiplayer (server)
  • UserInputService, ContextActionService, v.v.
  • Xây dựng hệ sinh thái hoàn chỉnh với editor riêng, server/client

Tầm nhìn và tương lai

  • Là engine mã nguồn mở độc lập hoàn chỉnh với mục tiêu tương tự Godot, Unity
  • Hiện thực hóa việc phát triển tự do với game của tôi/mã của tôi, không phụ thuộc nền tảng
  • Có kế hoạch mở rộng sang mọi lĩnh vực từ editor, server, phân phối đến kiếm tiền
  • Có thể viết lại API người dùng và mã nguồn

Giấy phép và bản quyền

  • Giấy phép MIT
  • Chỉ sử dụng các giấy phép mã nguồn mở như Luau (dựa trên Roblox engine, MIT), raylib (zlib/libpng), v.v.
  • Dự án độc lập không liên quan đến các nền tảng thương mại hay bên thứ ba
  • Không bao gồm mã nguồn, asset hay mã độc quyền từ bên ngoài

Liên hệ và cộng đồng

  • Email: librebox.developers@gmail.com
  • Bất kỳ ai cũng có thể sử dụng, phản hồi, chỉnh sửa và đóng góp

Công nghệ sử dụng

  • Được cấu thành từ C++, Lua, Luau, Python, C, CMake, v.v.

Tầm quan trọng và lợi thế so sánh

  • Game engine mã nguồn mở độc lập dành cho hệ sinh thái Roblox/Lua
  • Mang lại tự do sáng tạo/sở hữu/kiếm tiền vốn bị hạn chế trên các nền tảng thương mại hiện có
  • Với mã nguồn công khai hoàn toàn, tương thích API, và bản demo trên Windows, đây là lựa chọn phù hợp để tạo game/nội dung 3D dựa trên Lua

Kết luận

  • Là một game engine hội tụ đủ miễn phí, mã nguồn mở, tương thích và tự do, trở thành lựa chọn hấp dẫn cho các nhà phát triển junior và phát triển game đa nền tảng

1 bình luận

 
GN⁺ 2025-08-24
Ý kiến trên Hacker News
  • Librebox hiện vẫn chỉ ở giai đoạn demo, mới triển khai một phần cực nhỏ của API Roblox, còn thiếu rất nhiều tính năng như server hay networking
    • Nếu tôi là đội phát triển, tôi sẽ bắt đầu từ server và networking trước, vì để sau mới thêm vào thì thường sẽ rất khó
  • Tôi nghĩ đây là một nỗ lực mới mẻ và chúc dự án gặp may, hy vọng không bị đội pháp lý của Roblox nhắm tới; nó có thể mở ra một hướng sử dụng tốt cho client native trên Linux. Sober đang được dùng nhiều hiện nay là phần mềm độc quyền, còn Vinegar trước đây thì bị chặn vì các vấn đề từ phía hacker Linux
    • Roblox có thể sẽ tìm cách thực hiện biện pháp pháp lý, nhưng cá nhân tôi cảm thấy dự án này rõ ràng là hợp pháp. Nếu xét theo tiêu chí tính hợp pháp thì tôi sẽ chấm nó cao hơn VLC Media Player (vấn đề bằng sáng chế), và cao hơn rất nhiều so với trình giả lập NES. Tôi nghĩ nó thấp hơn Android, nhưng dù sao Oracle cũng từng kiện Android. (Tôi không phải luật sư)
    • Nhìn vào thứ tự ưu tiên của đội pháp lý Roblox, có cảm giác những dự án kiểu này lại được xử lý trước cả vấn đề bóc lột trẻ em trong Roblox
  • Có người nhắc đến việc không có :WaitForChild(), nhưng lại nói đây có khi là điểm tốt hơn
    • Thực ra đây không phải vấn đề lớn, chỉ là một tính năng tiện lợi nhỏ, tốt hơn busy waiting. Nhiều khi không thể đảm bảo một object chắc chắn tồn tại trước khi code chạy, nên có thể tự triển khai hành vi tương tự như sau: while not parentObj:FindFirstChild("childObj name") do wait() end. Theo tôi biết thì hàm wait() có độ trễ tối thiểu 1/30 giây mỗi frame; nếu muốn gần như ngay lập tức thì phải chạy ở mỗi heartbeat
  • Có một lượng khổng lồ nội dung do người dùng tạo ra đang bị khóa trong Roblox, cảm giác như có rất nhiều tài nguyên ở đó
    • Đặc biệt là các nội dung kiểu Club cần được giải phóng bằng mọi giá
  • Dù tìm trong kho mã nguồn (github) thế nào cũng không thấy thông tin gì về nhà phát triển. Ngay cả server Discord cũng không có gì trong các kênh, và tài khoản được gắn vai trò nhà phát triển cũng chỉ có đúng một tài khoản dành riêng cho dự án. Mã nguồn thì có dấu hiệu là đã có công sức thực sự bỏ vào, không phải chỉ có mỗi README. Nhưng tổng thể vẫn tạo cảm giác hơi kỳ quặc
    • Các dự án one-man do một người làm thường vốn là như vậy
    • Nếu diễn giải theo hướng thiện chí, có lẽ việc ẩn danh tính là vì sợ rắc rối pháp lý. Bản thân Roblox là một tập đoàn lớn trị giá 81 tỷ
  • Nếu không dùng được Robux thì cá nhân tôi không mấy quan tâm. Thực ra cốt lõi của vấn đề là Robux (hệ thống tiền tệ), chứ bản thân engine không đặc biệt đến thế
    • Lý do nhiều nhà phát triển không thể rời khỏi ROBLOX là vì họ đã học và thành thạo công cụ của ROBLOX từ nhỏ, rồi kỹ năng đó trở thành kỹ năng ngách mà hầu như không dùng được ở các game engine khác. Giờ lựa chọn chỉ còn là bắt đầu lại từ đầu trong môi trường mới như Unity, hoặc tiếp tục tạo ra sản phẩm chất lượng cao bên trong ROBLOX như trước. Họ có bạn bè và danh tiếng đã gây dựng trong từng cộng đồng. Thành thật mà nói, tôi còn ngạc nhiên vì mãi đến giờ mới có một giải pháp thay thế tương thích API như thế này
    • Đây cũng có thể là cơ hội để các nhà phát triển phát hành game Roblox của họ thành game độc lập và thoát khỏi platform lock-in. Tất nhiên, việc người dùng hiện tại có đi theo hay không lại là chuyện khác
    • Tôi không thích Roblox, nhưng có nghe nói bộ công cụ làm game của Roblox thực sự khá hoàn thiện
  • Tôi nghĩ kho mã nguồn này khá ngầu
  • Tôi tự hỏi liệu thứ này có thật sự giúp ích cho việc test cục bộ hay cải thiện QA không. Gần đây tôi đã thử làm cho Lemur (đã archive) chạy trên Lune để chạy test jest cho ứng dụng react-lua, thậm chí còn tự viết một test runner xuất in-game output. Vấn đề là Roblox Studio hiện vẫn không chạy tốt trên Linux bằng gói vinegar, nên nếu chỉ cần có thể dùng tùy chọn RobloxStudio.exe --place game.rbxlx --script test_runner.lua --keep-open để liên tục in output ra console thì sẽ tiện vô cùng.
    • Tôi từng định thêm loadPlaceFile vào kho Lemur, nhưng rồi dừng lại vì không chắc có nên đặt nó ở đó không; đúng lúc đó tôi biết đến Librebox, và giờ thì kỳ vọng có thể dùng nó để chạy test CI cục bộ cho ứng dụng react-lua bằng Jest
    • Tham khảo thêm, Roblox cũng có bản beta Open Cloud Engine API cho phép chạy mã Luau bên trong place. [Beta] Open Cloud Engine API for Executing Luau
    • Lợi ích khi chạy test cục bộ: ghi lại ảnh chụp màn hình và video khi test thất bại, phản hồi tức thì, và có thể vào ngay phiên chơi khi fail bằng tùy chọn -i hoặc chế độ interactive