← На главную

Строчка кода на Dyalog APL ускорила воксельную игру

11.05.2026 10:38 · hackernews

Автор делится историей о одной строке кода на языке Dyalog APL, которая за 7 месяцев разработки стала сердцем его воксельной игры. Это решение определяет, какие грани кубов видны для рендеринга, проверяя массивы блоков без лишних операций. Алгоритм использует вектор 0 1 2 для смещения трехмерной матрицы состояния блоков в трех измерениях, а затем сравнивает результаты со статичным массивом. Такая техника, вдохновленная знаменитой «одной строкой» игры «Жизнь», позволяет компактно описать логику, которую в других языках заняли бы десятки строк. Изначально код генерировал много невидимых граней на краях карты, что засоряло геометрию. После того как автор добавил паддинг нулями и изменил логику отсечения переполненных данных, производительность скакнула. Потребление видеопамяти упало с 261 до 72 мегабайта, а количество вертиней сократилось в пять раз — с 31,4 до 6,2 миллиона. Время рендеринга на MacBook с отрисовкой на расстоянии 12 блоков снизилось с 11,2 до 2,14 миллисекунды, обеспечив более 60 FPS. Несмотря на то, что код кажется сложным и неудобным на первый взгляд, его удается держать в голове целиком, что подтверждает преимущества декларативной природы APL. Автор отметил, что интерпретируемая природа языка и способность массово манипулировать матрицами работают лучше, чем казалось интуитивно. Теперь он готов распрощаться с этой строкой, так как продолжает учиться и адаптировать код под новые требования, сохраняя при этом чувство ностальгии по этой уникальной инженерной находке.

Читать оригинал →