36,37. Òâàðè ñòðåëÿþùèå - Ôîðóì HeroesWorld-à

Áûñòðàÿ íàâèãàöèÿ ïî îñíîâíûì ðàçäåëàì ôîðóìà:
Òóðíèðû
ÊÀÐÒÛ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Heroes: "Íîâûå èäåè" Íîâûå èäåè Heroes Of Might And Magic îò Alex_soldier-à.

Îòâåò
 
Îïöèè òåìû
#1
Ñòàðûé 13.11.2006, 13:31
  #1
^
Alex_soldier
 
Àâàòàð äëÿ Alex_soldier
📖
Ðåãèñòðàöèÿ: 20.03.2006
Àäðåñ: Ìîñêâà
Ñîîáùåíèÿ: 74
Ðåãèñòðàöèÿ: 20.03.2006
Àäðåñ: Ìîñêâà
Ñîîáùåíèÿ: 74
Ïî óìîë÷àíèþ
36,37. Òâàðè ñòðåëÿþùèå

В этой теме слиты воедино целых 2 выпуска рассылки:

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 <= дальность).

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

Не обойдем стороной и магический аспект проблемы. Из Школы Магии воздуха - конечно же, "воздушный щит". Часть стрел просто сдует! И еще полезна будет Магия Иллюзий - заклинание "мерцать". В такой объект станет гораздо труднее прицеливаться! Возможно, не стоит пренебрегать и Школой Земли. Пусть "каменная кожа", кроме своего бонуса в рукопашной, дает еще небольшой шанс отразить стрелы. Из Разума вспомним про "меткость" - снижает штраф (ощутимо повышает дальность - см. ниже)!

В реальной жизни, по прошествии какого-то времени, самые обычные стрелки могут стать снайперами. Все дело в накопленном опыте. (Ведь теперь он будет начисляться как героям, так и монстрам). Пусть у стреляющих тварей изначально будет набор способностей, аналогичный геройскому, который тоже можно развивать. И вовсе не обязательно всем давать навык СНАЙПЕР. Кто-то может качать и [b]ОБОРОНУ[b/]. У магических созданий вообще может быть своя способность (например, РАЗУМ - вешают на себя "меткость"). Или любая другая школа магии с соответствующими спелами.

Ну так вот, с накоплением опыта, способности пойдут в рост, будут проявляться все более и более продуктивно. Особенно подробно хочу рассметреть навык СНАЙПЕР. Как вы думаете, какой эффект стоит в него заложить? +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 бонус дальности, что повлечет за собой первенство хода и чуть больший урон (по сравнению с "сородичами" на земле). Плюс к этому, башни обеспечат надежную защиту, так что к ним особо не подкопаешься, хотя, при желании, возможно все!

А мертвая зона - определяется личным пределом "дальнобойности"! В выпуске про "размер поля боя" я писал, что игрок сам выбирает, насколько близко он хочет подобраться к противнику. Можно начать бой, находясь еще на значительном удалении, где недруг вообще не сможет ничем достать. А пока стороны сближаются, неплохо заняться построением боевых порядков (навык ТАКТИКА - отдыхает)!

Добавлено через 12 минут
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 (в % на уровень заклинания).

Чтобы вы поняли, о чем это было вообще, приведу ссылку на 2 работающие модели (для браузера IE 4+).
Там нулевым идет классический вариант со штрафом и перемещениями, а под перым номером - мой улучшенный набросок, юнит может и бегать и стрелять, плюс учитывается дальность:
http://www.alex-world.nm.ru/models.htm
Alex_soldier âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò


Îïöèè òåìû



×àñîâîé ïîÿñ GMT +4, âðåìÿ: 03:21.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Ðóññêèé)

ßíäåêñ öèòèðîâàíèå    Top.Mail.Ru