Архитектура приложения, игровой движок

Первую часть рассказа про техническую часть WitchCraft можно найти ЗДЕСЬ 

Приложение в демо-версии содержало игровой эпизод, представляющий собой законченную историю из жизни главной героини. Эпизод включал в себя 6 игровых сцен, отличающихся друг от друга геймплеем и локацией в которой происходит действие. В качестве основы для каждой игровой сцены была выбрана страница XAML, использующая для отображения графики XNA Framework. Сделано было это по нескольким причинам: для логического разделения игровых сцен, для удобства загрузки/выгрузки контента, навигации между сценами, а также работы с медиа-элементом для воспроизведения видео. Такой же осталась концепция и при реализации полной версии игры.

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

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

 03 diagrama

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

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

Яндекс.Метрика