고도 게임 엔진에서 C++ 라이브러리 사용하기

고도(Godot)는 누구나 무료로 쓸 수 있는 오픈소스 게임 제작 프로그램입니다. 주로 고도 자체의 프로그래밍 언어인 지디스크립트(GDScript)를 사용해 게임 속 행동을 만듭니다. 하지만 시뮬레이션이나 데이터베이스처럼 씨언어(C)나 씨플러스플러스(C++)로 이미 만들어진 복잡한 도구를 함께 쓰고 싶어질 때가 있습니다. 고도에는 시플러스플러스로 만든 외부 프로그램을 고도 안에서 일반 부품처럼 쓸 수 있게 해주는 기능이 있습니다. 또한 공식 도구를 이용하면 시플러스플러스 코드를 고도 엔진의 기본 부품 형태로 변환할 수 있습니다. 글쓴이는 10만 개의 입자가 마우스 커서를 피해 움직이는 시뮬레이션을 예시로 들어 복잡한 외부 도구를 고도 게임에 연결하는 과정을 설명합니다.

기존에는 고도 엔진에서 시플러스플러스 확장 기능을 쓰려면 개발자가 직접 필요한 도구들의 버전을 까다롭게 맞추고, 게임을 내보낼 운영체제마다 일일이 복잡하고 번거로운 빌드 과정을 거쳐야 했습니다. 오픈소스 패키지 관리 도구인 코난(Conan)을 활용하면 이러한 버전 관리와 빌드 과정을 자동으로 처리할 수 있습니다. 개발자가 각 환경에 맞는 파일을 수동으로 관리하던 기존의 번거로운 방식에서 벗어나, 설정 변경만으로 다양한 운영체제에 쉽게 대응할 수 있다는 점이 다릅니다.

고도는 2차원과 3차원 게임을 만들 수 있는 프로그램이며, 모든 요소를 노드와 장면이라는 단위로 다룹니다. 고도 엔진 자체도 시플러스플러스로 만들어져 있어서, 엔진을 다시 컴파일하지 않고도 시플러스플러스로 작성된 확장 프로그램을 불러올 수 있습니다. 버전 10.0부터는 하나의 배포판만으로도 4.3 버전 이후의 모든 고도 엔진 버전과 함께 사용할 수 있으며, 개발자는 설정에서 필요한 버전을 선택할 수 있습니다. 고도가 어떤 라이브러리를 불러올지는 설정 파일 속 규칙에 따라 결정됩니다. 원래는 프로젝트에 도구를 직접 추가하고 조립해야 해서 플랫폼마다 다시 빌드해야 하는 번거로움이 있었습니다. 하지만 코난 저장소에 관련 도구가 등록되면서 이러한 문제가 해결되었습니다. 코난 설정에서 원하는 옵션을 선택하면, 각각의 조합이 단 한 번만 빌드된 뒤 해당 기능이 필요한 모든 프로젝트에서 다시 사용됩니다. 예시로 사용된 엑스(flecs)라는 라이브러리는 수많은 대상을 빠르게 처리해야 하는 작업에 적합하며, 고도 화면 안에서 10만 개의 입자가 마우스 커서를 피해 도망치는 시뮬레이션을 구현하는 데 쓰입니다. 설정 파일과 코드 작성 과정을 거쳐 명령어 창에 간단한 명령어를 입력하면 컴퓨터가 필요한 파일을 모아 확장 프로그램 빌드를 성공적으로 마치고 결과물을 완성합니다. 완성된 프로젝트를 고도 4.7 버전에서 불러오면 새로운 기능이 기본 부품처럼 준비되며, 속성 창에서 개수나 도망치는 범위를 조절하여 움직임을 관찰할 수 있습니다.

게임을 직접 개발하는 분들이라면, 고도 엔진의 기본 언어만으로는 처리하기 버거울 정도로 많은 객체를 움직이거나 복잡한 연산이 필요한 시뮬레이션을 구현할 때 이 방식을 유용하게 참고할 수 있습니다. 화면에 10만 개의 입자를 동시에 띄우고 실시간 연산을 수행해야 하는 상황에서 외부 라이브러리를 연동하면 성능을 크게 높일 수 있습니다. 다만 이 기술은 시플러스플러스 프로그래밍과 빌드 도구에 대한 기본적인 이해를 전제로 하므로 초보자에게는 진입 장벽이 다소 높을 수 있습니다. 운영체제나 설정 조건을 정확히 맞추지 않으면 빌드 과정에서 오류가 발생할 수 있으며, 실제 배포 시 각 운영체제 환경에 맞춰 세부 설정을 주의 깊게 다뤄야 하는 점은 여전히 남아 있습니다.