Механика стрельбы и укрытий
Тем временем, работа над проектом движется полным ходом и в намеченных планах была достигнута очередная веха. Игровые механики стрельбы юнитов и системы укрытий стали обретать конкретные очертания.
Как работает стрельба противников?
Как работает стрельба противников?
В основе поведения противников лежит принцип автомата конечных состояний. Т.е. все действия каждого отдельного юнита можно описать в виде набор действий, между которыми он может находиться и условий перехода от одного действия к другом.
Как видно из диаграммы на рисунке, Септентрионские солдаты будут искать ближайшего к ним солдата игрока, целиться в него, стрелять, перезаряжаться и так круг за кругом.
Особняком в их поведении стоит действие "addBullet". Как только в неотъемном магазине винтовки заканчиваются патроны, солдат противника заряжает новые патроны из обоймы и возвращается к своему поведению "найти и уничтожить".
Если в любой момент времени у солдата кончаются HP, он проигрывает анимацию смерти и становиться неактивен.
Так как септы играют "от атаки", на всех этапах кроме прицеливания и стрельбы, солдат будет совмещать свои манипуляции с движением к позициям. Пока строго прямо, логику поиска пути им еще не прикрутили :)
Как работает стрельба союзников?
Здесь в основе все тот же автомат конечных состояний. Отличия заключаются лишь в наличии действия "hide", позволяющему солдатам игрока укрыться по сигналу свистка и разветвлению с промежуточным шагом в случае гибели. В зависимости от того, погиб солдат стоя на земле или сидя в траншее, анимации будут отличаться.
В остальном - все то же самое. В укрытие солдат залегает не сразу, а только когда закончит цикл "прицеливание-выстрел-перезарядка", если он его уже начал. Находясь в укрытии солдат игрока не может стрелять и перезаряжаться, но при этом и по нему огонь вести не будут. Укрыться солдат может лишь находясь в траншее, укреплении и т.п. На голой земле прятаться решительно негде.
Как работает механика укрытий?
На данный момент укрытия доступны лишь солдатам игрока. В будущем на поле боя появятся холмы и руины, которые будут защищаться наступающих Септентров. Артиллерийские снаряды также будут превращать своими взрывами поле боя в лунный пейзаж, оставляя воронки, которые будут давать некоторую защиту.
Каждый вид укрытий имеет свой процент защиты от стрелкового огня. Этот процент влияет на результат проверки - достиг произведенный выстрел солдата или нет.
Каждый вид укрытий имеет свой процент защиты от стрелкового огня. Этот процент влияет на результат проверки - достиг произведенный выстрел солдата или нет.
Вот за эту проверку и отвечает представленный кусочек кода. Если что-то пытается нанести солдату урон, из вероятности попадания в 100% движок вычитает степень защищенности бойца укрытием. Если рассматривать это с точки зрения подкрепления реализмом: чем меньшая часть бойца выступает из укрытия, тем меньше вероятность что выпущенная врагом пуля попадет прямо в него.
Для добавления некоторой воли случая, шанс попадания ограничен в диапазоне от 5 до 95 процентов. Т.е. даже если цель стоит в чистом поле, есть шанс промахнуться мимо. Как и небольшой шанс попасть в цель лишь чуть видную сквозь амбразуру. И да, вам не показалось, вы такое уже видели. Если быть точным - в игре Battle Brothers :)
Вычислив шанс попадания, игровой движок "кидает кубики", получая число от 0 до 100 процентов. Если "бросок кубиков" показал результат меньше, чем шанс цели укрыться от огня, цель теряет от своего здоровья величину урона, наносимого огнем врага.
Зная эти сухие подробности, можно в полной мере оценить как оно работает геймплейно на примере следующих тестов.
Тест 1. Чистое поле
Вычислив шанс попадания, игровой движок "кидает кубики", получая число от 0 до 100 процентов. Если "бросок кубиков" показал результат меньше, чем шанс цели укрыться от огня, цель теряет от своего здоровья величину урона, наносимого огнем врага.
Зная эти сухие подробности, можно в полной мере оценить как оно работает геймплейно на примере следующих тестов.
Тест 1. Чистое поле
Исходные данные следующие: 5 бравых стрелковых отделений армии Черры без каких-либо фортификаций пытаются отбиться от противника, превосходящего их в числе. Соотношение сил 5 к 1. Шансов на победу никаких. Вопрос лишь в том, скольком им удастся продержаться.
ДИСКЛЕЙМЕР: Аккуратнее с громкостью звука. Стрелять начинают достаточно неожиданно и громко!
ДИСКЛЕЙМЕР: Аккуратнее с громкостью звука. Стрелять начинают достаточно неожиданно и громко!
Результат: 10 храбрецов сдерживали натиск в течении 18.5 секунд.
Тест 2. Сомнительные фортификации
Исходные данные: Та же отчаянная десятка, но на этот раз расположенная в ходах сообщения, имеющих степень защиты 35%. Как это повлияет на время выживаемости?
Несмотря на то что удача явно была на стороне Септентров и практически все защитники пали от первых же залпов, последним удалось продержаться аж до 24 секунд. Не сказать что великий, но все таки результат!
Тест 3. Траншеи
Тест 3. Траншеи
Исходные данные: На этот раз стрелки Рахевера размещены в полноценных траншеях, дающих степень защиты в 65 процентов.
Результат: Почти 36 секунд! Не смотря на некоторую долю рандома в заложенных принципах, динамика явно положительная.
Тест 4. Пехотные укрепления
Исходные данные: 85 процентов защищенности бревенчатым укреплением. А что в итоге?
А в итоге практически 44 секунды. Обратите внимание, как мало за это время осталось от волны Септентрийцев. Эх, еще бы чуть-чуть, да с поддержкой артиллерии и пулеметов...
Что дальше?
Теперь, когда каркас системы можно считать готовым, нас ждет множество работы по доводке: добавление новых классов юнитов, выправление баланса системы за счет различных факторов (затрат на постройку различных укрытий, их уязвимости к артогню и т.п.), проработка алгоритмов поиска пути для волн противников, чтобы каждый бой не превращался в однообразный марш стройными рядами и т.п.
Этим всем мы и займемся. Как будет что показать еще интересного - напишем новый пост.
За сим прощаюсь.
Турримонт должен быть разрушен!
П.С. Маленьким дополнением, не влезшим в текст статьи, демонстрация работы механики укрытия войск по свистку. Обратите внимание, что после того как бойцы "нырнули", уже взявшие их на мушку враги некоторое время стреляют вдогонку. А как только бойцы встают в полный рост вновь, те кто еще не успел выстрелить в намеченную цель, ориентируются быстрее чем те, кто уже отстрелялся и перезарядился. Мы на эту ерунду убили порядочно времени, но именно такие мелкие детали меня в играх и привлекают :)
Что дальше?
Теперь, когда каркас системы можно считать готовым, нас ждет множество работы по доводке: добавление новых классов юнитов, выправление баланса системы за счет различных факторов (затрат на постройку различных укрытий, их уязвимости к артогню и т.п.), проработка алгоритмов поиска пути для волн противников, чтобы каждый бой не превращался в однообразный марш стройными рядами и т.п.
Этим всем мы и займемся. Как будет что показать еще интересного - напишем новый пост.
За сим прощаюсь.
Турримонт должен быть разрушен!
П.С. Маленьким дополнением, не влезшим в текст статьи, демонстрация работы механики укрытия войск по свистку. Обратите внимание, что после того как бойцы "нырнули", уже взявшие их на мушку враги некоторое время стреляют вдогонку. А как только бойцы встают в полный рост вновь, те кто еще не успел выстрелить в намеченную цель, ориентируются быстрее чем те, кто уже отстрелялся и перезарядился. Мы на эту ерунду убили порядочно времени, но именно такие мелкие детали меня в играх и привлекают :)
trencfare
iron heavens
турримонт должен быть разрушен
дневники разработчиков