Lumos Engine
Lumos Engine은 Jonathan Morton과 기여자들이 개발한 크로스 플랫폼 2차원·3차원 게임 엔진이다. C++17을 기반으로 Vulkan과 OpenGL 렌더링, 엔티티 컴포넌트 시스템(ECS), 물리와 공간 오디오, Lua 스크립팅 및 편집기 사용자 인터페이스를 하나의 오...
| 분류 | 게임 엔진, 2D·3D 크로스 플랫폼 엔진 |
|---|---|
| 개발자 | Jonathan Morton 및 공개 기여자 |
| 구현 언어 | C++17 |
| 그래픽스 API | Vulkan, OpenGL(버전·백엔드별) |
| 장면·객체 | ECS, EnTT |
| 3D 렌더링 | 물리 기반 재질(PBR), 모델·텍스처·조명 |
| 2D 물리 | Box2D |
| 3D 충돌 | 큐보이드·구·피라미드 등 자체 형태 |
| 사운드 | OpenAL 기반 3차원 오디오 |
| 스크립팅 | Lua, sol2 바인딩 |
| 편집기 GUI | Dear ImGui, ImGuizmo |
| 자산 형식 | glTF 2.0, Wavefront OBJ 등 |
| 개발 도구 | Premake, 플랫폼별 IDE와 Makefile |
| 운영체제 | Windows, Linux, macOS |
| 기타 플랫폼 | iOS 및 Apple Silicon 빌드 설정 |
| 외부 라이브러리 | GLFW, GLM, volk, stb, EnTT 등 |
| 라이선스 | MIT License |
| 공식 소스 | jmorton06/Lumos |
| 빌드 안내 | Lumos README |
| Vulkan 도구 | LunarG Vulkan SDK |
Lumos Engine은 Jonathan Morton과 기여자들이 개발한 크로스 플랫폼 2차원·3차원 게임 엔진이다. C++17을 기반으로 Vulkan과 OpenGL 렌더링, 엔티티 컴포넌트 시스템(ECS), 물리와 공간 오디오, Lua 스크립팅 및 편집기 사용자 인터페이스를 하나의 오픈 소스 프로젝트에 통합했다. 개발자가 직접 엔진 구현을 수정하고 외부 라이브러리와 함께 실험하는 C++ 게임 엔진의 성격을 가지며, Windows·Linux·macOS에서 소스 빌드를 수행할 수 있다. 프로젝트는 MIT License로 공개된다.[1]
게임 객체와 실행 시스템의 구성에는 EnTT 라이브러리를 이용한 ECS가 활용된다. 개발자는 게임 세계에 엔티티를 생성하고 변환·렌더링·물리 관련 컴포넌트를 연결하며, 각 시스템이 관련 컴포넌트의 데이터를 갱신하도록 작성한다. 이 구성은 객체의 상속 구조보다 데이터와 처리 시스템의 분리를 중시한다. 자체적인 런타임 모듈과 장면 관리 및 자산 처리 구성은 여러 종류의 게임 요소를 결합하고 새 기능을 추가하는 데 필요한 공통 기반을 제공한다.[2]
렌더링 시스템에서는 Vulkan을 중심으로 3차원 모델과 셰이더, 물리 기반 재질 및 조명을 처리하며 소스 계열의 일부 구성은 OpenGL 렌더링도 지원한다. 모델 불러오기에는 tinygltf와 tinyobjloader, GPU 로더에는 volk 등을 활용한다. 이는 운영체제·GPU API에서 직접 제공하는 기능을 엔진의 내부 그래픽스 인터페이스로 감싸는 방식이다. 그래픽 효과와 확장 지원은 프로젝트 버전과 활성화한 렌더러에 따라 달라지므로 동일한 게임이 Vulkan과 OpenGL에서 무조건 완전하게 같은 기능을 제공한다고 가정해서는 안 된다.
물리·오디오와 스크립팅에서는 여러 기존 공개 라이브러리를 결합한다. 2차원 충돌과 강체 운동에는 Box2D를 사용하며 3차원 충돌에는 자체 구현한 기본 형상 검사 기능을 제공한다. 위치에 따라 들리는 소리를 다루는 오디오 처리에는 OpenAL을 활용하고, Lua 스크립트와 C++ 코드의 상호 운용에는 sol2 바인딩을 사용한다. 게임 개발자는 엔진의 네이티브 처리 루프와 게임 로직, 그래픽스·입력 및 오디오의 연결 관계를 수정·확장할 수 있다.[3]
편집과 디버깅 관련 도구는 Dear ImGui와 ImGuizmo를 사용해 엔티티의 속성을 검사하거나 3차원 객체의 위치·회전·크기를 화면에서 조정하는 기능을 제공한다. 빌드에는 Premake를 이용해 Windows용 Visual Studio 프로젝트와 Linux의 Makefile, macOS용 Xcode 프로젝트를 생성하도록 안내한다. macOS에서는 Apple Silicon용 아키텍처 선택과 iOS용 Xcode 빌드 설정도 설명한다. Vulkan SDK의 설치 등 필요한 종속성을 충족해야 하며 실제 빌드 가능성은 컴파일러·SDK와 소스 버전에 따라 달라진다.[4]
Lumos는 오픈 소스 게임 엔진의 하위 시스템을 기존 라이브러리와 직접 결합하는 구현 사례다. 물리와 오디오·모델 로딩·ECS·디버그 GUI를 외부 구성 요소에 맡기면서 엔진 자체의 게임 실행·렌더링 통합을 구축한다. MIT License로 소스를 활용할 수 있으나 별도의 종속 라이브러리와 자산은 각자의 라이선스를 따른다. 명칭이 비슷해도 Square Enix의 Luminous Engine 및 Mikuláš Florek의 Lumix Engine과는 다른 코드베이스이며 상호 기술 계보가 확인된 프로젝트가 아니다.[5]