Thunder Engine Development
35 subscribers
19 photos
14 links
Записки разработчика игрового движка. Чат канала @thunderengine_chat
加入频道
Я долго к этому шел и наконец это случалось. Дамы и господа, MacOS вернулся в поддерживаемые платформы.

Теперь рендер использует Metal API для отрисовки картинки!

К сожалению, с иконками возникла заминка, но она скорее связана с необходимостью переделки механизма создания иконок, чем с проблемами с Metal.

#thunderengine
🔥5🍾4
Сегодня заезжает еще одно обновление. Пока, правда, только для десктопных платформ.

Дамы и господа представляю вашему вниманию сетевой модуль! Пока модуль очень простой и содержит в себе всего одну сущность.

WebRequest - это по сути http запрос, который позволяет разработчику обратиться к web серверу для приема и отправки абстрактных данных. WebRequest поддерживает пока только get запрос, но у меня есть в планах, добавить и post запросы если будет спрос на них. Так-же модуль поддерживает SSL соединения, так, что можно обращаться по протоколу https.

Продуктивные выдались выходные.

#thunderengine
🔥3
Я давненько присматриваю замену QBS для компиляции игровых бинарный файлов. Текущая ситуация меня не страивает по нескольким причинам:

1. Я регулярно сталкиваюсь с тем, что QBS отказывается строиться из исходников на CI. Сейчас я вообще вынужден убрать его из релизов (в замен предлагается использовать QBS из более старых релизов).
2. Сам QBS довольно избыточен, для построения простых игровых бинарей. Он как швейцарский нож, очень многое умеет, но на финальной стадии постройки используется очень ограниченный функционал.
3. Исходя из второго пункта, QBS тащит за собой огромное количество разных вспомогательных файлов, что противоречит моей идеологии о компактности, раздувая редактор дополнительным мусором, который не используется, но требуется "на всякий случай".

Относительно давно я положил глаз на Ninja. Это компактная система сборки состоящая всего из одного бинарного файла. Из его плюсов:
1. Компактный.
2. Кроссплатформенный (Windows, Linux, MacOS)
3. Довольно простой файл для сборки

Однако есть и один минус! В отличии от QBS в Ninja нет генератора проектов для IDE. Но это в принципе решаемо, написанием своего генератора проектов. Нужно будет выделить время в след цикле разработки на исследование этого инструмента.

#thunderengine
👍3
Скоро конец квартала, а это значит, что настает пора релизов.

Встречайте новый релиз Thunder Engine!

В этом релизе добавилось много интересных штук, таких как:
- Поддержка HTML5 платформы. Теперь вы можете делать игры под веб.
- Вернулась поддержка MacOS.
- Улучшен графический пайплайн. Графика стала лучше! Хотя казалось бы куда уже лучше? =)
- Добавлена возможность обращаться к Web серверу (пока только для десктоп платформ)

Полный список вы можете найти тут.

#thunderengine
🔥6
Одной из самых моих нелюбимых частей движка, безусловно является редактор UI интерфейсов и инструментарий для манипуляции с виджетами. С ним все время какие-то проблемы образуются. Сама по себе система довольно простая. Но к ней навернуты системы масштабирования и margin'ы и padding'ы всякие, (которые добавляют головной боли) для правильного позиционирования виджета в иерархии. По не многу, я выправляю найденные баги. Но иногда. это занимает какую-то прорву времени. Так и сейчас. Я потратил примерно 2 недели, что-бы исправить поведение рамки. помогающей манипулировать виджетом. Было примерно как показано на скрине. Теперь должно работать правильно. Так-же я помню о старой таске за номером 720 в которой есть просьба добавить быстрое создание ассетов интерфейсов. У меня уже есть механизм шаблонов для них, но я пока не придумал, что нужно разместить в этом самом шаблоне. Может у вас есть идеи?

#thunderengine
😢1
Произвел реафакторинг UI компонент. Сделал применение стилей более гибкими. Как вы возможно знаете, все UI виджеты у меня состоят из простейших компонент. Frame/Image/Label. Все остальные виджеты, под капотом, это комбинация этой сладкой троицы. Иногда сложные виджеты требуют довольно глубокой иерархии. Что-бы нормально применять стиль (цвета размеры и т.д.), необходима возможность отделить своих, от чужих. Так родилась идея SubWidgets. При создании виджет сам регистрирует свои части в специальный контейнер. А когда применяются стили, мы легко можем пройтись по контейнеру и применить стили, только к зарегистрированным компонентам. Решение получилось супер элегантное. В будущем, можно даже селекторы специальные написать для CSS.

#thunderengine
🔥6
Продолжаю совершенствовать редактор игровых интерфейсов. Добавил базовые шаблоны для ассетов типа UI (интерфейс) и CSS (таблица стилей). Задумываюсь о поддержке анимации виджетов через CSS. Но пока держу себя в руках.

#thunderengine
🔥6
Как-то от моего внимания ускользнула возможность, копирования и вставки объектов в редакторе. Решил исправить это досадное недоразумение. Пока, правда, только в редакторе UI интерфейсов. Но начало положено и, со временем, этот функционал распространится и на другие части редактора. К сожалению, универсального подхода тут нет.

#thunderengine
👍3
Так-же сегодня произошло одно маленькое, но знаменательное событие. Счетчик сквозной нумерации тикетов/пулл реквестов приблизился к отметке в 1000. Это хороший повод поделиться некоторой статистикой:
- Количество решеных тикетов: 590
- Количество пул реквестов: 378
- Количество коммитов в репозиторий: 1337 (Elite ^_^)
- Всего выпущено релизов: 25

#thunderengine
🔥6👍1
Продолжаю улучшать редактор UI. Давненько хотел добавить возможность, выравнивания виджетов друг, относительно друга. Я называю эту фичу Snap Solver. На манер Решателей из CAD систем. Это не совсем оно конечно, но очень похоже. Технически, при перемещении виджета, или при изменении его размера, инструмент смотрит на соседние виджеты в иерархии и "примагничивает" границы по X и Y осям других виджетов, если таковые найдутся. Сейчас инструмент учитывает границу соседнего в иерархии виджета и его геометрический центр. В будущем, можно будет сделать еще и учет расстояния, выстраивая виджеты "паровозиком". Хотя для таких целей лучше подходят лэйауты, которые уже поддерживаются.

#thunderengine
🔥4