Форум » Расы и Юниты » 36,37: Твари стреляющие и их параметры » Ответить

36,37: Твари стреляющие и их параметры

Alex_soldier: 10.07.2003 - № 36: Твари стреляющие Сегодняшняя тема призвана "пролить свет" на оставшиеся неясными моменты, касающиеся стрелковых юнитов. Хочу сразу их обозначить: дальность стрельбы, точность и промахи, наносимый урон, прокачка до снайперов, стрельба со стен. Вот какие противоречивые мнения мне довелось услушать: plaguer: Для стрелковых юнитов ввести параметр дальность стрельбы. Арбалетчики должны стрелять существенно дальше лучников, не говоря о титанах, у коих рост уже говорит о большой дальности броска. Толик: На счет стрельбы лучников. На дальнем расстоянии можно сделать не только уменьшение урона, но и какой-то небольшой шанс промазать. Ведь они же тоже люди? Лучники должны стрелять горазда дальше арбалетчиков, но при этом, арбалетчики должны наносить больший урон. У лучников должен быть довольно большой диапазон урона, например 2-10, а у арбалетчиков более узкий, например 6-8. В четвертых героях у главных персонажей появился новый параметр - радиус действия. Если делать юнитов и героев по единому шаблону (а я так и хочу), то у обычных монстров он, в большинстве своем, "простаивает". Вот его-то и нужно автоматом задействовать всем стреляющим! Пусть он ограничивает зону поражения, задает предел личной дальности для каждого вида стрелков. Когда речь идет о стрельбе, то становятся актуальной такая вещь, как точность. Чем дальше цель, тем труднее в нее попасть и тем выше должна быть "квалификация" нашего "снайпера". Квалификацию мы рассмотрим чуть ниже, а вот с промахами надо разобраться. Согласитесь, не может быть такого, чтобы промахнулся целый стек воинов одновременно! Хоть один-два, да попадут. Т.е. если по цели сделан выстрел, какой-то урон она получит в любом случае. Вот только какой? Из курса физики мы помним, что негативный эффект могут оказать следующие факторы: уменьшение углового размера цели (приводит к погрешностям при нацеливании) и снижение убойной силы (за счет сопротивления воздуха). Напрашивается вывод: за каждую дополнительную единицу расстояния часть повреждения теряется. До предела досягаемости "долетает", допустим, ~10%. Закон, по которому определяется эффективность выстрела, получится весьма "хитрым": толи парабола, толи гипербола. Думаю, это как раз тот случай, когда стоит пожертвовать реалистичностью ради играбельности и простоты. Да ни один игрок не станет сидеть и высчитывать величину урона цели по какой-то навороченой формуле. Пусть будет линейная зависимость! Итак, пример. У лучника (не буду уточнять, у какого) дальность=8. 1 клетка: 50 % (штраф ближнего боя) 2 клетки: 100 % урон (рассчитывается как базовый) 3 клетки: 85 % от базового урона 4 клетки: 70 % от базового урона 5 клеток: 55 % от базового урона 6 клеток: 40 % от базового урона 7 клеток: 25 % от базового урона 8 клеток: 10 % от базового урона Здесь на каждую клетку, начиная со второй, приходится уменьшение эффективности на 15 %. Формула получается до крайности простая: (100 % - 10 %)/(8 - 2) = 15 % В числителе дроби все время фигурирует 90% (очень удобно - хорошо делится на все числа до 7), а в знаменателе - (дальность - 2). Вывод: стреляющим юнитам надо назначать дальность из ряда чисел: 3, 4, 5, (6), 7, 8, (10), 11, 12, (14), 17, (((18))), 20, (22)... Реально же значение должно быть в пределах от 4 до 20. Взятые в скобки числа делятся не совсем нацело. Итоговая формула урона: DM = DM(базовый) * (1 - 0.9 * (L - 2)/(дальность - 2)), где L - расстояние до цели (2 < L <= дальность). Теперь, как расчитывается наносимое повреждение (базовый урон). Я все больше склоняюсь к мысли, что он должен зависеть сразу от двух величин: параметр дистанционной атаки у нападающего юнита, и параметр "чувствительности" к подобным атакам у обороняющегося. Т.е. для рукопашного боя своя пара атака/защита, для перестрелки - своя. Параметр защиты от выстрелов - это и умение уклоняться от стрел, и особенности брони юнита - все в одном. Не обойдем стороной и магический аспект проблемы. Из Школы Магии воздуха - конечно же, "воздушный щит". Часть стрел просто сдует! И еще полезна будет Магия Иллюзий - заклинание "мерцать". В такой объект станет гораздо труднее прицеливаться! Возможно, не стоит пренебрегать и Школой Земли. Пусть "каменная кожа", кроме своего бонуса в рукопашной, дает еще небольшой шанс отразить стрелы. Из Разума вспомним про "меткость" - снижает штраф (ощутимо повышает дальность - см. ниже)! В реальной жизни, по прошествии какого-то времени, самые обычные стрелки могут стать снайперами. Все дело в накопленном опыте. (Ведь теперь он будет начисляться как героям, так и монстрам). Пусть у стреляющих тварей изначально будет набор способностей, аналогичный геройскому, который тоже можно развивать. И вовсе не обязательно всем давать навык СНАЙПЕР. Кто-то может качать и ОБОРОНУ. У магических созданий вообще может быть своя способность (например, РАЗУМ - вешают на себя "меткость"). Или любая другая школа магии с соответствующими спелами. Ну так вот, с накоплением опыта, способности пойдут в рост, будут проявляться все более и более продуктивно. Особенно подробно хочу рассметреть навык СНАЙПЕР. Как вы думаете, какой эффект стоит в него заложить? +5 % урон? Как-то неинтересно. А что, если +1 к радиусу действия? Тогда, во-первых, юниты начнут стрелять дальше и дальше, во-вторых, штраф дальности "подтянется", улучшаться показатели стрелка. Пример. Лучник стреляет на 8 клеток (до врага долетает лишь 10%). А теперь он подкачал 3 уровня: 1 - 0.9*(8-2)/(8-2+3) = 0.4 = 40 % Если ему посчастливится дотянуть до максимума (10-й уровень), то результат будет ошеломляющим: 1 - 0.9*(8-2)/(8-2+10) = 66.25 % И это на пределе-то дальности! Разумеется, на поле могут быть препятствия в виде стен или естественных преград, но не будем портить себе праздник! Пусть дополнительно накладывают штраф. Вот и получается, что сравнение стреляющих юнитов между собой станет не такой уж простой и однозначной задачей. Если перед нами стоит выбор: взять метателей с 10-й дальностью, или арбалетчиков с 7-й. Вначале, метатели покажут лучший результат, но, буквально через 3 уровня они сравняются, а потом арбалетчики начнут рулить! (Предполагается, что у метателей нет никаких бонусов к дальности, а у арбалетчиков - наш знакомый навык СНАЙПЕР). Linx: Стрелки с башен попадают, как снайпера. Почему нельзя сделать безопасную зону? Ну, например, лучники стрелляют почти на все клетки, но две клетки в конце поля остаются, где и размещаются от попаданий лучников войска. Хотя если разместить на стенке войска героев (имеется ввиду лучников). И вот они бы били бы по всем войскам. Т.е. армия героя более тренированная, нежели замковые стражи. И вообще, в древние времена... Почти все обороняющиеся войска находились на стене, и оттуда атаковали. Можно например сделать так, чтобы можно было бы в этих лучников попасть вашим лучникам, а то в прошлых героях сделали так, что башни остаются только катапультам. :-/// Я как-то предлагал всем башенным стрелкам всего-то дать +2 бонус дальности, что повлечет за собой первенство хода и чуть больший урон (по сравнению с "сородичами" на земле). Плюс к этому, башни обеспечат надежную защиту, так что к ним особо не подкопаешься, хотя, при желании, возможно все! А мертвая зона - определяется личным пределом "дальнобойности"! В выпуске про "размер поля боя" я писал, что игрок сам выбирает, насколько близко он хочет подобраться к противнику. Можно начать бой, находясь еще на значительном удалении, где недруг вообще не сможет ничем достать. А пока стороны сближаются, неплохо заняться построением боевых порядков (навык ТАКТИКА - отдыхает)! Опубликовано в рассылке «Heroes: Новые Идеи»

