avoxelgameの探索: APLで書かれた3Dボクセルエンジン
avoxelgameの探索: APLで書かれた3Dボクセルエンジン
avoxelgameプロジェクトは、APLの配列指向の記法が、ボクセルベースのゲームロジックやワールド生成を実装するためのより効率的な方法を提供するかどうかをテストするために開発された、実験的な3Dボクセルゲームエンジンです。Dyalog APL 20.0とSDL3を使用して構築されており、このプロジェクトは製品レベルのゲームではなく、技術的な概念実証として機能します。
技術アーキテクチャと依存関係
このエンジンは、APLの高レベルな配列処理とSDL3の低レベルなグラフィックス機能を組み合わせたハイブリッドアプローチを採用しています。システムが機能するには、Vulkan、DirectX12、またはMetalといったモダンなグラフィックスバックエンドが必要です。
コア要件
- Language Runtime: Dyalog APL 20.0
- Graphics Library:
sdl3_ttfおよびsdl3_imageを含むSDL3 - C-Interop: LSE (Language System Extension) コンポーネントをビルドするには、CコンパイラとCMakeが必要です。
- Hardware Acceleration: Vulkan、DirectX12、またはMetalのサポート。
プラットフォーム固有の実装
- macOS and 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を使用してさまざまな形式にコンパイルする必要があります。
現在の制限事項と既知の問題
開発者は、このプロジェクトが非常に実験的であり、いくつかの安定性の問題を含んでいることを認めています:
- Performance: Windows上では大幅なパフォーマンスの低下が見られます。
- Backend Support: DirectX12バックエンドは、現在Windowsではサポートされていません。
- Windows Stability: エンジンは、単一のセッション内で複数回再生を試みると
syserror 999が発生しやすく、メモリリークの存在を示唆しています。
コミュニティの視点
このプロジェクトを巡る議論では、APLの配列中心の性質とボクセルデータの構造との間のユニークな適合性が強調されています。
ボクセルワールドはAPLにとって非常に良いセールスポイントです。奇妙に見える部分は記法であって、モデルではありません。
他の観察者は、プロジェクトのドキュメントにおけるこのような正直さの珍しさを指摘し、著者がその能力を誇張することなく、この作品を「バグの多い情熱的なプロジェクト」と明示的にラベル付けしていることを称賛しています。