GUI в игре World of Tanks. Часть первая: эволюция интерфейсов игры

Jul 03, 2014 14:30

Источник: http://habrahabr.ru/company/wargaming/blog/228309/



Сегодня мы проведем экскурс в историю развития Graphical User Interface (GUI) в игре World of Tanks.

Игра прошла длинный путь к успеху, и ее GUI менялся и полностью переделывался несколько раз в погоне за повышающимися требованиями армии танкистов, которая неуклонно росла.

Проработав в отделе GUI Programming два с половиной года, я получил представление о том, как развивался сам интерфейс в технологическом плане и как менялись подходы и процессы, это развитие сопровождавшие.

Первые шаги: использование инструментов BigWorld

Начиналось все с того, что в декабре 2008 родилась идея проекта. Все, кто играл в танки, думаю, знают, что первоначальной идеей было сделать игру про эльфов и орков, но, когда хорошенько все продумали, решили остановиться на танках (см. заглавное фото).

Игру начали делать на движке BigWorld, который предоставлял собственный набор инструментов для создания GUI. Мы пошли по пути наименьшего сопротивления и делали первые интерфейсы именно на BigWorld GUI.

Как это работало с точки зрения технической реализации:


  • декларативно в XML описывалась структура и визуальная часть GUI;
  • общий layout для крупной вьюхи - стили самой вьюхи и набор основных блоков, ее составлявших, описанный в XML;
  • каждый из блоков описан в отдельном XML с указанием используемых стилей и компонентов. Для компонентов задавались их настройки (именование, локализационные сообщения, ссылки на стили);
  • стили описывались в отдельных XML-файлах, где задавались размеры, позиции, используемые текстуры, шрифты, цвета, z-order и бог знает что еще;
  • при старте клиента все эти XML-файлы грузились в Python и парсились, после чего начинался процесс создания интерфейсов, их инициализации и подключения к игровой логике.
Вот пример, выдранный из недр SVN-проекта:

hangar.xml - описание блоков UI в ангаре: