Thunder Engine Development
35 subscribers
19 photos
13 links
Записки разработчика игрового движка. Чат канала @thunderengine_chat
Download Telegram
Fixed:
Editor: "Local" property in particle editor is not saving #728
Editor: Add actor/component menu is not working in prefab #727
Editor: Areas on a Sprite are not saving #726
Editor: Infinite loading when import .wav file #725
2🔥1
ГОСПОДИ! Я сейчас поймал, наверное, самый странный баг, в своей жизни! Я убил добрых 2 часа на попытки понять, в чем же дело! В какой-то момент, у меня просто перестал загружаться один из плагинов редактора. Повторная сборка проекта с нуля не помогла. Откат на более старую версию кода тоже не помогал. Я проверил все зависимости библиотек. Проверил на срабатывания системы безопасности, которая могла блокировать загрузку. НИ-ЧЕ-ГО! Я уже начал сомневаться в своей адекватности и вере в человечество. И чисто, в приступе отчаяния, я убрал все Brake Point в дебагере. И оно ЗАРАБОТАЛО! Я не понимаю, как бряка роняла динамическую загрузку библиотеки! Но это факт!
😁4
Fixed:
Editor: Color constant is resetting in material editor #734
Editor: Deletion of Node in the MaterialEdit leads to crash #736
Audio: Sounds are not playing in the editor or in the game #738
Editor: Crash after relocating project assets #741
Editor: Project is not opening after creating new AngelBehaviour asset #744
Editor: Prefab window is not reopening after being closed #748
👏2
Выходные + понедельник выдались очень жаркими. Участвовал в составе команды в Ludum Dare гейм джеме. К сожалению, в последний момент, пришлось отказаться от использования собственного движка, из-за найденных проблем. Решили использовать Unity. Была проделана титаническая работа за эти 3 дня. Результат вы можете посмотреть тут.
5👍3
Целую неделю работал над рефакторингом того, как рисуются объекты в движке. Инстансинг был у меня и ранее, но он был не удобен в поддержке, того как уникальные данные передавались в шейдер. Мне известны 3 относительно честных способа передать эти данные. 1. Через вершинные атрибуты (так было раньше). 2. Через Uniform буфер. (ограничение на размер). 3. Через текстуру (Требует большое количество семплов, что может замедлить работу). В конечном итоге я пошел по пути Uniform буферов. Этот метод используется в том числе и крупными движками. Ограничения в UBO 65536 байт на буфер. Если использовать минимум параметров в шейдере этого хватит на 1024 объекта на 1 вызов отрисовки (это максимум). Если параметров у шейдера будет больше, то это количество снизится. (в будущем при использовании SSBO на тех платформах которые его поддерживают это ограничение можно существенно увеличить). Была проведена колоссальная работа по рефакторингу. Переделан подход того, как в целом рисуется объект. Генератор шейдеров так-же, в очередной раз, был доработан. Теперь стало намного понятней как организовать автоматический инстансинг в игре!
4👍1
После замечательного рефакторинга инстансинга в движке, наконец сложился пазл на счет поддержки автоматического инстансинга. Итак, сегодня я сделал первую версию поиска и группировки объектов, подходящих для объединения. Так-же вчера успел добавить поддержку SSBO буферов для десктоп платформ. В целом очень продуктивные выдались выходные!
👍6
Ох давненько я ничего сюда не писал. Все дело в том, что я последнее время занимался игровым проектом который мы вместе с ребятами продолжали делать после Людума. Времени на движок практически не оставалось. К сожалению в сутках слишком мало часов. Но вот я поехал в отпуск и решил позаниматься движком по грею брюхо. Купил себе макбук и наконец решил позаниматься его поддержкой.
3👍3
Оказалось, что Qt поддерживает Apple Silicon только с 6 версии. И я потратил кучу времени на поддержку этой версии библиотеки. Я планировал в будущем отказаться полностью от Qt, но на данный момент, это не представляется возможным. Слишком много на него сейчас завязано. В связи с этим, эта работа кажется немного бесполезной. Хотя, вероятно, полный отказ займет год, минимум. Так, что, возможно Qt еще поживет в каком-то виде. От чего я действительно избавлюсь в первую очередь, так это от QML. Ненавижу блять QML
🤔1😢1
Основная проблема с портом на мак, это уставшая версия OpenGL. Современных штук в ней нет и рендер просто не инициализируются. Поэтому я пошел с козырей, и решил замахнутся на Metal. Сейчас я только пытаюсь его инициализировать и показать особо нечего. По первому впечатлению, он показался мне немного дружелюбней чем Vulkan. Странно что metal-cpp прослойка отказалась собираться в Qt Creator но прекрасно собирается в Xcode связано это было с типом шаблона класса по умолчанию. не кушал его Шланг. Возможно какие-то возможно надо было опции активировать было. Но я решил в лоб проблему просто явно прописав тип в исходниках
Кстати, как-то совсем буднично, прошла очень важная точка развития проекта. На GitHub количество звезд у репозитория перевалило за 500. Если вы когда нибудь пробовали развивать OSS, вы наверняка оценили это маленькое достижение! Cледующая цель 1000 звездочек.
👍5🔥3💯2
Первые впечатления по Metal API. Вот уже с неделю в легком режиме изучаю этот RHI по вечерам. Готов поделится своими субьективными впечатлениями на его счет. В целом Metal хорош. Спасибо!
😁4👍1
Теперь конкретней. Разумеется он заточен под Swift однако у него есть официальная обертка для работы из cpp называется cpp-metal. Собрал я ее с дополнительными приседаниями. Но возможно это проблема компилятора или Qbs которую я использую для сборки проектов.
Порог входа субъективно у него ниже чем в OpenGL. И он существенно проще в использовании чем Vulkan. Я правда еще не завел рендер на нем. Но портирование продвигается неплохо.
Пока немного коробит язык шейдеров в нем. Вершинные атрибуты передаются на манер dx в аргументах к main функции. Так же Apple напихали любимых ими квадратных скобок в синтаксис. Еще показалась странной возможность настроить семплинг из кода шейдера. Не привычно и скорее всего не буду использовать. Код шейдеров написанных мной на glsl был транслирован через spirv cross. На сколько качественно еще предстоит выяснить.
👍1
Но в целом мне нравится ООП подход в Metal.
👍1
Вот и подоспел новый релиз. К сожалению успел далеко не все, что запланировал по фичам, однако новый релиз содержит множество исправлений
https://github.com/thunder-engine/thunder/releases/tag/2024.3
🔥3
Подготовил просто огромный PR посвященный рефакторингу системы анимации. а так-же пофиксил некоторые баги относящиеся к таймлайну. К сожалению таймлайн все еще очень далек от идеала. Но стал чуточку стабильней.
🔥3
После того как замержил рефакторинг системы анимации. Стало возможно замержить первую версию плагина, добавляющего импорт из Spine 2D! Базовый функционал Spine 2D теперь доступен всем =)
🔥2
Прошло практически 2 месяца с моего последнего сообщения. Много чего случилось за это время, хорошего и не очень. Сперва о хорошем. Мы провели первый фестиваль разработчиков игр в Нижнем Новгороде. Я выступал с лекцией "Виды шейдеров или как перестать бояться и полюбить свою GPU"
https://www.youtube.com/watch?v=Wg9jL-QtmFs&list=PLMrw8vPDDhsNIvbovnbOkaLi6hiWws4xZ&index=12&pp=iAQB

