![]() Немного о броне в играх
#размышления #gamedev Обычно в играх есть два самых примитивных способа брони, унаследованные из бородатых игр прошлого: процентный и арифметический. Процентный - срезает процент входящего урона. Обычно, числа самой брони срезают всё меньше и меньше процентов, но где-то в районе 10.000 брони будет срезаться 99% урона. В точную механику вдаваться не буду, потому что сейчас разговор не об этом. Да и у разных игра она разная. Но больше всего мне симпатичен вариант из Доты, где каждая единица брони придаёт одно и тоже количество дополнительного эффективного ХП. Формула: Множитель урона=100/(100+Броня). Меньше всего - формула из НОММ 5, не интуитивная и непонятно зачем и почему сделанная. Мне процентный вариант не нравится тем, что обычный удар вилами таки пробивает шкуру дракона/танка. Арифметический - мы просто вычитаем из числа урона число брони. Простенько, и интуитивно понятно. Почти не используется игроделами, потому что высокая броня обнуляет атаку слабых юнитов. Но я вот думаю: разве это такой уж минус? Если у нас 7 рангов разных юнитов, почему бы юнитам высоких рангов не быть неуязвимыми для низких рангов? Крестьянин не пробьет шкуру дракона, а обычный солдат - назгула (особый юнит Дева с рунным мечом - в качестве исключения может))). В общем, пусть это требование будет граничным условием для некого идеального механизма брони. Второе граничное условие тоже очевидно: крестьянин никак не может заблокировать 20% урона от дракона. Казалось бы: бери уже такой тип брони и всё. Но давайте не будем спешить. Для начала давайте взглянем на интересную механику брони из "Rogue Legacy 2" (хороший рогилик, надо бы уже реку написать)). Я играл ещё в не русифицированную версию, и особо не вчитывался в описания, познавая механику практическим путём. И там сначала всё было довольно таки очевидно: повышаешь броню на 10, и полученный урон от врагов в первой локации снижается на те же 10 единиц. Тут мне было очевидно, что между тем, чтобы поднять хп на 10 единиц и поднятием брони надо выбирать броню. И всё было прекрасно, пока не началась какая-то непонятная фигня: повышаю броню, а враги дамажат также. Полез разбираться. Оказалось,там гораздо интереснее всё: атака вычитается от брони, только пока броня низкая, потом, вычитается не больше 33% от входящего урона. То есть формула: урон = атака - минимум(броня; атака*0,3). И в общем, сделано это было как раз таки для того, чтобы слабые юниты тоже были опасны. При этом, очевидно логичное развитие идеи - должны быть разные классы брони: легкие, средние и тяжелые, с, соответственно, разными процентами блокировки урона. Идея интересная и новая. Но для нашего идеального механизма брони не подходит, потому что опять таки: крестьянин пробивает шкуру дракона. Дальше у меня мысль гуляла очень причудливыми путями, описывать которые я не буду. Пересмотрел несколько вариантов, всякие экспоненты и прочее, но оно всё было крайне не интуитивным. В итоге остановился на варианте с вычитанием урона из вышеописанного рогалика, но с дополнением, что если урон меньше половины брони, то он обнуляется. ![]() Получается, сначала урон=0, потом по мере роста урона в некой точке график наклоняется вверх, но растёт медленно, потом, при преодолении брони (урон 50) график становится круче. Тут видно интересный момент. Поскольку мы вычитаем из входящего урона меньшее из двух чисел: броня или атака*0,5, то при росте урона броня "действует" до тех пор, пока урон в 2 раза не превысит броню. Только после этого каждая новая единица входящего урона никак не глушится броней и становится единицей заброневого урона. Я и раньше математически это понимал, но когда смотришь на графике, оно лучше понимается. Но тут глаз цепляет вот этот скачок вначале графика. И я даже не знаю, баг это или фича? Как думаете? 4 мая 2023
1 |
![]() |
|
Дева с рунным мечом только когда верхом на единороге.
|
![]() |
Jinger Beer Онлайн
|
Крестьянин с вилами против Т-90С.
Вы понесли урон: стыдно, удар ладонью по лбу. |
![]() |
|
Jinger Beer
И тут я вспоминаю цитату из одного интересного рассказа, про то, как (реалистично киборгизированная) кошка может победить современный танк. Снести приборы наблюдения и так далее, задолбать танкистов настолько, чтобы они полезли из танка с ручным оружием сбивать её с брони. |
![]() |
|
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ
Прочная. Но дракону, скажем, тоже ведь нужно дышать, так? Бронирование ли у него ноздри? Пасть? Анус? И так далее. |
![]() |
|
MonkAlex
А где речь про танк? Речь про дракона. Это такой намёк... Если летящему дракону засадить в мягкое пузико из ПЗРК...Драконов не существует, но я делаю допущения, что в целом вред нанести можно, пусть и мизерный. Комар человеку вроде тоже ничего не делает, но во первых может быть малярийным, а во вторых - очень большое число может нагадить кучей других способов. |
![]() |
|
StragaSevera
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ В анус нельзя, это слеш. А пасть дракона - это огнемет, хрен подступишься.Прочная. Но дракону, скажем, тоже ведь нужно дышать, так? Бронирование ли у него ноздри? Пасть? Анус? И так далее. |
![]() |
|
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ
MonkAlex То и юнит это другой, солдат с ПЗРК, а не крестьянин с вилами.Это такой намёк... Если летящему дракону засадить в мягкое пузико из ПЗРК... |
![]() |
|
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ
Забить ноздри говном, и он будет вынужден вдыхать пасть перед огнеметом. Тут и атаковать вилами. В реальном мире после превращения десятка крестьян в шашлык остальные разбегутся, моральная устойчивость низкая. Но если сбросить этот фактор... |
![]() |
Marlagram Онлайн
|
Дракон, дракон...
Крестьянин против носорога - без ловушек и автоматов, вот годная аналогия. В общем, лично у меня простые формулы "брони" вызывают хронический фейспалм. Надо бы реально моделировать урон, включая повреждение брони и заброневое действие даже при отсутствии пробития. |
![]() |
|
MonkAlex
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ А вдруг это дембель?То и юнит это другой, солдат с ПЗРК, а не крестьянин с вилами. Говорят, как-то в одном немецком городке заезжий фехтовальщик повздорил с пекарем и вызвал его на дуэль. Пекарь его убил. Возможно потому, что на булочную он заработал, прослужив 10 лет ландскнехтом. На двойном жаловании... |
![]() |
|
StragaSevera
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ Забить ноздри говном, и он будет вынужден вдыхать пасть перед огнеметом. Тут и атаковать вилами. В реальном мире после превращения десятка крестьян в шашлык остальные разбегутся, моральная устойчивость низкая. Но если сбросить этот фактор... Чтобы забить говном, надо приблизиться. Можно с криком "Банзай", белые повязки мужикам вроде нельзя, рылом не вышли. |
![]() |
|
Marlagram
Африканцы убивают слона просто копьями, без ловушек. С носорогом сложнее, но если опять же нет предела моральной устойчивости... |
![]() |
|
MonkAlex
Варкрафт 3 с его разными типами брони и урона. Там, насколько я помню, просто процент разный был для разных типов входящего урона, и при повышении брони он просто немного процентно поднимался, и всё.Таки не понял, почему броня дракона не пробивается крестьянами? Потому что шкура толстая. )))В условных героях их может быть тысяча. Ведьмаку хватило крестьянских вил, чтобы умереть. Не критический удар крестьянина должен наносить 0 урона. И поскольку у дракона как юнита 7 ранга брони дофига, то его броня явно будет выше чем удвоенная атака крестьянина, и та не пройдет. И тысяча нулей в сумме даст ноль. Что касается ведьмака, то это явно не высокоранговый юнит, так что крестьянами может быть убит, особенно, если крит прокнет. Имхо, как только появляются непробиваемые юниты, это усложняет геймплей. Ради чего - не увидел в посте. Ради тактической глубины и реализма. Вот не люблю я, когда копейщики уничтожают танк с одного удара (не критического). |
![]() |
|
MonkAlex
А где речь про танк? Речь про дракона. А дракон - это летающий танк. )))Я в целом про концепцию, что броню не пробить слабой атакой. Что крестьянин с вилами даже рыцарю броню не пробьет (не критом). А в играх запросто. То и юнит это другой, солдат с ПЗРК, а не крестьянин с вилами. А в играх именно что с вилами. ))) |
![]() |
|
StragaSevera
Прочная. Но дракону, скажем, тоже ведь нужно дышать, так? Бронирование ли у него ноздри? Пасть? Анус? И так далее. Ты о критах говоришь. Я о обычной атаке. А обычная атака не должна пробить. |
![]() |
|
Идея хорошей защиты дракона на самом деле в корне неверна. Про что мной сделана запись в блогах.
|
![]() |
|
Не, удачи с таким концептом. Но я в это играть не стал бы. Потому что в такой игре один дракон выпиливает любое количество юнитов, не способных его пробить.
Т.е. дракон - МС. |
![]() |
|
MonkAlex
Не, удачи с таким концептом. Но я в это играть не стал бы. Потому что в такой игре один дракон выпиливает любое количество юнитов, не способных его пробить. Используйте прокачанных юнитов, которые могут убить дракона: Дамблдора с заклинанием "Фумигатор".Т.е. дракон - МС. |
![]() |
|
Marlagram
Показать полностью
Дракон, дракон... Но в том-то и дело, что ранг дракона гораздо выше. Носорог, в лучшем случае 4-5 ранг, дракон - 7.Крестьянин против носорога - без ловушек и автоматов, вот годная аналогия. В общем, лично у меня простые формулы "брони" вызывают хронический фейспалм. Надо бы реально моделировать урон, включая повреждение брони и заброневое действие даже при отсутствии пробития. Это слишком сложно, дорого и неинтуитивно. Я про это думал, но почти никто не поймет, что там и как рассчитывается. Они будут просто смотреть на прогнозируемый урон и выбирать более выгодный без понимания (как это делает подавляющее большинство игроков в НОММ 5. Вот серьезно, сейчас полез вспоминать - правильно ли я помню, а большинство вики просто пишут "ну, защита - это модификатор урона". Охрененно.). А так, да, я прекрасно тебя понимаю. ))) Вчера глянул новую Age of wonders. Очень красивое начало - портальчик, через который игрок попадает в мир просто шедеврально нарисован. Видно, что они вложили кучу времени и сил в рисовку этого портальчика. Лучше бы в геймдизайн хоть чуточку вложили, блин, потому что там убогая концепция "сначала ходят все юниты одного игрока, потом все юниты другого". Играть в это убожество, естественно, не стоит. |
![]() |
|
MonkAlex
Не, удачи с таким концептом. Но я в это играть не стал бы. Потому что в такой игре один дракон выпиливает любое количество юнитов, не способных его пробить. То есть, всё как в книгах. Т.е. дракон - МС. И будет чувствоваться, что такой дракон силён. И что его не свалят 300 селян с вилами. Дракон - крайне сильный и ценный юнит. Вокруг которого выстраивается игра. И твоя и противника. И да, ты можешь отправить дракона веселиться и гоняться за мелочью противника по карте, но не расстраивайся, когда противник подготовит ловушку и убьет его. А потом нападёт на тебя своим юнитом этого ранга, против которого у тебя уже нет противовеса. |
![]() |
|
Asteroid
тогда балансируй такого дракона - он должен стоить бесценно дороже крестьян. Т.е. если крестьяне стоят 1 золотой, мечники-лучники 5, а какой-нибудь маг - 50. Дракон будет стоить минимум 300? И это же сразу портит баланс. Если противник рашит дракона, то надо или рашить в противовес или брать магов пачку. А если не догадался - то проиграл. И всё ради чего? Ради того, чтобы показать что "дракон силён"? Так силён - это атака-урон, а не защита и неуязвимость. |
![]() |
|
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ
StragaSevera Не факт.В анус нельзя, это слеш. А пасть дракона - это огнемет, хрен подступишься. С моей колокольни огонь из ноздрей )) |
![]() |
|
И вообще, полно игр, где рейтинг брони всего лишь шанс на попадание.
|
![]() |
|
экзистенциальная проблема крестьян и драконов решается критами
|
![]() |
|
от вилки в глаз никто не застрахован
|
![]() |
|
![]() |
|
Deskolador
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ И пердит чистым ипритом.Не факт. С моей колокольни огонь из ноздрей )) |
![]() |
|
Marlagram
Надо бы реально моделировать урон, включая повреждение брони и заброневое действие даже при отсутствии пробития. Ну вы же понимаете, что реалистичность здесь конкурирует с балансом/привлекательностью/удержанием у игромеха? |
![]() |
|
Asteroid
Я не согласен с твоим концептом. У меня подозрение, что ты уравниваешь Hit Points и физическое здоровье цели. А это далеко не так. Hit Points - это абстракция, показывающая среднее количество "ударов" до выведения из строя цели. Какой-нибудь эльфийский герой-фехтовальщик высокого уровня может иметь 1000 хп, и при этом не держать обычного удара мечом в корпус. Почему? Потому что его высокое ХП суть абстракция, показывающая, что он может уклониться и парировать 999 ударов мечом, пропустив лишь один - который его, как и обычного крестьянина, выведет из строя. Да, первые атаки крестьян не нанесут физического вреда дракона, как не нанесут они вреда и эльфу. Но, как и с драконом, так и с эльфом они создадут более благоприятную ситуацию для нанесения того самого, решающего удара, который и окажет влияние на здоровье цели. |
![]() |
|
MonkAlex
Показать полностью
тогда балансируй такого дракона - он должен стоить бесценно дороже крестьян. Дороже, конечно же, гораздо дороже. Даже в НОММ 5 он стоил дороже, 1500 годы, если не ошибаюсь.Т.е. если крестьяне стоят 1 золотой, мечники-лучники 5, а какой-нибудь маг - 50. Дракон будет стоить минимум 300? И это же сразу портит баланс. Если противник рашит дракона, то надо или рашить в противовес или брать магов пачку. Все будут рашить более высокие ранги. Низкоранговыми не вытащить. Для примера приведу Старкрафт, там можно победить зерграшем, но это редкий сценарий, почти всегда идут в более высокие ранги. И тот же дракон, он конечно может сьесть крестьян в любом количестве, но те же рыцари уже будут пробивать шкуру. А если не догадался - то проиграл. И всё ради чего? Ради того, чтобы показать что "дракон силён"? Ради интересной игры, конечно же.Над балансом я ещё не думал, но можно хотя бы классические камень-ножницы-бумага сделать: крестьяне толпой запинывают рыцарей, рыцари отрядом режут дракона, дракон жрёт любое колчество крестьян. Так силён - это атака-урон, а не защита и неуязвимость. Есть просто "силён", а есть когда чувствуешь - это нечто особенное. |
![]() |
|
StragaSevera
Если это наброс, то очень хороший. ))) У меня подозрение, что ты уравниваешь Hit Points и физическое здоровье цели. Правильно подозреваешь.Для простоты можно считать это также аурой из RWBY. Какой-нибудь эльфийский герой-фехтовальщик высокого уровня может иметь 1000 хп, и при этом не держать обычного удара мечом в корпус. Почему? Потому что его высокое ХП суть абстракция, показывающая, что он может уклониться и парировать 999 ударов мечом, пропустив лишь один - который его, как и обычного крестьянина, выведет из строя Уклонение - механика не тратящая хп. Парирование, где оно есть - тоже. Так что не подходит. |
![]() |
|
StragaSevera
хп, это примерно такая же абстракция, как и то, что конник и его конь одно целое: они умирают вместе, имеют одинаковое здоровье, броню и ОД - если конь побегал, то у человека уже нет сил ударить. ))) |
![]() |
|
Пытаюсь понять, отчего они начинаются с таких значений, и что-то вообще не врублюсь. )))
Хотя математическое образование вроде как есть. Но там загадочная полусфера/парабола откуда-то возникает. |
![]() |
|
А вроде бы, всё так просто начиналось. Просто берём, и вычитаем броню из урона. )))
Всегда у меня так. |
![]() |
Marlagram Онлайн
|
Вот про "крестьяне толпой рыцаря" надо очень того, осторожно. А то на практике оно скорее наоборот - если на толпу именно крестьян в поле, не путать с швейцарской пехотой и опытными ополченцами на подготовленной позиции (да ещё и со специализированным оружием), пустить рыцаря (точнее, рыцарское копьё, ибо нормальный "рыцарь" - не одиночный юнит) - то тут и 1 к 100 вполне.
До Кольта всё было печально, да. И у меня до сих пор пригорает от трирем, запинывающих линкор. Слабые начальные юниты должны страдать и полностью утрачивать смысл. |
![]() |
|
Marlagram
Показать полностью
Вот про "крестьяне толпой рыцаря" надо очень того, осторожно. Ну я ж так, грубо говорю. Вообще, градаций больше. У рыцаря тоже приличная броня по идее. Но конкретных чисел ещё нет.просто концепция: юниты каждого предыдущего ранга толпой запинывают юнита следующего ранга, но при этом, через ранг-два-три (нужное подчеркнуть) качество без проблем выигрывает у любого количества. не путать с швейцарской пехотой и опытными ополченцами на подготовленной позиции (да ещё и со специализированным оружием), По идее, в игре примерно такие и есть. Оружия и брони у них особо нет, но это почти проф. войска. По крайней мере, на посевную они отпуск не берут. )))До Кольта всё было печально, да. Не хочу отвлекаться от темы. Но. Оно и сейчас весьма шустро идёт к тому, что всё станет печально в этом плане.И у меня до сих пор пригорает от трирем, запинывающих линкор. ВООТ!!! Хоть кто-то меня понимает. Меня вот такая фигня уже просто заколебала в играх.Слабые начальные юниты должны страдать и полностью утрачивать смысл. Ну... в разведку их можно отправлять. Но в массовом количестве они не нужны, да. Особенно в всяких играх про, блин, развитие. |
![]() |
Marlagram Онлайн
|
Вообще, тут надо клепать многомерную матрицу. Потому что по хорошему, броня, хитпойнты, атака и далее по списку излишне упрощают ситуацию.
Есть набор пар, один вид юнитов атакует, другой обороняется (в рамках хода) - для всех возможных сочетаний и обстоятельств. Рыцарское копье делает чардж против не-укрепившегося ополчения в поле, сухая погода, у ополчения нет специализированного анти-рыцарского оружия - чек. Дракон атакует с воздуха огнем и магией рыцарский отряд без прикрытия лучников, магов, жрецов и опять-таки в открытом поле... 1 |
![]() |
|
Marlagram
Вообще, тут надо клепать многомерную матрицу. Потому что по хорошему, броня, хитпойнты, атака и далее по списку излишне упрощают ситуацию. Основы должны быть просты и интуитивно понятны. Поэтому только упрощение. Но такое, чтобы все граничные случаи и тенденции были соблюдены.Дракон атакует с воздуха Это вопрос скорее летающих юнитов. Потому что дракона рыцарское копье с чарджа тоже ваншотнет.В том же Варкрафте, игре фиг знает какого года, летающие, именно летающие, а не парящие в метре над землей, юниты, есть. В "современных" стратегиях - нифига. Это, по-хорошему всё, что достаточно знать о современных стратегиях. ))) 1 |
![]() |
|
![]() |
![]() |
Marlagram Онлайн
|
Надо быть ближе к реальности.
Шашка не прошибет миланский доспех вообще. Клевец при правильном применении - с одного удара. Моргенштерн может не пробить доспех, но его содержимому легче от этого не станет... 1 |
![]() |
|
Marlagram
Надо быть ближе к реальности. Но основы должны быть просты и интуитивно понятными. Это важнее в геймдизайне.Шашка не прошибет миланский доспех вообще. Клевец при правильном применении - с одного удара. Моргенштерн может не пробить доспех, но его содержимому легче от этого не станет... Это больше особенности оружия. При этом, заметь, эти правила простые, и технически они могут быть взяты за основу некой игры. Правда, скорее от первого лица. что-нибудь типа Mount&Blade (не знаю, какая там механика).Но мне больше интересны пошаговые бои, и тактические придумки. А вселенная больше фэнтези, поэтому такие особенности оружия - это слишком глубоко. Механика брони нужна максимально простая и очевидная, с единственным условием - соблюдать указанные в посте граничные условия. |
![]() |
|
Вроде как решил проблему - убрал скачок пробития брони, и таким образом опустил кривые вниз. Правда, теперь формула достаточно сложная. Хотя концепция даже попроще стала. )))
Уже завтра дообдумаю. |
![]() |
|
Исповедник
Показать полностью
Ну, допустим, сделают так, что урон от дракона по крестьянину резаться не будет. Так ведь этот урон и по рыцарю резаться не должен, если добавлять реалистичности. Какая драконьему пламени разница: сжигать человека без доспехов или запекать в доспехе? Огромная. Металл очень теплоёмкий. )))Правда, я сейчас считаю механику физ. атак. Про магию ещё не думал. А условный грифон будет просто давить врагов своей тушей. В НОММ 5 есть как раз такая атака с воздуха у грифонов. Она ещё с отложенным на ход приземлением. Абсолютно бесполезно против игроков.То есть нужно классифицировать не только типы брони, но и типы урона. Естественно. Это следующий шаг. Я просто до него ещё не дошел.Обычно все надстройки крутятся вокруг того, как устроены базовые вещи. Что делать с ХП? По юниту прошёл удар баллисты в живот, а он продолжает сражаться с той же эффективностью, что и в начале боя. Если это дракон или циклоп? А чтобы и нет? Примени к хп концепцию ауры из RWBY. Если это рыцарь... рыцаря размажет по полю. ))) Или с моралью? Некромант сгноил десяток бойцов, а остальные продолжают бесстрашно идти на смерть. Смерть отряда почти во всех играх дизморалит остальных. А вообще, как-то же в реале люди воюют при потерях. |
![]() |
|
Asteroid
Хз. На мой делитантский взгляд сделать по-настоящему реалистично, не похерив игровой процесс, почти нереально. Ну или это будет уже не пошаговая стратегия. И даже не не-пошаговая. |
![]() |
Jinger Beer Онлайн
|
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ
MonkAlex Вроде он извинился, когда узнал, что фехтовать учился по учебнику этого мастера?А вдруг это дембель? Говорят, как-то в одном немецком городке заезжий фехтовальщик повздорил с пекарем и вызвал его на дуэль. Пекарь его убил. Возможно потому, что на булочную он заработал, прослужив 10 лет ландскнехтом. На двойном жаловании... |
![]() |
|
Jinger Beer
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ Ландскнкехты на двойном жаловании книг не пишут.Вроде он извинился, когда узнал, что фектовать учился по учебнику этого мастера? |
![]() |
Jinger Beer Онлайн
|
ИзУмРуДнАяФеЯсЯхАнТыВыМиГлАзАмИ
Jinger Beer Значит, это был другой подобный похожий случайЛандскнкехты на двойном жаловании книг не пишут. |
![]() |
|
Asteroid
> Уклонение - механика не тратящая хп На разных уровнях абстракции по-разному. В тех же Героях 5, скажем, эльфийские фехтовальщики получают бонус к броне (т.е. проценту снижения урона) за каждую пройденную в бою клетку. Это именно что абстракция уклонения. Видимо, у нас разные парадигмы, поэтому я пойду из этого треда - исходя из неправильной посылки, можно использовать любые формулы, результат все равно будет неправильный ;-) Удачи тебе. |
![]() |
|
StragaSevera
В НОММ 5 броня и уклонение - это разные вещи, если не ошибаюсь. И защита - это точно не хп. Ты в кучу разные вещи смешиваешь. Видимо, у нас разные парадигмы С твоей непонятно - как дальше работать. Хп - это не хп, броня - это не броня. И что с этим можно делать - решительно не ясно. |
![]() |
|
Покрутил допиленную модель. Вроде бы всё отлично. Оставляю так.
Всем спасибо. |
![]() |
|
trionix
В принципе, самая годная формула Да я тоже, чем больше думаю, тем больше мне она нравится. )))Из простых формул, имхо, лучше сложно сделать. |