MAZUT GAMES

MAZUT GAMES 

Инди-разработчик

7subscribers

3posts

goals1
$0 of $317 raised
Реализация совместного проекта стратегии в жанре TD с командой вселенной IRON HEAVENS. После закрытия цели законченная игра будет в открытом доступе.

Механика стрельбы и укрытий

Тем временем, работа над проектом движется полным ходом и в намеченных планах была достигнута очередная веха. Игровые механики стрельбы юнитов и системы укрытий стали обретать конкретные очертания.

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

Особняком в их поведении стоит действие "addBullet". Как только в неотъемном магазине винтовки заканчиваются патроны, солдат противника заряжает новые патроны из обоймы и возвращается к своему поведению "найти и уничтожить".
Если в любой момент времени у солдата кончаются HP, он проигрывает анимацию смерти и становиться неактивен.

Так как септы играют "от атаки", на всех этапах кроме прицеливания и стрельбы, солдат будет совмещать свои манипуляции с движением к позициям. Пока строго прямо, логику поиска пути им еще не прикрутили :)

Как работает стрельба союзников?

Здесь в основе все тот же автомат конечных состояний. Отличия заключаются лишь в наличии действия "hide", позволяющему солдатам игрока укрыться по сигналу свистка и разветвлению с промежуточным шагом в случае гибели. В зависимости от того, погиб солдат стоя на земле или сидя в траншее, анимации будут отличаться. 
В остальном - все то же самое. В укрытие солдат залегает не сразу, а только когда закончит цикл "прицеливание-выстрел-перезарядка", если он его уже начал. Находясь в укрытии солдат игрока не может стрелять и перезаряжаться, но при этом и по нему огонь вести не будут. Укрыться солдат может лишь находясь в траншее, укреплении и т.п. На голой земле прятаться решительно негде.
Как работает механика укрытий?
На данный момент укрытия доступны лишь солдатам игрока. В будущем на поле боя появятся холмы и руины, которые будут защищаться наступающих Септентров. Артиллерийские снаряды также будут превращать своими взрывами поле боя в лунный пейзаж, оставляя воронки, которые будут давать некоторую защиту.
Каждый вид укрытий имеет свой процент защиты от стрелкового огня. Этот процент влияет на результат проверки - достиг произведенный выстрел солдата или нет.
Вот за эту проверку и отвечает представленный кусочек кода. Если что-то пытается нанести солдату урон, из вероятности попадания в 100% движок вычитает степень защищенности бойца укрытием. Если рассматривать это с точки зрения подкрепления реализмом: чем меньшая часть бойца выступает из укрытия, тем меньше вероятность что выпущенная врагом пуля попадет прямо в него.
Для добавления некоторой воли случая, шанс попадания ограничен в диапазоне от 5 до 95 процентов. Т.е. даже если цель стоит в чистом поле, есть шанс промахнуться мимо. Как и небольшой шанс попасть в цель лишь чуть видную сквозь амбразуру. И да, вам не показалось, вы такое уже видели. Если быть точным - в игре Battle Brothers :)

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

Зная эти сухие подробности, можно в полной мере оценить как оно работает геймплейно на примере следующих тестов.

Тест 1. Чистое поле
Исходные данные следующие: 5 бравых стрелковых отделений армии Черры без каких-либо фортификаций пытаются отбиться от противника, превосходящего их в числе. Соотношение сил 5 к 1. Шансов на победу никаких. Вопрос лишь в том, скольком им удастся продержаться.
ДИСКЛЕЙМЕР: Аккуратнее с громкостью звука. Стрелять начинают достаточно неожиданно и громко!

Результат: 10 храбрецов сдерживали натиск в течении 18.5 секунд.
Тест 2. Сомнительные фортификации
Исходные данные: Та же отчаянная десятка, но на этот раз расположенная в ходах сообщения, имеющих степень защиты 35%. Как это повлияет на время выживаемости?
Несмотря на то что удача явно была на стороне Септентров и практически все защитники пали от первых же залпов, последним удалось продержаться аж до 24 секунд. Не сказать что великий, но все таки результат!

Тест 3. Траншеи

Исходные данные: На этот раз стрелки Рахевера размещены в полноценных траншеях, дающих степень защиты в 65 процентов.

Результат: Почти 36 секунд! Не смотря на некоторую долю рандома в заложенных принципах, динамика явно положительная.

Тест 4. Пехотные укрепления

Исходные данные: 85 процентов защищенности бревенчатым укреплением. А что в итоге?
А в итоге практически 44 секунды. Обратите внимание, как мало за это время осталось от волны Септентрийцев. Эх, еще бы чуть-чуть, да с поддержкой артиллерии и пулеметов...

Что дальше?

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

Этим всем мы и займемся. Как будет что показать еще интересного - напишем новый пост.

За сим прощаюсь.

Турримонт должен быть разрушен!

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

Subscription levels1

Вольнослушатель

$1.27 per month
Доступ ко всем материалам: дневники разработчика, статьям о приемах и фишках в инди-разработке и т.п. Все по цене кофе "3 в 1"
Go up