NickelEngine

NickelEngine은 개발자 VisualGMQ가 제작하는 C++ 기반의 오픈 소스 게임 엔진 프로젝트다. 데이터와 실행 로직을 분리하는 엔티티 컴포넌트 시스템(ECS)을 중심에 두고 그래픽스·반영(reflection)·장면 편집기 등을 자체 구성하려는 연구·개발 성격의 엔진이다. 2...

분류게임 엔진, 데이터 중심 ECS 기반 엔진
개발자VisualGMQ
개발 형태개인 개발·공개 소스 연구 프로젝트
개발 언어C++17 중심
기반 개념ECS
구형 ECS 참고EnTT
신규 ECS 설계 목표Archetype 기반 모델(Flecs 참고)
그래픽스 구형 구성Vulkan, OpenGL·OpenGL ES
그래픽스 재설계Vulkan 중심 전환 계획
초기 편집기Dear ImGui 기반
새 편집기 목표Qt 6
반영 시스템C++ 헤더 기반 코드 생성·정적·동적 반영 연구
빌드 도구CMake, Python 코드 생성기
개발 플랫폼PC 개발 중심, Android 프로젝트 파일 포함
개발 현황엔진 전면 재작성 진행
초기 코드NickelEngine-backup에 보존
공개 라이선스MIT License
소스 코드VisualGMQ/NickelEngine
개발자 소개VisualGMQ 프로젝트 목록
기술 시연NickelEngine 소개 영상

NickelEngine은 개발자 VisualGMQ가 제작하는 C++ 기반의 오픈 소스 게임 엔진 프로젝트다. 데이터와 실행 로직을 분리하는 엔티티 컴포넌트 시스템(ECS)을 중심에 두고 그래픽스·반영(reflection)·장면 편집기 등을 자체 구성하려는 연구·개발 성격의 엔진이다. 2024년에는 초기 엔진을 소개하는 시연 영상이 공개됐고, 이후 기존 구현을 보관하면서 기본 시스템을 재작성하는 작업으로 방향을 전환했다. 현재의 저장소는 상용 범용 엔진의 안정판이라기보다 차세대 구조를 구축하는 개발 중 코드베이스다.[1]

원래 NickelEngine은 C++17과 ECS 프레임워크를 중심으로 구성됐으며 개발자는 EnTT와 Bevy 등의 데이터 중심 설계에서 아이디어를 얻은 별도 ECS·반영 기능을 제작해 왔다. 기존 ECS에는 EnTT를 참고한 부분이 있고, 개발자는 새 버전에서 Flecs와 유사한 Archetype 기반의 ECS를 구현하고 싶다고 설명한다. 엔티티에 연결된 컴포넌트의 조합에 따라 자료를 그룹화하면 동일한 구성 요소를 사용하는 많은 객체를 효율적으로 처리할 수 있다. 다만 이 자료 배치는 재작성 목표이므로 구버전과 새 버전 모두에서 완성된 동일 API로 제공된다고 단정할 수 없다.[2]

그래픽스 분야에서도 세대별 변화를 구별해야 한다. 과거 엔진은 Vulkan과 OpenGL·OpenGL ES 경로가 공존하는 구조였지만 새 버전에서는 Vulkan에 집중할 계획이라고 개발자가 밝혔다. 이 전환은 하나의 렌더러에서 여러 API를 항상 지원한다는 방식과 다르며, 셰이더·자원 관리·GPU 명령 제출과 렌더링 도구를 새 구조에 맞춰 재구현하는 것을 뜻한다. 대상 게임이나 그래픽스 데모의 기능과 실제 플랫폼 호환성은 각 시기의 소스 및 지원 백엔드를 기준으로 판단해야 한다.

자체 반영 시스템과 코드 생성 도구도 엔진의 중요한 연구 영역이다. 구형 구현에는 C++ 객체의 속성과 타입을 편집기 및 직렬화 시스템에 노출하는 반영 기능이 존재했고, 새 설계에서는 헤더 파일을 해석하는 Python 기반 코드 생성기를 개선하려고 한다. 반영 자료는 게임 객체를 자동으로 저장하거나 편집기 속성 패널에 표시하는 데 활용할 수 있다. 저장소는 해당 도구의 Python 의존성을 설치하고 CMake 프리셋으로 엔진을 컴파일하는 절차를 안내한다.[3]

편집기와 개발 도구의 재구성도 진행된다. 원래 버전의 사용자 인터페이스는 Dear ImGui로 구현했으며 새 버전에서는 Qt 6 기반 편집기를 계획하고 있다. 동시에 외부 라이브러리의 서브모듈 의존성을 줄이고 작은 라이브러리 소스를 프로젝트에 통합해 빌드 재현성을 높이는 방향을 선택했다. 개발자는 기능 변경과 버그 수정에 이슈 번호를 연결하고 CI를 통해 기본 브랜치가 컴파일 가능한 상태로 유지되도록 하는 개발 절차를 소개한다. 이는 렌더링 성능뿐 아니라 엔진 코드베이스의 유지보수성과 개발 경험을 중시하는 변화다.[4]

저장소에는 C++ 코드·CMake 설정과 Android 관련 프로젝트가 포함되어 있지만, 목록에 존재하는 플랫폼 파일이 곧 모든 기능의 안정된 배포 지원을 뜻하지는 않는다. 엔진은 MIT License로 공개되며 원본 저장소의 LICENSE 파일과 소스·도구를 이용할 수 있다. 구버전이 별도 보존 저장소로 옮겨졌다는 사실은 프로젝트 자체가 다른 기업의 새로운 엔진으로 변경됐다는 의미가 아니라 같은 개발자의 코드 재구성에 해당한다. NickelEngine은 ECS와 반영, Vulkan 중심 렌더링, 편집기 개발을 함께 실험하는 공개 C++ 게임 엔진의 사례다.[5]

역사

기술 계보와 개발 목적

엔진 아키텍처

실행 모델과 게임 객체

프로그래밍·스크립팅

렌더링과 그래픽스

물리·애니메이션 및 AI

입력·오디오·네트워크

자산 파이프라인과 편집기

플랫폼 지원과 빌드

라이선스와 소스 공개

주요 활용 및 기술적 영향

관련 문서

  1. VisualGMQ: NickelEngine 공식 저장소 ↩
  2. NickelEngine README: 새로운 ECS 설계 ↩
  3. NickelEngine: 빌드와 코드 생성기 ↩
  4. NickelEngine: 재작성과 개발 절차 ↩
  5. NickelEngine 공개 소스 및 라이선스 ↩