Улучшение движка: Векторная графика, меню, горячая загрузка текста
Я пока ещё не решил, какую игру буду делать дальше, поэтому несколько дней просто улучшал свой движок.
Добавлена возможность генерировать некоторые векторные фигуры, которые можно использовать в создании гибких элементов интерфейса. Раньше такие картинки нужно было создавать в графическом редакторе.
Теперь движок умеет рисовать круги, треугольники и прямоугольники со скруглёнными углами, которые сохраняются в текстурный кэш и используются повторно при необходимости. Прямоугольники со скруглёнными углами используют nine-slice scaling, так что одна и та же текстура может быть использована для создания прямоугольников разных размеров без искажения углов.
Эту функцию можно использовать вместе с моей новой системой текстов, чтобы быстро создавать элементы интерфейса, которые можно масштабировать без размытия картинки.
Я переделал все элементы меню, используя эти векторные фигуры, поменял раскладки страниц в меню и добавил полосу прокрутки (раньше были кнопки для пролистывания страниц). Все меню поддерживают управление мышью, клавиатурой и игровыми устройствами.
Я также заменил старый счётчик кадров в секунду на более подробный инструмент, который показывает больше информации и рисует графики.
Также была улучшена система текстов. Теперь поддерживается горячая загрузка текста. Как только меняется текстовый файл с переводами, моментально обновляется весь интерфейс в игре. Любой элемент может "слушать" глобальные изменения текста и автоматически обновлять текстовые поля. Так можно тестировать переводы текста в реальном времени. После перевода трёх моих игр на другой язык, я уже знаю, что такой инструмент мне очень пригодится в будущем.
На самом деле, горячая загрузка текста разрабатывалась для другой цели. Я хотел добавить в меню опцию выбора языка, которая меняла бы весь текст в игре в реальном времени. Но потом я узнал, что можно использовать Steamworks API для обнаружения языка игрока, и надобность в такой опции исчезла.