Обновления

bindbc-newton 0.3.2

Небольшой исправляющий релиз, который фиксит список путей к Newton под Linux.

https://github.com/gecko0307/bindbc-newton/releases/tag/v0.3.2

dlib2 компилируется под WASM

Поддержка Web Assembly в LDC существует достаточно давно, и я когда-то уже делал экспериментальный мини-проект – приложение с треугольником, рисующимся через OpenGL ES, которое можно скомпилировать как под десктоп, так и в WASM-модуль. Для этой работы пришлось написать минимальную замену стандартной библиотеке, поскольку поддержка WASM в Phobos чуть более, чем никакая. Надеюсь изменить эту ситуацию в dlib2 – dcore уже сейчас можно собрать под WASM!

Например, вот такой “Hello, World” на десктопе печатает в стандартный вывод, а в браузере – в консоль, причем с поддержкой UTF-8:

module main;

import dcore.stdio;

extern(C):

void main()
{
    // Minimal cross-platform betterC application.
    // Will print to stdout on desktop and to the console in browser.
    
    printf("Hello from D! Привет из D!\n");
}

В ближайшее время напишу пост по статусу dlib2 и всем деталям планируемых фич.

Багфиксы и улучшения в MiniGL

Актуализировал и чуть доработал MiniGL, мой программный растеризатор. Исправил альфа-смешивание, а также теперь можно отключить запись и чтение z-буфера для отрисовки экранных спрайтов. Обновил также демонстрационное приложение – теперь это почти готовый движок для коридорных ретро-шутеров: есть проверка столкновений со стенами, стрельба магией и спрайт оружия.

Dagon 0.18

Выпустил новую версию Dagon. В загрузчике OBJ наконец-то появилась поддержка групп – если в файле присутствуют группы, они будут доступны через свойство OBJAsset.groupMesh, так что вы можете использовать их в качестве отдельных мешей вместо единого OBJAsset.mesh. Также загрузчик теперь не падает на моделях с N-гонами, а выводит предупреждение, что они не поддерживаются.

Добавлен новый экстра-шейдер dagon.extra.starfieldsky – ночное небо со звездами. Он представляет собой улучшенную версию шейдера звездного неба из демки с планетой. Основное нововведение – поддержка мерцания звезд.

Слегка переделан NewtonCharacterComponent: появился новый параметр радиуса. Логика теперь следующая: контроллер персонажа, как и прежде, представлен двумя Newton-сферами, но их радиус теперь задается пользователем, а не вычисляется автоматически. Сферы располагаются сверху и снизу от барицентра на расстояниях, которые вычисляются исходя из радиуса и роста персонажа.

В dagon:iqm появились новые свойства для анимированных моделей: Actor.looping (зацикленность), Actor.state.finished (индикатор завершения текущей анимации). Исправлен баг с фейсгруппами при загрузке некоторых IQM.

Обновления

dlib 1.3.0

Вышла новая версия dlib. В библиотеке появился новый пакет dlib.math.random с реализацией генератора псевдослучайных чисел на основе C-функции rand. Проделан ряд улучшений в математическом пакете: добавлена поддержка компилятора GDC в модуль dlib.math.sse, появилась новая функция интерполяции bezierQuadratic.

Количество скачиваний dlib в реестре DUB достигло 1400 в месяц – рекордный показатель за все время существования проекта!

Подготовка к релизу Dagon 0.16

Новая версия Dagon планируется к выпуску совсем скоро – на днях внес ряд багфиксов и улучшений в физику Newton (в частности, исправлен прыжок контроллера персонажа на плоских поверхностях), а также добавил встроенную функцию создания скриншотов – Application.takeScreenshot.

Физика автомобиля

Демка с физикой автомобиля, которую я разработал в начале этого года для Patreon Sponsor Folder, теперь доступна на GitHub в репозитории https://github.com/gecko0307/vehicle-demo – с многочисленными улучшениями, которые я сделал за последние месяцы (в частности, появилась поддержка модели трения колес Pacejka Magic Formula). Пруф того, что на основе связки Dagon + Newton вполне можно написать гоночную игру. Как-нибудь, возможно, напишу подробную статью на эту тему.

Dagon 0.14.0

Выпустил новую версию движка. Основное нововведение – рефакторинг системы текстур: в частности, текстуры теперь могут быть загружены напрямую, без необходимости создавать объект SuperImage, что позволяет создавать текстуры любого формата, поддерживаемого OpenGL – таким образом, достигается лучшая совместимость с DDS. 2D-текстуры и кубические карты объединены в один класс Texture, и работать с ними стало проще. Появилась поддержка формата сжатия ASTC.

(далее…)