Полный набор лекций можно глянуть тут
https://www.youtube.com/playlist?list=PLMrw8vPDDhsNIvbovnbOkaLi6hiWws4xZ
3👍1
Познакомился лично и прогулялся по Нижнему в компании Виталия Казунова и Михаила Шкредова. Обсудили игровую индустрию и полюбовались нашим городом. Фоток с прогулки не будет, т.к. я совершенно забыл об этом =(
👍3
Теперь немного о грустном. Начиная с Апреля месяца мы занимались разработкой игры Toad-O-Mental на Юнити. Разработка началась на джеме Ludum Dare #55. B мы решили ее продолжить. Изначально мы планировали использовать Thunder Engine для разработки. Это было бы первое участие движка в мероприятии такого вида. Но перед стартом джема, обнаружилось большое количество проблем в редакторе и я понял, что не смогу одновременно исправлять проблемы с редактором и писать игру на нем в (джем шел 3 дня). По окончании джема, мы решили попробовать продолжить разработку и даже показывали игру на Geekcon Fest. Получили много обратной связи и, к сожалению, стало понятно, что мы не сможем предоставить более интересный опыт в рамках этой игры. Поэтому разработка игры как минимум заморожена, либо отменена совсем. Это был интересный опыт, пусть и не совсем удачный.
😢2