Долго не писал, кода тоже появилось за это время немного:
пользовательский ввод был разделен на 2 режима - режим взаимодействия с юнитами (команды) и режим взаимодействия с картой (навигация, масштабирование);
сделано тестовое назначение поля видимости для юнита, управляемого игроком;
сделано корректное определение направления для спрайта (8 направлений) по абсолютному вектору движения;
Первая стабильная версия редактора спрайтов. Пока не умеет сохранять / загружать состояние, но основной функционал по визуальной настройке последовательностей кадров для разных действий есть.
Пока думал, как аналитически решить проблему с ошибками в рендере поля видимости юнита, переписал его практически с нуля. Кода стало раза в 3 меньше и большая часть работы была переложена на графическую подсистему. Рендер поля происходит в 2 прохода: рендер объектов-препятствий и рендер обычного треугольника видимости. Был создан шейдер для первого прохода (разрешена запись в Z-буфер и запрещена в Color) и настроен порядок рендера материалов, использующих данные шейдеры.
Очередное обновление: сохранение / загрузка карты зонирования как в режиме редактора, так и игры. Обнаружился небольшой баг в отрисовке зоны видимости - буду править позднее.