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_ttf및sdl3_image포함 - C-Interop: LSE(언어 시스템 확장) 구성 요소를 빌드하려면 C 컴파일러와 CMake가 필요합니다.
- 하드웨어 가속: Vulkan, DirectX12 또는 Metal 지원
플랫폼별 구현
- macOS 및 Linux: 엔진은
main.apls의 shebang을 통해 배포되며, CMake를 사용해libLSE.dylib(macOS) 또는libLSE.so(Linux)를 수동으로 컴파일 및 설치해야 합니다. - Windows: 엔진은
]link.create와state.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 복셀 엔진