Первые впечатления по Metal API. Вот уже с неделю в легком режиме изучаю этот RHI по вечерам. Готов поделится своими субьективными впечатлениями на его счет. В целом Metal хорош. Спасибо!
😁4👍1
Теперь конкретней. Разумеется он заточен под Swift однако у него есть официальная обертка для работы из cpp называется cpp-metal. Собрал я ее с дополнительными приседаниями. Но возможно это проблема компилятора или Qbs которую я использую для сборки проектов.
Порог входа субъективно у него ниже чем в OpenGL. И он существенно проще в использовании чем Vulkan. Я правда еще не завел рендер на нем. Но портирование продвигается неплохо.
Пока немного коробит язык шейдеров в нем. Вершинные атрибуты передаются на манер dx в аргументах к main функции. Так же Apple напихали любимых ими квадратных скобок в синтаксис. Еще показалась странной возможность настроить семплинг из кода шейдера. Не привычно и скорее всего не буду использовать. Код шейдеров написанных мной на glsl был транслирован через spirv cross. На сколько качественно еще предстоит выяснить.
👍1
Вот и подоспел новый релиз. К сожалению успел далеко не все, что запланировал по фичам, однако новый релиз содержит множество исправлений
https://github.com/thunder-engine/thunder/releases/tag/2024.3
https://github.com/thunder-engine/thunder/releases/tag/2024.3
GitHub
Release Release 2024.3 · thunder-engine/thunder
Features
Render: Geometry shaders #722 (#723)
Render: Instancing manager #194 (#759)
Render: SSBO as instancing data source on desktop platforms #758 (#757)
Refactoring
Core: Byte array type cha...
Render: Geometry shaders #722 (#723)
Render: Instancing manager #194 (#759)
Render: SSBO as instancing data source on desktop platforms #758 (#757)
Refactoring
Core: Byte array type cha...
🔥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
https://www.youtube.com/watch?v=Wg9jL-QtmFs&list=PLMrw8vPDDhsNIvbovnbOkaLi6hiWws4xZ&index=12&pp=iAQB
Полный набор лекций можно глянуть тут
https://www.youtube.com/playlist?list=PLMrw8vPDDhsNIvbovnbOkaLi6hiWws4xZ
YouTube
GEEKON FEST 2 | 12 Виды шейдеров или как перестать бояться и полюбить свою GPU | Евгений Приказчиков
Виды шейдеров или как перестать бояться и полюбить свою GPU
Евгений Приказчиков, разработчик компьютерной графики, создатель игрового движка Thunder Engine
--
Канал "Практика гейм-дизайна" https://t.iss.one/justGameDesign
Фестиваль GEEKON FEST 2 https://www.geekon.ru/…
Евгений Приказчиков, разработчик компьютерной графики, создатель игрового движка Thunder Engine
--
Канал "Практика гейм-дизайна" https://t.iss.one/justGameDesign
Фестиваль GEEKON FEST 2 https://www.geekon.ru/…
❤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
https://signpath.org/projects
SignPath Foundation - Code Signing for Open Sor
SignPath Foundation
https://signpath.org
🔥5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Итак, сегодня замечательный повод, подвести итог эксперименту, по написанию игры для Ludum Dare джема. Да да я знаю что он прошел 3 недели назад =) но я не торопился. Для меня важно было зафиксировать как можно больше найденных проблем. Теперь-же делюсь небольшим видео игрового процесса. Игра в стиле Tower Defense. В целом эксперимент считаю удачным. Такие активности позволяют взглянуть на движок совершенно с другого ракурса. И выявить проблемы и найти новые идеи для работы.
🔥6
Мелочь, а приятно! Давно хотел добавить цветовую дифференциацию штанов осей координат. Мне очень нравилось как это сделано в блендере. Теперь такие оси есть и в моем редакторе. Так-же потратил какую-то прорву времени на исправление отображения редактора графов. Теперь масштабирование будет работать корректно.
🔥5❤2
Прошло уже больше месяца с момента моего последнего поста. Все это время я работал над пока не анонсированном крупным обновлением. Такого рода большие изменения, обычно, тянут за собой множество различных изменений поменьше, в самых разных местах. Итак, короткий дайджест изменений за прошлый месяц:
- Добавлен CheckBox виджет в UI модуль.
- Добавлен Foldout виджет в UI модуль.
- Немного переработан Frame виджет в UI модуле. Теперь он использует стандартный меш Plane для своей отрисовки (раньше каждый раз создавался отдельный меш)
- Глобальный рефакторинг модели данных отвечающих за отображения свойств объектов на сцене.
- Крупный рефакторинг редактора графов. Теперь нодам позволено определять как они будут выглядеть.
- Так-же доработана система сериализации графов. Теперь ноды сами определяют какую информацию они хотят сохранить.
- Наконец исправил проблему с рандомным крашем связанным с двойной попыткой блокировки мьютекса в базовом Object
To be continued...
- Добавлен CheckBox виджет в UI модуль.
- Добавлен Foldout виджет в UI модуль.
- Немного переработан Frame виджет в UI модуле. Теперь он использует стандартный меш Plane для своей отрисовки (раньше каждый раз создавался отдельный меш)
- Глобальный рефакторинг модели данных отвечающих за отображения свойств объектов на сцене.
- Крупный рефакторинг редактора графов. Теперь нодам позволено определять как они будут выглядеть.
- Так-же доработана система сериализации графов. Теперь ноды сами определяют какую информацию они хотят сохранить.
- Наконец исправил проблему с рандомным крашем связанным с двойной попыткой блокировки мьютекса в базовом Object
To be continued...
🔥6
Eще, я бы хотел остановиться на одной баге чуточку подробней. Я давно пытался победить низкое качество рендеринга текста у себя. Я работаю с SDF атласами глифов для отображения текста. На больших символах проблема незаметна, проблемы начинались когда текст должен быть мелким. Теперь, мне кажется, мне удалось немного улучшить ситуацию. На скрине До и После. Размер шрифта здесь 6px для строчной.
👍2🔥2
Сегодня я бы хотел рассказать о том, над чем я работаю последние несколько месяцев.
Тут должны быть фанфары, и возможно, салют. Но у меня слишком маленький бюджет.
Итак представляю вашему вниманию обновленную и переработанную систему частиц. 🔥
В чем же ее отличие спросите вы? Если коротко, она полностью переделана!
Итак расскажу как было раньше:
1. Система частиц хранилась в специальном ресурсе ParticleEffect.
2. У каждого ParticleEffect был список модификаторов определяющий поведение частиц. (Цвет, Скорость, Положение)
3. Так-же был ParticleRender компонент отвечающий за отрисовку инстанса ParticleEffect.
4. Еще был редактор похожий на анрыловский Cascade написанный на QML.
Вроде выглядит все не плохо? В целом да, но есть проблема в расширении возможностей поведения частиц!
Каждый раз когда мне необходимо добавить новый паттерн поведения, мне нужно лезть в код что-бы:
1. Добавить новый модификатор.
2. Добавить сериализацию для нового модификатора.
3. Добавить поддержку модификатора в редактор.
Так-же были определенные проблемы с перфом т.к. объект Модификатора применялся для каждой частицы.
Ну и т.к. я решил постепенно отказываться от QML, мне необходимо было перетащить редактор на что-то другое.
Еще необходимо было следить за правильной структурой буфера частиц.
Да, раньше частица представляла из себя структуру с основными параметрами (положение, цвет, размер) и промежуточными (скорость, скорость изменения размера, цвета и вращения).
Итак, я описал систему в текущей версии движка. В следующем посте я опишу обновленную систему и то, как я решил текущие ограничения.
Тут должны быть фанфары, и возможно, салют. Но у меня слишком маленький бюджет.
Итак представляю вашему вниманию обновленную и переработанную систему частиц. 🔥
В чем же ее отличие спросите вы? Если коротко, она полностью переделана!
Итак расскажу как было раньше:
1. Система частиц хранилась в специальном ресурсе ParticleEffect.
2. У каждого ParticleEffect был список модификаторов определяющий поведение частиц. (Цвет, Скорость, Положение)
3. Так-же был ParticleRender компонент отвечающий за отрисовку инстанса ParticleEffect.
4. Еще был редактор похожий на анрыловский Cascade написанный на QML.
Вроде выглядит все не плохо? В целом да, но есть проблема в расширении возможностей поведения частиц!
Каждый раз когда мне необходимо добавить новый паттерн поведения, мне нужно лезть в код что-бы:
1. Добавить новый модификатор.
2. Добавить сериализацию для нового модификатора.
3. Добавить поддержку модификатора в редактор.
Так-же были определенные проблемы с перфом т.к. объект Модификатора применялся для каждой частицы.
Ну и т.к. я решил постепенно отказываться от QML, мне необходимо было перетащить редактор на что-то другое.
Еще необходимо было следить за правильной структурой буфера частиц.
Да, раньше частица представляла из себя структуру с основными параметрами (положение, цвет, размер) и промежуточными (скорость, скорость изменения размера, цвета и вращения).
Итак, я описал систему в текущей версии движка. В следующем посте я опишу обновленную систему и то, как я решил текущие ограничения.
🎉6