2P by GN⁺ 2일전 | ★ favorite | 댓글 1개
  • 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초 이상임, 완전 즉각적으로 하려면 각 하트비트마다 실행해야 함
  • 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로 실패 시 바로 게임 세션으로 진입 가능함