Пару недель назад, я увлекся улучшение редактора графов. И как-то очень сильно у меня зашло это дело, что текущие изменения затронули уже порядка 100 файлов и это пока не конец. А все дело в том, что я затеял рефакторинг с переводом нодов графа с обьекта Qt, на свои собственные, в рамках движения в сторону отказа от Qt. Ибо не братья они нам больше.
#thunderengine
#thunderengine
🔥4
Начинаю подготовку к очередному релизу. Закидываю свежую порцию изменений. Переработанный редактор графов все-же пойдет в следующий цикл разработки, т.к. содержит очень много изменений, в которых очень легко допустить ошибку. Однако, в процессе работы над изменениями, накопилось определенное количество "попутных фиксов" которые я и заливаю прямо в этот момент.
#thunderengine
#thunderengine
🔥4
Вот, наконец и подошел момент релиза версии 2025.3. В этой версии, я сфокусировался на исправлении, найденных мной, ошибок в различных редакторах ассетов (в основном UI Editor). Так-же я постарался улучшить пользовательский опыт (Copy/Paste), при использовании редактора. Новых фичей я завез совсем немного и они, по большей части, касаются низкого уровня. С полным списком изменений вы можете ознакомится здесь: https://github.com/thunder-engine/thunder/releases/tag/2025.3
#thunderengine
#thunderengine
GitHub
Release Release 2025.3 · thunder-engine/thunder
Features
Editor: Ability to snap widgets in UI Editor #1001 (#1002)
Editor: Add Document and Style Sheet asset types. #720 (#995)
Editor: Copy/Paste functionality for Scene Editor #1008 (#1009)
Ed...
Editor: Ability to snap widgets in UI Editor #1001 (#1002)
Editor: Add Document and Style Sheet asset types. #720 (#995)
Editor: Copy/Paste functionality for Scene Editor #1008 (#1009)
Ed...
🔥3
Продолжаю делать глобальные рефакторинги. Сегодня у нас на очереди работа со строками. Раньше я использовал std::string тип, для взаимодействия с текстовыми данными. Но он не всегда удобен, когда нужно сделать более сложные вещи, типа разделения, поиска или замены. Я решил написать аналог QString и не стал сильно заморачиваться, назвав его просто String. У него пока не так много фичей, как у оригинала, но на первое время хватит. Самое муторное было заменить все строки движка с std::string на String. Уверен, что баги вылавливать буду еще некоторое время. Но это глобальное изменение давно назрело.
#thunderengine
#thunderengine
🔥6
Пока занимался рефакторингом редактора, связанным с постепенным отказом от Qt. Я обратил внимание, что цикл, в котором происходит динамическое объединение объектов в группы, для последующей отрисовки, делает это каждый раз при вызове функции PipelineContext::drawRenderers. А это происходит несколько раз за кадр. Что приводит к многократному, бесполезному копированию, одних и тех-же данных. Надо бы этот момент оптимизировать. Чем я и займусь далее.
#thunderengine
#thunderengine
🔥4👍1
Хотел ответить в комментариях, но решил сделать отдельным постом.
На самом деле там назрел небольшой рефакторинг, т.к. технический долг начинает давить. Некоторые моменты я просто решил убрать. К примеру у Actor больше не будет понятия "Слой" он переехал в Material. т.к, по большому счету, он использовался только там. И у Renderable может быть больше одного материала со своими личными настройками. Так-же, теперь, Renderable компонента может возвращать больше одного меша для отрисовки. Теперь каждому материалу можно будет назначить свой, индивидуальный меш, что позволит делать более сложные компоненты. Первый кандидат на это EffectRender.
#thunderengine
На самом деле там назрел небольшой рефакторинг, т.к. технический долг начинает давить. Некоторые моменты я просто решил убрать. К примеру у Actor больше не будет понятия "Слой" он переехал в Material. т.к, по большому счету, он использовался только там. И у Renderable может быть больше одного материала со своими личными настройками. Так-же, теперь, Renderable компонента может возвращать больше одного меша для отрисовки. Теперь каждому материалу можно будет назначить свой, индивидуальный меш, что позволит делать более сложные компоненты. Первый кандидат на это EffectRender.
#thunderengine
🔥3
🌍 Куда делся ландшафт в Thunder Engine?
Если вы работали с Thunder Engine, то наверняка заметили: в нём нет поддержки ландшафта. "Как так?!" — спросите вы. Ведь даже в простых движках он есть!
И будете правы — когда-то он и у меня был. Но 5 лет назад, во время большого переписывания, Terrain просто… не попал в список поддерживаемых компонентов.
Почему? Потому что я хотел реализовать масштабные пространства — а без чанкинга тут не обойтись.
Иногда я снова задумываюсь о добавлении этой системы, но каждый раз упираюсь в сложности:
🔹 Обработка и хранение чанков
🔹 Удобство работы в редакторе
🔹 Формат данных, который пока далёк от идеала
Я изучил, как с этим справляются Unreal Engine и Unity, и понял: работы — целая гора.
Вопрос в другом: а нужно ли это вам? Стоит ли тратить время на ландшафты, или лучше сфокусироваться на других фичах?
Пишите в комментариях! 🚀
#thunderengine
Если вы работали с Thunder Engine, то наверняка заметили: в нём нет поддержки ландшафта. "Как так?!" — спросите вы. Ведь даже в простых движках он есть!
И будете правы — когда-то он и у меня был. Но 5 лет назад, во время большого переписывания, Terrain просто… не попал в список поддерживаемых компонентов.
Почему? Потому что я хотел реализовать масштабные пространства — а без чанкинга тут не обойтись.
Иногда я снова задумываюсь о добавлении этой системы, но каждый раз упираюсь в сложности:
🔹 Обработка и хранение чанков
🔹 Удобство работы в редакторе
🔹 Формат данных, который пока далёк от идеала
Я изучил, как с этим справляются Unreal Engine и Unity, и понял: работы — целая гора.
Вопрос в другом: а нужно ли это вам? Стоит ли тратить время на ландшафты, или лучше сфокусироваться на других фичах?
Пишите в комментариях! 🚀
#thunderengine
🤔3
Вчера получил вот такое письмишко.
Сотрудничать я с ними конечно не буду, но внимание приятно. 🔥
Интересно, почему наши так не отслеживают проекты? 🧐
Люблю проактивность. 🚀
#thunderengine
Сотрудничать я с ними конечно не буду, но внимание приятно. 🔥
Интересно, почему наши так не отслеживают проекты? 🧐
Люблю проактивность. 🚀
#thunderengine
❤3
🔥 Частицы в Thunder Engine стали ещё круче!
Сегодняшние улучшения принесли две мощные фичи:
✨ Поддержка SubUV
✨ Анимация SubUV
Теперь вы можете:
🔹Создавать материалы с атласами спрайтов
🔹Настраивать анимацию частиц, которая будет проигрываться за время их жизни
Что ещё улучшено:
🔹 Исправлены баги в системе частиц
🔹 Пофикшены несколько крэшей
🔹 Полностью переработан вершинный шейдер Billboard
Теперь для анимации из атласов достаточно всего одного vec3 из инстанс-буфера!
Эти изменения сделают ваши визуальные эффекты более живыми и гибкими. Как вам такие апдейты? 💬
#thunderengine #GameDev #VFX
Сегодняшние улучшения принесли две мощные фичи:
✨ Поддержка SubUV
✨ Анимация SubUV
Теперь вы можете:
🔹Создавать материалы с атласами спрайтов
🔹Настраивать анимацию частиц, которая будет проигрываться за время их жизни
Что ещё улучшено:
🔹 Исправлены баги в системе частиц
🔹 Пофикшены несколько крэшей
🔹 Полностью переработан вершинный шейдер Billboard
Теперь для анимации из атласов достаточно всего одного vec3 из инстанс-буфера!
Эти изменения сделают ваши визуальные эффекты более живыми и гибкими. Как вам такие апдейты? 💬
#thunderengine #GameDev #VFX
🔥3
💭 Немного размышлений на тему визуальных эффектов.
Сегодня я бы хотел поделиться своимпотоком сознания мыслями на тему визуальных эффектов и заодно показать, как происходит смена концепции и причины рефакторингов.
На данный момент есть 2 класса отвечающие за визуальные эффекты в движке:
🔹 VisualEffect - это ресурс, в котором находятся все параметры и команды, отвечающие за поведение ваших частиц на сцене.
🔹 EffectRender - это компонент, который отвечает за проигрывание эффекта, его можно разместить непосредственно на сцене и назначить ему VisualEffect.
Итак мы разобрались с вводными.
А вот теперь, вам, предположим, нужно создать эффект костра. В котором должны быть:
1. Пламя
2. Дым
3. Искры (опционально)
4. Можно еще дисторшен от температуры добавить (опционально)
Совершенно очевидно, что это все разные эффекты, объединённые в одну систему.
Возникает закономерный архитектурный вопрос. Если у нас 4 разных эффекта, может объединить их в одну систему?
Вариант 1: Единая система
Можно переименовать:
VisualEffect → EffectEmitter (отвечает за отдельные эффекты)
Создать новый VisualEffect как контейнер для нескольких синхронизированных эмиттеров
Плюсы:
✔️ Есть центральный ресурс объединяющий разные эмиттеры и даже возможно их синхронизирующий.
Минусы:
⚠️ Предстоит рефакторинг с переименованием, что может привести к поломке существующих ассетов.
⚠️ Если мы захотим новую комбинацию эффектов, нам придется создать новый отдельный VisualEffect. Если помним, то EffectEmitter все еще хранится отдельно.
⚠️ Если в VisualEffect будет содержать всего один EffectEmitter, это все еще 2 ресурса к загрузке.
Вариант 2: Оставить как есть
Просто размещать несколько компонентов EffectRender и объединять их в префаб
Плюсы:
✔️ Не надо ничего менять, все работает как сейчас.
Минусы:
⚠️ Нам придется объединить наш пресловутый костер в префаб.
⚠️ Возможно нужно будет как-то синхронизировать состояния эмиттеров с помощью дополнительных компонент.
Какой вариант вам кажется более удобным?
#thunderengine #GameDev #VFX
Сегодня я бы хотел поделиться своим
На данный момент есть 2 класса отвечающие за визуальные эффекты в движке:
🔹 VisualEffect - это ресурс, в котором находятся все параметры и команды, отвечающие за поведение ваших частиц на сцене.
🔹 EffectRender - это компонент, который отвечает за проигрывание эффекта, его можно разместить непосредственно на сцене и назначить ему VisualEffect.
Итак мы разобрались с вводными.
А вот теперь, вам, предположим, нужно создать эффект костра. В котором должны быть:
1. Пламя
2. Дым
3. Искры (опционально)
4. Можно еще дисторшен от температуры добавить (опционально)
Совершенно очевидно, что это все разные эффекты, объединённые в одну систему.
Возникает закономерный архитектурный вопрос. Если у нас 4 разных эффекта, может объединить их в одну систему?
Вариант 1: Единая система
Можно переименовать:
VisualEffect → EffectEmitter (отвечает за отдельные эффекты)
Создать новый VisualEffect как контейнер для нескольких синхронизированных эмиттеров
Плюсы:
✔️ Есть центральный ресурс объединяющий разные эмиттеры и даже возможно их синхронизирующий.
Минусы:
⚠️ Предстоит рефакторинг с переименованием, что может привести к поломке существующих ассетов.
⚠️ Если мы захотим новую комбинацию эффектов, нам придется создать новый отдельный VisualEffect. Если помним, то EffectEmitter все еще хранится отдельно.
⚠️ Если в VisualEffect будет содержать всего один EffectEmitter, это все еще 2 ресурса к загрузке.
Вариант 2: Оставить как есть
Просто размещать несколько компонентов EffectRender и объединять их в префаб
Плюсы:
✔️ Не надо ничего менять, все работает как сейчас.
Минусы:
⚠️ Нам придется объединить наш пресловутый костер в префаб.
⚠️ Возможно нужно будет как-то синхронизировать состояния эмиттеров с помощью дополнительных компонент.
Какой вариант вам кажется более удобным?
#thunderengine #GameDev #VFX
✍1🔥1
🎤 Выступаю на ITGorky Dev Conf!
Рад сообщить, что 20 сентября выступлю на крупной конференции ITGorky Dev Conf в Нижнем Новгороде!
📍 Место: «Академия Маяк» им. А.Д. Сахарова (ул. Нижне-Волжская набережная, 11).
Расскажу о возможностях и фишках Thunder Engine.
📌 Регистрируйтесь по ссылке:
https://dev.itgorky.ru/
Жду всех, кто интересуется геймдевом! Будет жарко! 🔥
#ITGorkyDevConf #ThunderEngine #GameDev #Конференция #НижнийНовгород
Рад сообщить, что 20 сентября выступлю на крупной конференции ITGorky Dev Conf в Нижнем Новгороде!
📍 Место: «Академия Маяк» им. А.Д. Сахарова (ул. Нижне-Волжская набережная, 11).
Расскажу о возможностях и фишках Thunder Engine.
📌 Регистрируйтесь по ссылке:
https://dev.itgorky.ru/
Жду всех, кто интересуется геймдевом! Будет жарко! 🔥
#ITGorkyDevConf #ThunderEngine #GameDev #Конференция #НижнийНовгород
dev.itgorky.ru
#ITGorky Dev Conf
Большая встреча IT-сообществ Нижнего Новгорода 2025 год
🔥5
✨ Большое обновление редактора эффектов в Thunder Engine!
Продолжаю активно развивать систему визуальных эффектов и рад поделиться ключевыми улучшениями:
Что нового:
🎯 Меши как частицы — Теперь можно использовать 3D-модели в качестве частиц для создания сложных и реалистичных эффектов
⚙️ Расширенное управление эмиттерами — Добавлены новые параметры и возможности контроля над генерацией частиц
🐛 Исправлено более 10 багов — Повышена стабильность и производительность системы
Эти изменения открывают новые горизонты для создания впечатляющих визуальных эффектов — от магических заклинаний до реалистичных взрывов!
Какие эффекты вы бы хотели создать с помощью обновленной системы? Делитесь идеями в комментариях! ✨
#GameDev #thunderengine #VFX #Геймдев
Продолжаю активно развивать систему визуальных эффектов и рад поделиться ключевыми улучшениями:
Что нового:
🎯 Меши как частицы — Теперь можно использовать 3D-модели в качестве частиц для создания сложных и реалистичных эффектов
⚙️ Расширенное управление эмиттерами — Добавлены новые параметры и возможности контроля над генерацией частиц
🐛 Исправлено более 10 багов — Повышена стабильность и производительность системы
Эти изменения открывают новые горизонты для создания впечатляющих визуальных эффектов — от магических заклинаний до реалистичных взрывов!
Какие эффекты вы бы хотели создать с помощью обновленной системы? Делитесь идеями в комментариях! ✨
#GameDev #thunderengine #VFX #Геймдев
🔥4
🚀 Готовлюсь к конференции и делюсь радостной новостью!
Продолжаю усиленно готовиться к выступлению на ITGorky Dev Conf — активно работаю над слайдами, чтобы сделать выступление максимально полезным и интересным для вас.
Также в рамках подготовки:
✨ Обновил официальный сайт движка — загляните на https://thunderengine.org/!
✨ Добавил актуальную информацию, улучшил дизайн и структуру.
А еще у нас важный момент — количество звёзд на GitHub перевалило за 600! 🎉
Огромное спасибо каждому, кто поддерживает проект своим интересом и участием! Это лучшая мотивация развивать движок дальше.
Ваша поддержка действительно вдохновляет! ❤️
#thunderengine #GameDev #ITGorkyDevConf #GitHub #Разработка
Продолжаю усиленно готовиться к выступлению на ITGorky Dev Conf — активно работаю над слайдами, чтобы сделать выступление максимально полезным и интересным для вас.
Также в рамках подготовки:
✨ Обновил официальный сайт движка — загляните на https://thunderengine.org/!
✨ Добавил актуальную информацию, улучшил дизайн и структуру.
А еще у нас важный момент — количество звёзд на GitHub перевалило за 600! 🎉
Огромное спасибо каждому, кто поддерживает проект своим интересом и участием! Это лучшая мотивация развивать движок дальше.
Ваша поддержка действительно вдохновляет! ❤️
#thunderengine #GameDev #ITGorkyDevConf #GitHub #Разработка
🔥5❤🔥1🥰1
Обнаружил крупную проблему связанную с менеджментом ресурсов. Пытаюсь исправить. Проблема носит очень глобальный характер.
👍5
🚨 Важное обновление: исправлена критическая проблема с импортом ресурсов!
Пару дней назад я обнаружил серьезную багу в системе получения референсных ссылок для только что импортированных ресурсов. Это вызывало очень странные артефакты при работе со сложными ресурсами.
Напомню: сложные ресурсы — это те, которые содержат несколько саб-ресурсов внутри. Например:
• FBX-файлы — конвертируются в префаб (сцена) + меши + анимации (+ материалы в будущем)
• Другие составные форматы
В чем была проблема:
Новые ресурсы получали некорректные референсные ссылки, что приводило к:
⚠️ Неполной загрузке сцен
⚠️ Ошибкам связей между ресурсами
Что сделано:
✅ Обновлен механизм генерации ресурса для всех конвертеров
✅ Немного переработан механизм сохранения саб ресурсов и их регистрация в движке
Теперь импорт сложных ресурсов работает стабильно! 🎉
P.S. Если у вас были проблемы с импортом — попробуйте обновить движок и переимпортировать ресурсы. Баг должен исчезнуть!
#ThunderEngine #GameDev #Разработка #Баги #Импорт
Пару дней назад я обнаружил серьезную багу в системе получения референсных ссылок для только что импортированных ресурсов. Это вызывало очень странные артефакты при работе со сложными ресурсами.
Напомню: сложные ресурсы — это те, которые содержат несколько саб-ресурсов внутри. Например:
• FBX-файлы — конвертируются в префаб (сцена) + меши + анимации (+ материалы в будущем)
• Другие составные форматы
В чем была проблема:
Новые ресурсы получали некорректные референсные ссылки, что приводило к:
⚠️ Неполной загрузке сцен
⚠️ Ошибкам связей между ресурсами
Что сделано:
✅ Обновлен механизм генерации ресурса для всех конвертеров
✅ Немного переработан механизм сохранения саб ресурсов и их регистрация в движке
Теперь импорт сложных ресурсов работает стабильно! 🎉
P.S. Если у вас были проблемы с импортом — попробуйте обновить движок и переимпортировать ресурсы. Баг должен исчезнуть!
#ThunderEngine #GameDev #Разработка #Баги #Импорт
🔥5
🛠 Исправлен критический баг с импортом FBX-префабов!
Обнаружил и устранил важную проблему, которая приводила к неправильному построению иерархии объектов в импортированных префабах. Рассказываю подробнее:
В чём была проблема:
Для сохранения правильных связей между объектами при повторном импорте используется система хэширования на основе уникальных ID. Однако если разные файлы содержали объекты с одинаковыми путями, возникали коллизии — в префаб случайно добавлялись «чужие» объекты, что ломало иерархию и приводило к ошибкам.
Как исправил:
✅ Улучшил алгоритм хэширования — теперь он учитывает больше уникальных данных (включая метаданные файла и контекст импорта).
✅ Генерируемые ID стали значительно надежнее и исключают коллизии.
Итог:
Теперь импорт сложных FBX-префабов работает стабильно, а связи между объектами остаются целыми даже после повторных обновлений ресурсов. 🎉
Если у вас были похожие проблемы — обновите движок и попробуйте переимпортировать файлы! Всё должно работать как часы. ⚙️
#ThunderEngine #GameDev #FBX #Импорт #Баги #Разработка
Обнаружил и устранил важную проблему, которая приводила к неправильному построению иерархии объектов в импортированных префабах. Рассказываю подробнее:
В чём была проблема:
Для сохранения правильных связей между объектами при повторном импорте используется система хэширования на основе уникальных ID. Однако если разные файлы содержали объекты с одинаковыми путями, возникали коллизии — в префаб случайно добавлялись «чужие» объекты, что ломало иерархию и приводило к ошибкам.
Как исправил:
✅ Улучшил алгоритм хэширования — теперь он учитывает больше уникальных данных (включая метаданные файла и контекст импорта).
✅ Генерируемые ID стали значительно надежнее и исключают коллизии.
Итог:
Теперь импорт сложных FBX-префабов работает стабильно, а связи между объектами остаются целыми даже после повторных обновлений ресурсов. 🎉
Если у вас были похожие проблемы — обновите движок и попробуйте переимпортировать файлы! Всё должно работать как часы. ⚙️
#ThunderEngine #GameDev #FBX #Импорт #Баги #Разработка
👍1
🎉 Важное обновление: SkinnedMeshRender теперь с поддержкой инстансинга!
Хочу поделиться крутой новостью: мы добавили полноценную поддержку инстансинга для SkinnedMeshRenderer! Это то, чего вы не встретите даже в Unity!
Что это значит на практике:
• Многократное повышение производительности при отрисовке одинаковых анимированных моделей
• Возможность создавать массовые сцены с сотнями и может быть даже тысячами персонажей
• Оптимизация рендеринга без потери качества анимации
Доказательство работы:
На приложенном скриншоте из профилировщика NSight видно:
🔴 Красные фигурки обозначают объекты, отрисованные за один вызов (draw call)
✅ Инстансинг работает корректно и эффективно
Почему это прорыв:
В отличие от других движков, мы реализовали инстансинг для скининга без потери функциональности и качества анимации!
Теперь вы можете создавать масштабные сцены с большим количеством анимированных персонажей без потери производительности 🚀
#GameDev #SkinnedMesh #Инстансинг #Оптимизация #ThunderEngine
Хочу поделиться крутой новостью: мы добавили полноценную поддержку инстансинга для SkinnedMeshRenderer! Это то, чего вы не встретите даже в Unity!
Что это значит на практике:
• Многократное повышение производительности при отрисовке одинаковых анимированных моделей
• Возможность создавать массовые сцены с сотнями и может быть даже тысячами персонажей
• Оптимизация рендеринга без потери качества анимации
Доказательство работы:
На приложенном скриншоте из профилировщика NSight видно:
🔴 Красные фигурки обозначают объекты, отрисованные за один вызов (draw call)
✅ Инстансинг работает корректно и эффективно
Почему это прорыв:
В отличие от других движков, мы реализовали инстансинг для скининга без потери функциональности и качества анимации!
Теперь вы можете создавать масштабные сцены с большим количеством анимированных персонажей без потери производительности 🚀
#GameDev #SkinnedMesh #Инстансинг #Оптимизация #ThunderEngine
🔥7👍2