Roblox-호환 오픈소스 게임 엔진인 Librebox
(github.com/librebox-devs)- Librebox는 오픈소스 Luau 기반 3D 게임 엔진으로, Roblox와 API 호환성을 지향함
- 개발자는 엔진부터 코드까지 자신의 게임에 대한 완전한 소유권을 가질 수 있음
- 현재는 데모 단계로, 핵심적인 씬 렌더링과 카메라 이동, 기본 파트 생성 등이 지원됨
- 향후 버전에서는 물리, 사용자 입력, 멀티플랫폼 지원 등이 추가될 예정임
- 라이센스는 MIT로, 완전히 무료이며 자유로운 수정과 배포가 가능함
Librebox 소개
- Librebox는 Luau 엔진 위에 구축된 오픈소스 3D 게임 엔진임
- 주요 목표는 Roblox와 유사한 API를 제공하여, 기존 Luau 코드의 호환성을 최대한 보장함
- 개발자는 엔진 자체와 게임 로직 모두에 대한 소유권과 자유를 가지며, 플랫폼 종속성을 벗어난 개발이 가능함
왜 Librebox인가?
- 자유로운 엔진 사용과 소유권 확보가 가능함
- 기존 Roblox나 Luau 친숙 개발자가 거의 수정 없이 코드 재사용 가능
- 자신만의 플랫폼 구축 및 자유로운 배포, 변형, 수익화 가능
주요 예시 코드
- 예시: 파트를 생성하고 회전 및 색상 변환
-
examples/part_example.lua
파일 참고 - 기존 Luau/Roblox 코드와 거의 동일한 방식으로 파트 생성, 색상, 위치, 회전, 루프 처리 가능
-
지원 기능 요약 (데모 버전 기준)
- 씬 렌더링, 조명, 섀도우, 스카이박스
- game.Workspace 내 오브젝트 렌더링
- 기본 카메라 이동 기능
-
Instance System 및 주요 데이터 타입 지원
-
CFrame
,Vector3
,Color3
,Random
등 -
Instance.new
, 파트 복제/파괴, 속성 제어
-
-
Client 사이드 서비스
- Workspace, Camera, Lighting, RunService 등
- RenderStep/HeartBeat 이벤트 지원
-
Luau 스크립트 지원 및 스케줄러
- 코루틴, 이벤트, 비동기 작업(
task.spawn
,task.wait
등)
- 코루틴, 이벤트, 비동기 작업(
- 윈도우 핸들링 및 전체화면 최적화
플랫폼 및 확장
- 현재 Windows 전용 지원
- raylib을 활용, 타 OS로의 이식이 용이함
- Standalone 실행파일로 배포
앞으로 제공 예정인 기능
- 물리 엔진 및 충돌 감지
- 모델/메시, 이미지, GUI, 머터리얼 지원
- Onscreen GUI, Replication/Multiplayer (서버)
- UserInputService, ContextActionService 등
- 자체 에디터, 서버/클라이언트 완결 생태계 구축
비전 및 미래
- 완전한 독립형 오픈소스 엔진으로 Godot, Unity와 유사한 목표
- 플랫폼 종속 없이, 내 게임/내 코드로 자유로운 개발 실현
- 에디터, 서버, 배포 및 수익화까지 모든 영역 확장 계획
- 사용자 API 및 소스코드 재작성 가능
라이선스 및 저작권
- MIT 라이선스
- Luau(로블록스 엔진 기반, MIT), raylib(zlib/libpng) 등 오픈소스 라이선스만 사용
- 상업 플랫폼 및 타사와 무관한 독립 프로젝트
- 외부 소스/에셋/프로프라이어터리 코드 불포함
문의 및 커뮤니티
- 이메일: librebox.developers@gmail.com
- 누구나 사용, 피드백, 수정, 기여 가능
기술 스택
- C++ , Lua, Luau, Python, C, CMake 등으로 구성
중요성 및 비교 우위
- Roblox/루아 생태계의 독립 대응 오픈소스 엔진
- 기존 상용 플랫폼에서는 제한되는 제작/소유/수익화의 자유를 제공
- 완전한 소스공개, API 호환성, 윈도우 기반 데모 제공으로, 루아 기반 3D 게임/콘텐츠 제작에 적합
결론
- 무료, 오픈소스, 호환성, 자유까지 모두 갖춘 게임 엔진으로, 주니어 개발자 및 크로스플랫폼 게임 개발에 매력적인 선택지임
Hacker News 의견
- Librebox는 아직 데모 단계임, Roblox API의 극히 일부만 구현하고 있고, 서버나 네트워킹 등 많이 빠진 기능이 많음
- 내가 개발팀이라면 서버와 네트워킹부터 구현을 시작할 것임, 나중에 추가하려고 하면 정말 어렵기 마련임
- 참신한 시도라 생각하고 행운을 빔, Roblox의 법무팀에게 공격받지 않길 바람, 리눅스 네이티브 클라이언트 쪽으로 좋은 활용도가 생길 수 있음. 현재 많이 쓰이는 Sober는 독점 소프트웨어이고, 예전에 쓰던 Vinegar는 리눅스 해커들 문제로 차단당함
- Roblox가 법적 조치를 시도할 수 있겠지만, 개인적으로 이 프로젝트는 명백히 합법적이라고 느껴짐. 합법성 기준에서 봤을 때 이건 VLC Media Player(특허 이슈)보다 더 높은 점수를 줄 수 있고, NES 에뮬레이터보다는 훨씬 높음. Android보단 낮다고 생각하지만, 어쨌든 Oracle이 Android를 소송한 적은 있음. (나는 변호사는 아님)
- Roblox 법무팀의 우선순위에서 보면 이런 프로젝트가 Roblox 내 아동 착취 문제보다 더 높은 처리 대상인 것 같다는 생각이 듦
- :WaitForChild()가 없다는 점이 언급되었는데, 오히려 좋은 점 아닌가 얘기함
- 사실 큰 문제는 아니고, 약간의 편의 기능임, busy waiting보다 나은 부분임. 어떤 오브젝트가 코드 실행 전엔 꼭 존재한다고 보장되지 않을 때가 많은데, 다음과 같이 유사한 동작을 직접 구현할 수 있음:
while not parentObj:FindFirstChild("childObj name") do wait() end
. 내가 알기로 wait() 함수는 프레임당 1/30초 이상임, 완전 즉각적으로 하려면 각 하트비트마다 실행해야 함
- 사실 큰 문제는 아니고, 약간의 편의 기능임, busy waiting보다 나은 부분임. 어떤 오브젝트가 코드 실행 전엔 꼭 존재한다고 보장되지 않을 때가 많은데, 다음과 같이 유사한 동작을 직접 구현할 수 있음:
- Roblox에 묶여 있는 엄청난 양의 유저 콘텐츠가 있음, 정말 많은 자원이 있음을 느낌
- 특히 Club류 콘텐츠는 반드시 해방시켜야 함
- 저장소(github)에서 개발자에 대한 정보를 아무리 찾아도 없음. 디스코드 서버마저도 채널에 아무것도 없고, 개발자 역할로 등록된 계정도 프로젝트 전용 단 한 개임. 소스코드엔 실제 작업이 이루어진 티가 나고 단순히 README만 있는 건 아님. 그래도 전체적으로 뭔가 괴상하다는 느낌임
- 혼자서 하는 원맨 프로젝트들이 원래 이런 식임
- 내가 호의적으로 해석하자면, 자기 신분을 숨기는 건 법적 문제를 두려워해서 그런 듯함. Roblox 자체가 810억 가치의 대기업임
- Robux를 쓸 수 없다면 개인적으로 별로 관심이 없음. 사실 문제의 핵심은 Robux(화폐 시스템)임, 엔진 그 자체는 그렇게 특별하지 않음
- 많은 개발자들이 ROBLOX에서 벗어나지 못하는 이유는 어릴 때부터 ROBLOX 툴을 익히고 숙련된 뒤, 그 기술이 대부분의 다른 게임 엔진에서 쓸 수 없는 틈새 스킬이 되어버린 것임. 이제 선택지는 Unity 같은 새로운 환경에서 초보로 다시 시작하거나, 예전처럼 ROBLOX 내부에서 계속 수준 높은 결과물을 내는 것밖에 없음. 각 커뮤니티에서 쌓아온 친구와 명성이 있기 때문임. 솔직히 API 호환 대체제가 이렇게 늦게 나왔다는 게 오히려 놀라움
- 개발자들이 자기 Roblox 게임을 독립형 게임으로 릴리즈하고, 플랫폼 락인을 탈출할 수 있는 기회일 수도 있음. 물론, 기존 유저들이 따라올지는 별개의 문제임
- 내가 Roblox를 좋아하진 않지만, Roblox 제작 도구의 완성도는 실제로 꽤 괜찮다고 들음
- 이 저장소는 꽤 멋지다고 생각함
- 이게 로컬에서 테스트 기능이나 QA 향상에 실질적으로 도움이 되는지 궁금함. 최근 react-lua 앱에서 jest 테스트 돌리려고 Lune에 Lemur(아카이브 됨)을 동작시키려고 했는데, in-game output을 출력하는 테스트 러너도 만들었었음. 문제는 Roblox Studio가 아직 Linux에서 vinegar 패키지로는 잘 안 돌아가서, 그냥
RobloxStudio.exe --place game.rbxlx --script test_runner.lua --keep-open
옵션으로 콘솔 출력만 계속 찍을 수 있으면 엄청 편했을 것임.- Lemur 저장소에 loadPlaceFile 추가하려다, 거기다 넣는 게 맞나 싶어서 멈췄는데, 이때 Librebox를 알게 되었고, 이제는 이걸로 react-lua 앱을 Jest로 로컬 CI 테스트하는 방향을 기대하게 됨
- 참고로 Roblox서 place 안에서 Luau 코드를 실행할 수 있는 Open Cloud Engine API 베타도 있음. [Beta] Open Cloud Engine API for Executing Luau
- 테스트를 로컬에서 돌리면 얻는 이점: 테스트 실패 시 스크린샷·비디오 기록, 즉각적인 피드백, -i 옵션이나 interactive로 실패 시 바로 게임 세션으로 진입 가능함