G3N

G3N은 Go로 작성된 오픈 소스 3차원 게임 엔진 및 그래픽스 프레임워크다. 게임뿐 아니라 시뮬레이션과 인터랙티브 3D 시각화에 사용할 수 있으며, 실시간 렌더링·장면 그래프·입력·공간 오디오 및 GUI를 라이브러리 형태로 제공한다. 통합된 대형 시각적 레벨 편집기를 기본 작업 환경으...

분류게임 엔진, 3차원 렌더링 프레임워크
구현 언어Go
그래픽스OpenGL
창과 입력GLFW 기반 애플리케이션
공간 오디오OpenAL
주요 구조계층형 장면 그래프·메시·재질·카메라
주요 자산 형식glTF, OBJ, COLLADA
주요 대상Windows, Linux, macOS
제작 방식Go 소스 코드와 라이브러리 직접 결합
라이선스BSD 2-Clause
공식 프로젝트g3n/engine
예제 저장소g3n/demos

G3N은 Go로 작성된 오픈 소스 3차원 게임 엔진 및 그래픽스 프레임워크다. 게임뿐 아니라 시뮬레이션과 인터랙티브 3D 시각화에 사용할 수 있으며, 실시간 렌더링·장면 그래프·입력·공간 오디오 및 GUI를 라이브러리 형태로 제공한다. 통합된 대형 시각적 레벨 편집기를 기본 작업 환경으로 요구하기보다 개발자가 Go 코드로 공간과 객체, 게임 실행 흐름을 구성하는 방식이다.[1]

G3N은 OpenGL 렌더링을 이용하며 장면을 계층형 노드로 표현한다. 노드에 자식 노드를 연결하면 위치·회전 등의 변환을 상속받도록 구성할 수 있고, 메시와 재질, 카메라와 조명을 장면 그래프에 추가해 3차원 세계를 정의한다. 주변광·방향광·점광원·스포트라이트 등 광원 유형과 물리 기반 재질 계산을 제공하며 원근 투영과 직교 투영 카메라를 사용할 수 있다.

모델·자산 처리에는 glTF·OBJ·COLLADA 등의 가져오기 기능과 기본 도형 생성 도구가 포함된다. 텍스트 렌더링과 GUI 위젯, 애니메이션 스프라이트, 스켈레탈 애니메이션·모프 타깃 등의 표현을 결합할 수 있다. OpenAL은 3차원 공간 안에서 소리가 발생하는 위치를 고려한 오디오 재생에 사용한다. 사용자 입력과 GUI 이벤트를 구독하고 콜백에서 응용 프로그램 상태를 변경할 수 있도록 한다.[2]

예제 코드에서는 창과 OpenGL 컨텍스트를 초기화하고 장면·카메라·메시를 생성한 다음 실행 루프의 각 프레임에서 화면을 지우고 장면을 렌더링한다. 렌더링과 별개로 개발자가 게임 규칙과 물리 계산, 객체 상태를 직접 조합할 수 있어 개별 라이브러리를 통해 프로젝트의 동작을 확장한다. 이러한 설계는 강제적인 게임 객체 모델보다 일반적인 3D 프로그래밍의 유연성을 제공한다.

프로젝트는 Windows·Linux·macOS를 대상으로 소개되며 Go·C 컴파일러·OpenGL 드라이버와 오디오 라이브러리 등의 의존성을 사용한다. 공식 README에서 WebAssembly는 완성된 기본 지원 플랫폼이 아닌 개발 중 기능으로 설명한다. 따라서 웹용 빌드 여부는 특정 버전과 이식 진행 상태를 구별해야 한다. G3N의 엔진 및 독립 예제는 BSD 2-Clause 라이선스로 공개돼 있다.[3]

역사

개발 목적과 주요 버전

아키텍처와 실행 모델

객체·장면·월드

프로그래밍과 스크립팅

렌더링과 그래픽스

입력·오디오·물리

애니메이션 및 사용자 인터페이스

자산·제작 도구

지원 운영체제와 배포

라이선스와 소스 공개

활용 사례 및 영향

관련 문서

  1. G3N 공식 소개 ↩
  2. G3N 지원 기능과 예제 ↩
  3. G3N 설치·플랫폼·라이선스 ↩