Thunder Engine Development
35 subscribers
19 photos
13 links
Записки разработчика игрового движка. Чат канала @thunderengine_chat
Download Telegram
После замечательного рефакторинга инстансинга в движке, наконец сложился пазл на счет поддержки автоматического инстансинга. Итак, сегодня я сделал первую версию поиска и группировки объектов, подходящих для объединения. Так-же вчера успел добавить поддержку 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
Что-же сейчас происходит с движком? Хороший вопрос. Изначально я хотел поработать над редактором эффектов. Увести его из QML для начала. Однако, такая переработка потянула за собой другие зависимости. Стало очевидно, что необходимо доработать редактор графов. Что-бы показывать UI элементы в самих нодах. Это очень полезное нововведение, которое пригодиться не только в эффектах, но и в других редакторах. В процессе этого рефакторинга выяснилось что у UIKit, который в движке отвечает за весь игровой UI, и который и использую для некоторых редакторов, есть различные проблемы связанные с позиционированием некоторых виджетов в иерархии других виджетов. Исправление найденных проблем заняло практически 2 недели. И теперь я практически закончил рефакторинг редактора графов! Следующая остановка это редактор эффектов.
🔥3👍1
Отличная новость. Я наконец получил возможность подписывать свои релизы благодаря SignPath и их программе для программного обеспечения с открытым исходным кодом. Осталось только разобраться как встроить его в свой CI
🔥4
Провел выходные за участием в Ludum Dare 56 на своем движке. Хакатон на данный момент еще не завершен. В месте с @tnnv_gamedev решили попробовать простенький проект в стиле Tower Defense. Он рисует, а я пишу код. В процессе работы над проектом, всплыло множество проблем. Некоторые удалось решить оперативно. А другие пополнили бэклог для решения в будущем. В целом, считаю опыт успешным. Такие мероприятия помогают взглянуть по новому на свой продукт. Я планирую закончить проект в любом случае, не зависимо от того уложимся мы или нет, и выложить его в свою библиотеку сэмплов.
2🔥2
Отличная новость. Я наконец прошел все проверки для возможности подписывать свои релизы. Теперь мой проект в ходит в список поддерживаемых компанией SignPath.
https://signpath.org/projects
🔥5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Итак, сегодня замечательный повод, подвести итог эксперименту, по написанию игры для Ludum Dare джема. Да да я знаю что он прошел 3 недели назад =) но я не торопился. Для меня важно было зафиксировать как можно больше найденных проблем. Теперь-же делюсь небольшим видео игрового процесса. Игра в стиле Tower Defense. В целом эксперимент считаю удачным. Такие активности позволяют взглянуть на движок совершенно с другого ракурса. И выявить проблемы и найти новые идеи для работы.
🔥6