Polycode

Polycode는 Ivan Safrin이 개발한 C++ 기반의 자유·오픈 소스 2차원·3차원 게임 엔진이자 창작용 멀티미디어 프레임워크다. 사용자는 네이티브 C++ API로 게임과 실시간 그래픽스 프로그램을 작성하거나, 같은 기능을 Lua 스크립트와 도구를 이용해 구현할 수 있다. 화면...

분류게임 엔진, 2D·3D 크로스 플랫폼 멀티미디어 프레임워크
개발자Ivan Safrin
구현 언어C++
게임 스크립팅Lua
주요 모델Scene, Entity, Camera 및 UI 컨트롤
렌더링GPU 가속 2D·3D 및 셰이더
플랫폼Windows, Linux, macOS
엔진 구성네이티브 C++ API와 Lua 런타임
편집기Polycode IDE와 도구
게임 기능오디오, 입력·이벤트·네트워크, 물리 라이브러리 연동
자산이미지·모델·글꼴, 사운드·장면 리소스
대표 배포 버전0.8.4 (2015년)
라이선스MIT License
공식 소스ivansafrin/Polycode
설치 안내Polycode BUILD.md

Polycode는 Ivan Safrin이 개발한 C++ 기반의 자유·오픈 소스 2차원·3차원 게임 엔진이자 창작용 멀티미디어 프레임워크다. 사용자는 네이티브 C++ API로 게임과 실시간 그래픽스 프로그램을 작성하거나, 같은 기능을 Lua 스크립트와 도구를 이용해 구현할 수 있다. 화면에 2D·3D 객체와 셰이더·오디오를 표시하고 입력·이벤트·네트워크 기능을 연결하는 공통 API를 제공하며 게임뿐 아니라 대화형 예술·시각화 콘텐츠 제작에도 사용된다.[1]

핵심 엔진은 C++로 작성된 장면과 엔티티, 그래픽스·오디오·입력 계층으로 구성된다. Lua 기반 스크립팅 인터페이스는 엔진의 많은 기능을 외부 언어에 노출하므로 프로그램을 작성할 때 C++ 바이너리를 매번 다시 빌드할 필요를 줄인다. 네이티브 실행 프로그램과 Lua 기반 프로젝트는 실행 환경과 패키징 방식이 다르지만 공통 엔진 API를 사용하도록 설계됐다.

2D·3D 장면의 렌더링에는 카메라·모델·재질·텍스처, GUI 객체와 애니메이션·셰이더를 이용한다. 프로그램은 Scene에 여러 객체를 배치하고 각자의 변환과 화면 표시 상태를 갱신한다. 플랫폼별 화면 출력은 그래픽스 백엔드에서 처리하며, 텍스처와 모델·사운드 같은 자산은 공통 파일·리소스 관리 기능으로 연결된다.[2]

소스 트리에는 Core, Modules, Player, IDE, Bindings, Tools와 Examples 디렉터리가 있다. 이는 엔진 라이브러리와 별도 모듈, 실행 플레이어와 게임 편집기, 언어 바인딩·제작 도구 및 예제를 분리하는 설계다. 프로젝트의 빌드 안내는 CMake와 플랫폼별 도구를 사용하도록 하며, OS별 의존성과 라이브러리 버전을 정확하게 맞추는 것이 필요하다.

공개 프로젝트는 Windows·Linux·macOS 지원을 설명하고 있으며, 공식 GitHub의 0.8.4 릴리스는 2015년 5월 공개됐다. 오래된 버전의 자료와 현재의 C++ 컴파일러·운영체제 SDK 사이에는 API 변화가 있을 수 있으므로 직접 빌드할 경우 역사적 도구 체인을 검토해야 한다. 이 프로젝트는 하나의 통합 편집기만으로 제작하는 도구보다 다양한 프로그래밍 방식과 오픈 소스 코드 수정에 초점을 맞춘다.

Polycode 소스는 MIT License로 공개된다. 게임과 인터랙티브 프로젝트에 자유롭게 사용할 수 있지만 외부 오디오·물리·폰트 라이브러리 및 개별 콘텐츠에는 별도 라이선스가 적용될 수 있다. 게임 개발과 창작 코딩을 동시에 지원하는 C++ 네이티브 프레임워크에 Lua 개발 환경과 편집 도구를 결합한 역사적 사례다.[3]

역사

기술 계보와 설계 목표

엔진 아키텍처

실행 루프·객체와 이벤트

프로그래밍·스크립팅

렌더링과 그래픽스

물리·애니메이션·입력

오디오·네트워크

자산 및 제작 도구

지원 플랫폼과 배포

라이선스·소스 공개

주요 게임 및 기술적 영향

관련 문서

  1. Polycode 공식 소스 저장소 ↩
  2. Polycode 공식 README: 그래픽스·멀티미디어 기능 ↩
  3. Polycode 라이선스 ↩