Изображение 1
Доброго времени суток. Я программист проекта
Field Of Honor. Хочу рассказать немного о нашей игре: что представляет собой процесс разработки, с какими трудностями сталкивались и как мы их преодолевали.
Для начала - сам игровой процесс. Есть карта, на которой расположены две противостоящие стороны. Для обеих сторон, предоставлены крепость (главное здание), вышки (на месте которых можно покупать другие и улучшать их), точки для постройки бараков (в них мы нанимаем юнитов, а так же улучшаем их). Основная задача одной из сторон - разрушить крепость противника. Юниты в бой идут сами, то есть игрок не вторгается в процесс их «мышления».
Изображение 1
1. Крепость. Основная цель для противника. Игроку предстоит уничтожить вражескую крепость защитив свою.
2. Рудник. Приносит золото, на которое нанимаются и улучшаются юниты. Его можно улучшать. Каждый новый уровень рудника добавляет +1 золота в секунду.
3. Вышка. Защищает базу. Изначально всегда у игрока все вышки нейтральные. Их можно перестроить в другие, более эффективные, а так же улучшать и ремонтировать. Все затраты на вышку частично даются игроку уничтожившему её.
4. Точка постройки барака. На выбор даётся 4 барака, в которых игрок нанимает и улучшает юнитов. Каждый барак способен держать по две очереди найма.
Помимо всего есть дополнительная магия, а так же прокачка вне игры.
Магия:
[Изображение 2]( http://storage2.static.itmages.ru/i/15/1007/h_1444208565_2662286_9110fa6e11.png)
Метеоритный дождь. Наносит периодически урон вражеским юнитам попавшим в его радиус поражения.
[Изображение 3]( http://storage4.static.itmages.ru/i/15/1007/h_1444208632_1449607_a3949d42d7.png)
Лечение. Восстанавливает определённое количество ХП дружественным юнитам в выбранной области.
[Изображение 4]( http://storage3.static.itmages.ru/i/15/1007/h_1444208619_8179957_b6c94447ab.png)
Временной купол. Снижает скорость передвижения и скорость атаки всех юнитов попавших в его область действия.
[Изображение 5]( http://storage8.static.itmages.ru/i/15/1007/h_1444208727_3967751_7e44f8ad54.png)
Взрыв. Применяется по нажатию на крепость. Уничтожает всех юнитов в окрестности крепости.
Исходя из своего опыта, я бы разделил разработку игры на некоторые составляющие:
1. Графическая;
2. Интерфейс;
3. Игровая логика (геймплей);
4. Сетевая часть;
5. Искусственный интеллект;
6. Звук;
Из этих пунктов я выделю самые сложные, к которым ним относятся: Искусственный интеллект и Сетевая часть. Сложность заключается в том, что эти вещи требуют хорошей проработки. Так как у нас игра в стратегическом плане, то количество юнитов на карте может достигать 50, 100, 200 шт. Здесь просто требуется хорошо поработать над оптимизацией. Игровой ИИ в нашем жанре можно так же разделить на части:
1. Стратегический ИИ (интеллект противника, который заменяет нам вражеского игрока);
2. Интеллект юнитов.
С первым всё не так сложно, достаточно посидеть и подумать над его тактикой на разных уровнях сложности. Тут в принципе оптимизировать нечего, так как он всего лишь должен просматривать свой запас ресурсов, и исходя из этого, просто нанимать или улучшать юнитов. А вот со вторым всё несколько сложнее. Его логику так же можно представить в виде двух компонент:
1. Поиск пути;
2. Поведение;
Поиск пути.
Пожалуй, это самая сложная часть интеллекта. Помимо того что нужно выбрать подходящий алгоритм, так его еще нужно качественно подстроить под механику игры. Сразу подчеркну, что в стратегиях алгоритмы поиска пути требуют не мало времени на расчёт маршрута из точки А до точки B. Один из таких алгоритмов А*. Но для подобного проекта как Field Of Honor я обошёлся и без сложных алгоритмов, и использую «самописный» метод. Путь просчитывается за каждый кадр, так скажем, только на один шаг вперёд.
Поведение.
Сюда входит обнаружение цели, поиск следующих целей, а при помощи алгоритма поиска пути юнит движется куда нужно. Так как у нас основная задача разрушение вышек и вражеской крепости, то юнит и стремиться дойти пройти все вражеские вышки друг за другом, просматривая всех близлежащих юнитов врага.
Что касается сетевой части. Сложность заключается в оптимизации трафика и синхронизации. Под первым подразумевается уменьшить объём данных передаваемый по сети. Под вторым – заставить всех клиентов видеть максимально точно всё то, что происходит на сервере, причём в один момент времени. Первый и второй моменты несколько противоречат друг другу. Уменьшение объёма передаваемых данных, даёт меньше информации клиенту об происходящем на поле боя, от этого проблемы с синхронизацией клиентов и сервера.
Есть одна особенность, касающаяся сетевой части – система доната. В игре будет доступна покупка игровой валюты за реальные деньги. За кристаллы можно купить улучшения в ветках прокачки. Сложность заключается в безопасности всех операций. Как только игрок тратит деньги на игру, он сразу же должен получить то, что покупал. Иначе, сложится негативная оценка об игре, если это ещё и не прировняют к мошенничеству. :)
Немного об геймплее. Изначально продумывается на черновике. Можно, конечно, разрабатывать игру придумывая всё по ходу дела, но тогда вы будете натыкаться на подводные камни изобретённые вами же. Ещё стоит всегда брать на будущее возможность расширения проекта. Всегда стоит продумывать базу, то есть основу игровую. Фундамент, который вы сможете использовать в других проектах.
Графическая часть. Это по большей мере работа дизайнеров. Программист создаёт шейдерную часть, занимается оптимизацией рендеринга. В общем, основная задача – это выдать красивую картинку на слабых устройствах. Так как мы ориентируемся на мобильные платформы, то требований на порядок больше, чем на ПК. Здесь требуется согласоваться с дизайнерами, дать знать им в каком разрешении должны быть текстуры, сколько частиц использовать в спец эффектах и т.д.
[Изображение 6]( http://storage1.static.itmages.ru/i/15/1007/h_1444208856_4247856_ca2217dd92.png)
Как мы добились такой картинки? Согласованность и прямые руки дизайнеров ! :)
Интерфейс. Изначально дизайнеры рисуют макет интерфейса, предлагают как оживить его в плане анимаций. Программист программно реализует события нажатий кнопочек, дёрганий ползунков и т.д. Несмотря на простоту интерфейса, это достаточно кропотливая работа. Вёрстка немало времени отнимает, так же необходимо тщательно тестировать его, создавая все возможные ситуации.
[Изображение 6]( http://storage2.static.itmages.ru/i/15/1007/h_1444208887_2126510_4481376688.png)
И последняя составляющая – это звук. Со звуком в программной части всё не так сложно. Есть звук, есть событие (удар мечём, нажатие кнопки и т.п), событие сработало, звук воспроизвёлся. Тут по большей мере сложности возникают у того кто пишет звуки. Ему требуется добиться качества, что в домашних условиях не так-то и просто.
Проект, хочу сразу отметить, разрабатывается на движке Unity 5, без каких либо пока финансовых вложений. Каждый работает у себя дома, грубо говоря - проект собран «на коленках».
В финансовом плане, потребуется оплата аккаунтов в Google Play, App Store и аренда серверов, так как игра будет включать в себя онлайн режим.
Заключение.
Несмотря на все трудности, их вполне удаётся преодолевать. У нас большие планы на будущее. Этот проект лишь маленький стратап для нашей команды. Все свои идеи мы готовы реализовать хоть сидя в гараже, пусть даже ни одна из задумок себя не окупит, мы получаем и будем получать уйму удовольствия, разрабатывая игры.