avoxelgame 탐구: APL로 작성된 3D 복셀 엔진

avoxelgame 탐구: APL로 작성된 3D 복셀 엔진

avoxelgame 프로젝트는 APL의 배열 지향 표기법이 복셀 기반 게임 로직 및 월드 생성 구현을 보다 효율적으로 할 수 있는지를 테스트하기 위해 개발된 실험적인 3D 복셀 게임 엔진입니다. Dyalog APL 20.0과 SDL3를 사용해 구축된 이 프로젝트는 생산 준비가 된 게임이라기보다 기술적 개념 증명에 가깝습니다.

기술 아키텍처 및 의존성

엔진은 APL의 고수준 배열 처리와 SDL3의 저수준 그래픽 기능을 결합한 하이브리드 접근 방식을 사용합니다. 시스템은 작동을 위해 최신 그래픽 백엔드(Vulkan, DirectX12 또는 Metal)가 필요합니다.

핵심 요구 사항

  • 언어 런타임: Dyalog APL 20.0
  • 그래픽 라이브러리: SDL3, sdl3_ttfsdl3_image 포함
  • C-Interop: LSE(언어 시스템 확장) 구성 요소를 빌드하려면 C 컴파일러와 CMake가 필요합니다.
  • 하드웨어 가속: Vulkan, DirectX12 또는 Metal 지원

플랫폼별 구현

  • macOS 및 Linux: 엔진은 main.apls의 shebang을 통해 배포되며, CMake를 사용해 libLSE.dylib(macOS) 또는 libLSE.so(Linux)를 수동으로 컴파일 및 설치해야 합니다.
  • Windows: 엔진은 ]link.createstate.Play 명령을 이용해 Dyalog 세션에서 실행됩니다. Windows 사용자는 SDL3 개발 라이브러리와 ./libs 디렉터리의 제공된 .dll 파일을 사용해야 합니다.

셰이더 파이프라인 및 렌더링

프로젝트는 셰이더 개발에 GLSL을 사용합니다. 소스 셰이더는 ./shaders/glsl에 위치하며, ./compile_shaders.sh 스크립트를 통해 DirectX Shader Compiler, glslc, spirv-cross를 이용해 다양한 포맷으로 컴파일해야 합니다.

현재 제한 사항 및 알려진 문제

개발자는 이 프로젝트가 매우 실험적이며 여러 안정성 문제가 있음을 인정합니다:

  • 성능: Windows에서 상당한 성능 저하가 발생합니다.
  • 백엔드 지원: DirectX12 백엔드는 현재 Windows에서 지원되지 않습니다.
  • Windows 안정성: 단일 세션 내에서 여러 번 플레이하려 할 때 syserror 999가 발생하는데, 이는 메모리 누수가 존재함을 시사합니다.

커뮤니티 관점

프로젝트에 대한 논의는 APL의 배열 중심 특성과 복셀 데이터 구조 사이의 독특한 적합성을 강조합니다.

복셀 세계는 APL에 대한 꽤 좋은 판매 포인트다: 이상하게 보이는 부분은 모델이 아니라 표기법이다.

다른 관찰자들은 프로젝트 문서에서 이런 솔직함이 드물다고 언급하며, 저자가 작업을 "버그가 많은 열정 프로젝트"라고 명시적으로 라벨링한 점을 칭찬했습니다.

요약: avoxelgame 프로젝트는 Dyalog APL과 SDL3를 사용해 3D 복셀 게임 엔진을 실험적으로 구현함으로써, APL의 배열 표기법이 복셀 기반 월드 구축을 단순화한다는 가설을 테스트합니다.

제목: avoxelgame 탐구: APL로 작성된 3D 복셀 엔진

Sources