Перейти к содержанию
  • Авторизация  

    Gauntlet


    Sanello

    В разработке компьютерных игр есть свои подводные камни. Случается, что уже имеющаяся технология или инструмент не вполне подходит для поставленных целей или работает менее эффективно, чем хотелось бы. В такой ситуации вы встаете перед выбором: изменить дизайн или изготовить собственный, более удобный инструмент.

    Именно эта дилемма возникла у нас при разработке интерфейса для Bannerlord. Раньше мы решали эту задачу с помощью Flash и Scaleform. Это довольно распространенная практика. Мы создавали интерфейс во Flash и встраивали его в игру через программу Scaleform. В принципе, и Scaleform, и Flash работали прекрасно и предоставляли все необходимы нам функции. Однако довольно быстро вскрылся ряд проблем, касающихся процесса создания и встраивания элементов интерфейса в игру.

    Во-первых, все занимало слишком много времени. Любые изменения интерфейса нужно было сначала внести во Flash, а уже потом — в игру, чтобы протестировать. По мере усложнения различных меню и окон, создание файлов .swf стало занимать все больше времени. Чтобы увидеть любое внесенное изменение, игру приходилось перезапускать. Даже для какой-нибудь мелочи вроде переноса элемента на пять пикселей влево приходилось запускать процесс сначала.

    Кроме того, инструменты Scaleform и Flash разработаны не нами, а значит, мы не можем менять их. Осознав, как сложно оказалось подстроить эти инструменты под наши нужды, мы задались вопросом: не напрасно ли мы тратим столько сил на то, чтобы просто заставить их работать?

    В конечном итоге мы поняли, что, вкладывая столько сил и времени в разработку интерфейса, мы буксуем на месте. Для создания интерфейса, соответствующего нашей концепции, требовалась собственная UI-библиотека. В конце концов, некоторые проблемы — это на самом деле возможности!

    Сделать этот шаг было страшно, поскольку мы уже вложили в существующий интерфейс тысячи часов работы. К счастью, уже на ранней стадии разработки мы решили использовать шаблон MVVM. Это значило, что часть кода была в аккуратно упакована в классы С# и не зависела от конкретной UI-библиотеки. Иными словами, мы могли использовать эти наработки, даже если остальное пришлось бы переделать. Уже хорошие новости!

    Далее нам предстояло решить, как именно должна выглядеть наша собственная UI-библиотека. Вот как выглядел список наших требований к ней:

    • Быстрота работы. Команда разработки движка по миллисекундам урезала время рендеринга, и мы не хотели, чтобы медленно работающий интерфейс свел их усилия на нет.
    • Простота в обращении, возможность корректировки по ходу работы. В идеале библиотека использовала бы файлы текстового формата, например XML, поскольку это существенно облегчает взаимодействие между несколькими разработчиками.
    • Простота в создании интерактивного интерфейса.
    • Отсутствие жесткой привязки схемы интерфейса к внешнему виду. Это позволило бы программистам и художникам работать параллельно.


    Мы решили назвать новую платформу для разработки интерфейса Gauntlet («латная рукавица»), просто потому что это круто звучит. Gauntlet позволяет вносить изменения по ходу работы. Это значит, что теперь мы редактируем окна интерфейса, не перезапуская игру, не создавая промежуточных файлов и не совершая других лишних действий. Мы можем изменить файл .xml, сохранить изменения — и они сразу появятся на экране. К тому же, имея полный контроль над самим инструментом, мы при необходимости можем менять и его.

    Как это работает? Тут нет ничего сложного. Мы привязываем файл .xml к окну интерфейса. Когда окно открывается, игра запускает этот файл. В нем содержится вся информация о расположении элементов и о работе данного окна. Разные .xml-файлы можно связывать друг с другом. Элемент интерфейса, который мы хотим использовать в нескольких окнах, можно встроить в виде ссылки. А это, в свою очередь, означает, что изменения нужно вносить всего в один файл — они отобразятся во всех окнах, которые ссылаются на этот элемент.

    Наконец, отдельные файлы XML определяют внешний вид различных элементов, по аналогии с файлами CSS на HTML-страницах. Система графического наполнения интерфейса также работает превосходно. Художник может с легкостью задать поведение и внешний вид любого элемента. Например, можно сделать так, чтобы кнопка меняла цвет, когда на нее наводят курсор, и подключить анимацию, срабатывающую при нажатии.

    Мы надеемся, что платформа Gauntlet будет полезна и создателям модификаций. В Warband менять что-либо в интерфейсе было довольно трудно, обойти некоторые ограничения было невозможно. С Gauntlet создатели модификаций смогут менять любое окно интерфейса и будут ограничены только своим воображением.


    Героем нашего интервью на следующей неделе станет ассистент дизайнера Джихан Шекерджиоглу. Если вы хотите что-нибудь у него спросить, оставьте комментарий на этой странице. Самый интересный вопрос мы зададим во время интервью.

    Авторизация  


    Обратная связь

    Рекомендуемые комментарии

    Комментариев нет


×
×
  • Создать...