Ответов - 1

Alex_soldier: 01.09.2003 - № 37: Твари стреляющие & параметры Летом, работая над первыми прототипами моделей, я решил, в первую очередь, проверить последнюю тему "Твари стреляющие". Обо всех заморочках программирования на JS упоминать не стану. Скажу лишь, что это непередаваемое ощущение. Итак, схема простая: поле боя 10х10, гексагональная сетка, с одного края - лучник (в количестве 10), с другой - зомби (в том же составе). И звучит команда "Сближайтесь"!.. Но песня совсем не об этом. Программируя юнитов, я столкнулся с некоторыми техническими трудностями, которые весьма и весьма повлияли на отношение ко многим идеям. Главная из них - штраф ближнего боя! Раз за разом проводя схватку, отслеживая все перипетии сражения, сопоставляя силу ударов и ответов - пришел к поразительному выводу: это искусственное понятие и совершенно не оправдывает себя. Правильнее будет так: любой юнит - многогранная личность, поэтому и параметры должны учитывать все вариации. Для ближнего боя: - Уровень атаки - Уровень защиты - Максимальный урон - Минимальный урон - ... Для дистанционных атак: - Уровень дистанционной атаки - Уровень дистанционной защиты - Максимальный урон (дистанционный) - Минимальный урон (дистанционный) - Количество выстрелов - Дальность Для магических атак: - Уровень магической атаки (сила магии) - Уровень магических защиты (иммунитеты по школам) - Максимальный магический урон - Минимальный магический урон - Дальность - ... В зависимости от ситуации, будет использоваться актуальная персоналия. К примеру, лучники - отменно стреляют (2-3 DM), но подойдешь к ним - и все (1-2 DM)! Конечно, можно все списать на штраф, но ведь это не он. Просто в ближнем бою у них весьма скромные способности. То же самое, например, с кавалерией. Вблизи они сражаются, как черти, а вот дай такому воину лук... Он скорее сам застрелится (0-0 DM)! Аналогично и для магических созданий. Теперь о самом бое. Я реализовал одновременный удар (сначала вычисляются уроны, и только затем они вычитаются). Это верно лишь для рукопашной. Дистанционные и магические атаки проходят безответно (что вполне соответствует действительности)! При расчете урона, основным фактором (кроме базовых повреждений) является разность между парой характеристик: Уровнем атаки атакующего и Уровнем защиты обороняющегося существ. Эту разность я предлагаю использовать в качестве поправки (положим 3% на единицу разницы). Посмотрим, что это дает. При равенстве параметров наносится базовый урон DM = 10*(2...3) = 20...30 Лучник: RANGEATTACK 10, RANGEDM 2-3, КОЛИЧЕСТВО 10. Зомби: RANGEDEFENSE 5. Теперь же, наносимый дистанционный урон рассчитывается по формуле DM = 10*(2...3)*1,03^(10-5) = 23...35 Если лучники каким-либо образом повысят свой RANGEATTACK до 20, то DM = 10*(2...3)*1,03^(20-5) = 31...47 Зомби тоже могут быть защищены получше (RANGEDEFENSE 30): DM = 10*(2...3)*1,03^(20-30) = 15...22 Вот такие пироги. Кстати, для простоты, я не учитывал в этой схеме дальность (ведь убойная сила снижается пропорционально расстоянию до цели). Но из этого можно получить еще кое-что! Помните, не так давно я предлагал, чтобы стены можно было разрушать войсками (имеют свой HP и получают урон). Тогда встала задача - "защитить" их от коварных лучников! Теперь и она решена: надо просто дать им высокий RANGEDEFENSE (255). Посмотрим, что сделают те же лучники, но уже в количестве 1000 человек: DM = 1000*(2...3)*1,03^(10-255) = 1...2 И это правильно! Обычными стрелами каменную стену не прошибешь! Разумеется, будут и "необычные" стрелы (титаны, циклопы) с ужасающим RANGEATTACK ~100, но это уже другое (кто хочет, загрузите калькулятор и подсчитайте урон сами)! Кстати, Каменные горгулы, от которых отскакивают стрелы, будут сродни стенам! Далее. Как "наращивать" это самый RANGEATTACK? Можно - заклинанием "Точность" (+ сколько-то единиц временно), а можно - навыком "Стрельба из лука". Каждый его уровень повышает основную характеристику на +1 и дальность +1 (что тоже способствует увеличению урона). Итого: +10 МАХ (навык), +?? (заклинание), +?? (артефакты). Есть, куда расти даже простым смертным! На другую чашу весов положим RANGEDEFENSE. Прежде всего, важно "врожденное" значение. Затем - артефакты. И, для баланса, тоже магия. "Каменная кожа" - делает вообще тело крепче: +?? DEFENSE и RANGEDEFENSE одновременно. "Воздушный щит" и разные "Мерцающие Иллюзии" - все так же снижают уже конечный DM (в % на уровень заклинания). Опубликовано в рассылке «Heroes: Новые Идеи»



полная версия страницы