Сферы

Обновление физического движка. Реализованы сферы (полностью поддерживается проверка столкновений сфера-сфера и бокс-сфера), проделаны многочисленные улучшения архитектуры, кодовая база нового движка максимально приближена по интерфейсу к старой.

Сборка для Windows (1,66 МБ)
Cборка для Linux (2,46 МБ)
Исходники (2,7 МБ).

Обновление физики

Доступна новая сборка демонстрации физического движка. Были исправлены кое-какие мелочи, улучшена точность солвера, сведен к пренебрежимому минимуму джиттеринг (дрожание покоящихся тел). Каркасное отображение тел заменено сплошным.

atrium-physics2-testbuild2-win32.zip (1,57 МБ).

Новый физический движок

Началась разработка нового физического движка для Atrium. Реализован новый солвер контактов. Планируется поддержка всех стандартных геометрических тел (сфера, бокс, цилиндр, капсула), а также разных типов сочленений. Доступна тестовая сборка*, иллюстрирующая динамику боксов:

atrium-physics2-testbuild1-win32.zip (1,56 МБ).

* – В главном меню приложения выберите “Sandbox”.

Фигуры Лиссажу для анимации оружия

Оружие в шутерах от первого лица не должно быть прибито к камере гвоздями – оно раскачивается в такт ходьбе, да и при стоянии на месте медленно ходит туда-сюда из-за постоянного движения рук. Конечно, довольно трудно сымитировать этот эффект в полном соответствии с реальностью, но можно обойтись дешевым и убедительным фейком. Оружие можно двигать вдоль кривой Лиссажу: x = sin(t), y = cos(2t). В результате получается траектория, изображенная на рисунке справа.

Vector2f lissajousCurve(float t)
{
    return Vector2f(sin(t), cos(2 * t));
}

//...

if (playerWalking)
    t += 10.0f * delta;
else
    t += 1.0f * delta;
    
if (t > 2 * PI)
    t = 0.0f;
    
Vector2f p = lissajousCurve(t) / 10.0f;
weapon.localPos = Vector3f(p.x, p.y, 0.0f);

Меню в Atrium

Состоялось довольно значительное обновление кодовой базы Atrium. В частности, было реализовано главное меню и меню паузы. Кроме того, репозиторий был синхронизирован с последней ревизией dlib.

Доступны свежие сборки:
Для Windows (1,74 МБ)
Для Linux (2,76 МБ).

Исходники проекта доступны на GitHub.