Итоги 2022 года

Близится конец года, и это значит, что наступило время для традиционного подведения итогов. Год был во многом неприятный и депрессивный, однако даже в такие времена я стараюсь не бросать персональные проекты – развиваться необходимо всегда, пусть и маленькими шагами.

  • Вышли Dagon 0.13 и 0.14. В этих версиях были исправлены многие баги рендер-движка, улучшен загрузчик OBJ (добавлена поддержка квадов), произведен рефакторинг системы текстур, ускорена загрузка текстур через dlib. stb_image теперь опционален и используется как расширение dagon:stbi. Появилась поддержка формата сжатия ASTC. Изменены свойства материалов для достижения прямой совместимости с glTF. Появилась новая система текстурирования ландшафта. Добавлена поддержка радиального размытия. Удалено расширение dagon.ext.physics, так как теперь полноценно поддерживается физический движок Newton (расширение dagon.ext.newton). Добавлена экспериментальная интеграция UI-тулкита ImGui, а также поддержка валидации состояния OpenGL и более информативные отладочные сообщения.
  • Наконец-то выпустил dlib 1.0. В этой версии ускорена загрузка изображений, добавлена валидация при создании POSIX-потоков, улучшен модуль dlib.math.interpolation.hermite – добавлена функция вычисления производной для сплайна Эрмита. Исправлено несколько важных багов в математическом и геометрическом пакетах. Также вышло обновление dlib 1.1.0, в котором я добавил алгоритм обнаружения пересечения выпуклых тел MPR, а также исправил некоторые баги.
  • Я портировал игру DagoBan Матеуша Мушинского на актуальную версию Dagon. Этот клон Sokoban, написанный в качестве демонстрации возможностей тулкита Nuklear, является первой законченной игрой на основе Dagon.
  • Я написал три новые статьи на Medium: Almighty Alias, Metaprogramming with Alias Sequences, Game UI with Nuklear.
  • За этот год мне удалось собрать донатов на сумму $34.04 – они частично покрыли оплату хостинга и домена для сайта timurgafarov.ru. Огромное спасибо всем, кто перечислил деньги!

Ну и, конечно, не могу не назвать самые значимые для меня события в мире CG, СПО и геймдева:

  • Выход Unreal Engine 5 с очень впечатляющими фичами – особенно Lumen, технологией динамического глобального освещения. Но, каким бы крутым ни был UE, я не собираюсь отказываться от собственного движка)
  • Выход Newton 4, новой версии моего любимого физического движка. Жду теперь C API для создания привязки к D
  • Stable Diffusion – нейросеть, генерирующая изображения по текстовому описанию с пугающей реалистичностью.

10 лет на GitHub

В этом декабре исполняется ровно 10 лет с тех пор, как я зарегистрировался на GitHub! Хороший повод рассказать о своем опыте работы с платформой, порассуждать о системах контроля версий и, в целом, о том, как они повлияли на современное состояние IT.

(далее…)

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

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

10 лет блогу

Сегодня мой блог о разработке игр на языке D отмечает 10-летний юбилей! 30 сентября 2012 года я опубликовал первый пост, в котором поставил задачу написать 3D-игру на D с использованием OpenGL. С тех пор утекло много воды, я несколько раз переписывал заново свой движок, перешел с 32-битной на 64-битную архитектуру, сменил несколько операционных систем и версий OpenGL, но изначальная цель не поменялась.

В 2015 году блог привлек внимание русскоязычного филиала журнала PC Magazine, который проводил опрос, посвященный разработке игр: как устроены игры изнутри, как программируются серверы, как моделируется игровой мир, какие используются средства разработки. Материал по результатам опроса – в котором, в числе прочего, упоминается и мой движок – был опубликован на сайте журнала, но, к сожалению, теперь не доступен в связи с уходом PC Magazine из России. В 2019 году, спустя 7 лет со дня открытия блога https://dlanggamedev.blogspot.com, я переехал на коммерческий хостинг и личный WordPress. Администрирование собственного WP-сайта было для меня совершенно новым опытом, я изучил PHP и улучшил навыки верстальщика – однажды даже написал свой спам-фильтр для комментариев, но в этом оказалось мало смысла после перехода на reCAPTCHA v3.

За эти годы инди-геймдев, к сожалению, так и не стал для меня коммерчески выгодным занятием. Скажу прямо: работа над Electronvolt непомерно затянулась, и вряд ли ее выпуск как-то финансово оправдает вложенные усилия и время. Доход, который я получаю от всех моих хобби-проектов, основан на донатах через Patreon и PayPal. Но это не значит, что я разочарован – наоборот, в процессе я написал кучу полезного кода, который мне постоянно пригождается в других сферах деятельности. За эти 10 лет я глубоко погрузился в профессию графического разработчика и изучил множество технологий: в 2016 году даже рассматривал возможность стажировки в NVIDIA, но раздумал, так как не захотел переезжать в Москву. Позднее мне довелось четыре года проработать в цифровой рекламе в продакшн-компании SmartHead, где я сделал множество интерактивных баннеров и несколько рекламных игр. Самыми интересными проектами были игры “Привидения и котики” для Google и “Food Box Killer” для Ehrmann (вторая примечательна использованием движка Phaser 3), а также брендинг Forbes для BMW с анимацией на основе шейдерного эффекта WebGL. К сожалению, выложить эти проекты на сайт не могу из-за NDA, но вы можете их увидеть на сайте баннерного отдела SmartHead. Знания, которые я приобрел благодаря своему хобби, очень помогли в работе, и я даже как-то раз использовал D для одной специфической задачи – а именно, для написания генератора выпуклых оболочек для спрайтов под физический движок Matter.js.

Сегодня я занимаюсь, в основном, веб-разработкой и графическим дизайном на фрилансе. Много пишу на JS (браузерный код и Node.js), а D так и остался языком “для души”. Но, может, это и к лучшему – ведь должно же быть у человека чисто творческое занятие, в котором он полностью свободен и независим от чужих задач и потребностей: по образованию я художник, и к программированию отношусь как к отдельному виду искусства. На D легко и приятно писать, и я все еще считаю его лучшим из всех компилируемых языков – ни на минуту не пожалел, что вложил столько сил в код на нишевом языке с небольшим сообществом. Хотя часто жалею, что в сутках всего 24 часа – не успеваю отслеживать все интересные мне новые технологии. OpenCL, CUDA, Vulkan, WebGPU, аппаратная трассировка лучей – что-то прошло мимо меня, что-то я изучил лишь на самом базовом уровне. Но надеюсь, что смогу углубляться в эту сферу и дальше – и, конечно, вести блог еще 10 лет, минимум!

О звуковых движках

Что происходит со свободными звуковыми движками? Возвращаюсь к этой теме раз в несколько лет, и каждый раз ситуация все печальнее. Использовал когда-то Squall в эпоху Game Maker, он оказался заброшен с 2009 года. Потом долгое время сидел на OpenAL-soft, но у него тоже много лет не было обновлений (хотя в последние годы какое-то шевеление вроде началось). Ушел я с него по той причине, что захотелось движок с блэкджеком и шлюхами – то есть, со встроенной поддержкой всех аудиоформатов. Уже работая над Dagon, выбрал SoLoud, который активно разрабатывался до 2020 года, и с тех пор ни одного релиза.

Есть, конечно, движки для C++, в том числе довольно крутые – но, ребят, неужели делать API для C вышло из моды? В мое время это само собой разумелось. Не знаю теперь, что делать – не на закрытый FMOD же переходить. Возможно, форкну SoLoud, если так и не найду ему замены.