Jump to content
Orange

Система здоровья и брони у обьектов

Recommended Posts

Вот уже второй год делаю свой ребукс, столкнулся с проблемой того как оформить систему здоровья и брони.

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

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

В чем проблема:
Я попросту не знаю на что привязать систему брони.

Сперва была попытка сделать систему материалов которая хранила бы значения брони для разных типов материалов, заодно количество здоровья определялось размерами и.т.п. Но эта система показалась слишком абстрактной

Второй попыткой являлось дропнуть нужду в материалах для кучи обьектов которым по большей степени плевать что их там атакует и скейлить их прочность банально количеством здоровья, вот у маленького ножа 25 хп, у стены 1000 хп. Теперь проблемой стал собственно тот факт что урон который наносят обьекты проходит полностью и урон который нужно нанести обратно атакующему обьекту не обо что считать. Единственный фикс проблемы к которому я могу прийти это основывать его на том какой процент от текущего здоровья обьекта был отнят и на основе этого наносить его атакующему айтему.

Мамины гейм дизайнеры приглашаются в этот тред, есть какие еще варианты которые стоит обыграть? или же попробовать довести до ума один из этих двух?

  • +Rep 1
Link to comment
Share on other sites

У тгшников есть armor на все ломаемые объекты где вся броня это тупо лист:

image.png.65885cf51255c0e72535d475ddda4f9e.png

По сути это представляет собой процент отражаемого (в никуда) урона. Также у объектов есть ещё есть такой параметр как damage_deflection, который полностью отражает весь урон ниже своего значения.

У атакующих штук, помимо обычного урона, есть ещё и armour_penetration, он уже даёт возможность уменьшать процент отражаемого урона до нуля, в зависимости от своего значения, но не влияет на damage_deflection.

Есть ещё флаги и прочая ересь с разными типами урона (BRUTE, BURN, TOX, etc).

С такой системой, конечно, можно возвращать весь отражённый урон в оружие и всё будет по справедливости. Правда, для игровых реалий стоит пересмотреть объёмы здоровья у объектов и оружия, чтобы после миссклика калаш не превращался в тактическую дубинку.

Link to comment
Share on other sites
2 часа назад, Orange сказал:

чёто там

где у тебя репу интербея посмотреть можно, там еще стволы с сишока второго были в арсенале и пискиперы как секурити

Link to comment
Share on other sites

>Ты можешь сломать что угодно чем угодно если инструмент для ломания может пережить нужное от него количество ударов по обьекту.

Вода точит камень. Вопрос прикладываемой силы. Можно бить руками по стене, наносить какой-то микроурон, но повреждать руки. А можно выстрелиться из пушки в стену и разложиться на липовый мед за один раз. Нужна прочность и сила. Еще более простой пример. Пуля. Ну можно попробовать загнать ее в толстый металлический лист молотком, но по факту заебешься, а из ружа она насквозь за миг прошьет этот лист. Но и в том и том случае пуле придет пизда.

 

Короче нужна просто сила удара, прочность материалов, масса и рассчитываемая из этого мощность урона по объекту и по себе. Вот как-то так я это вижу.

Edited by derven_drovyanoy
Link to comment
Share on other sites

Хотим оказуалить? Ок. Обычный урон можно считать произведением силы удара на массу, добавляем прочность.  Пример:

Нож
5 - урон
100 прочность

Стена
Прочность 200

Если прочность деленная на урон меньше прочности объекта деленной на наш урон
то эту разницу мы отнимаем от прочности объекта

100 / 5 = 20
200 / 5 = 40

40 - 20 = 20
100 - 20 = 80 прочности после первого удара

Узнаем во сколько раз объект прочнее нашего ножа, и делим на это число прочность которую отняли от ножа

200 / 100 = 2
20/2 = 10
200 - 10 = 190 прочность стены

Если прочность деленная на урон больше прочности объекта деленного на наш урон
то мы делаем все тоже самое только в обратную сторону.

Edited by derven_drovyanoy
"Причина редактирования"? Ебать, так можно?
Link to comment
Share on other sites
14 часов назад, REBOLUTION228 сказал:

А ГДЕ можно спрайты и звуки потрогать

Там же, к сожалению.

5 часов назад, derven_drovyanoy сказал:

>Ты можешь сломать что угодно чем угодно если инструмент для ломания может пережить нужное от него количество ударов по обьекту.

Вода точит камень. Вопрос прикладываемой силы. Можно бить руками по стене, наносить какой-то микроурон, но повреждать руки. А можно выстрелиться из пушки в стену и разложиться на липовый мед за один раз. Нужна прочность и сила. Еще более простой пример. Пуля. Ну можно попробовать загнать ее в толстый металлический лист молотком, но по факту заебешься, а из ружа она насквозь за миг прошьет этот лист. Но и в том и том случае пуле придет пизда.

 

Короче нужна просто сила удара, прочность материалов, масса и рассчитываемая из этого мощность урона по объекту и по себе. Вот как-то так я это вижу.

Я не согласен с тем что простые формулы являются оказуаливанием.

Причина из-за которой я впринципе откинул систему материалов, урон равняется скорости замаха умноженный на вес и так далее заключается в том же что я писал и в твоих тредах - симуляция плодит симуляцию, из замаха и веса растет длина и ширина обьекта которая делит полученные урон на свою площадь, там сверху можно площадь сравнивать с площадью цели, выводя урон пули с помощью её размера и скорости.

По большей степени я потерял чувство контроля над системой и откатил всё до ручного ввода значений каждому айтему, потому что так и так в них придётся вводить эти значения в той или иной форме, зачем усложнять жизнь.

В целом я стараюсь не наращивать количество переменных где логика может делать тоже самое даже с потерей доп информации.

4 часа назад, derven_drovyanoy сказал:

Хотим оказуалить? Ок. Обычный урон можно считать произведением силы удара на массу, добавляем прочность.  Пример:

Нож
5 - урон
100 прочность

Стена
Прочность 200

Если прочность деленная на урон меньше прочности объекта деленной на наш урон
то эту разницу мы отнимаем от прочности объекта

100 / 5 = 20
200 / 5 = 40

40 - 20 = 20
100 - 20 = 80 прочности после первого удара

Узнаем во сколько раз объект прочнее нашего ножа, и делим на это число прочность которую отняли от ножа

200 / 100 = 2
20/2 = 10
200 - 10 = 190 прочность стены

Если прочность деленная на урон больше прочности объекта деленного на наш урон
то мы делаем все тоже самое только в обратную сторону.

Я думал отражать конкретно урон который собирается нанести обьект по другому обьекту, дескать отделить друг от друга понятия прочности и урона. Таким образом нож с 5 урона и 100 прочности выдержит больше отражений чем меч с 50 урона и 100 прочности.

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

 

  • +Rep 1
Link to comment
Share on other sites
15 часов назад, Valtos сказал:

У тгшников есть armor на все ломаемые объекты где вся броня это тупо лист:

image.png.65885cf51255c0e72535d475ddda4f9e.png

По сути это представляет собой процент отражаемого (в никуда) урона. Также у объектов есть ещё есть такой параметр как damage_deflection, который полностью отражает весь урон ниже своего значения.

У атакующих штук, помимо обычного урона, есть ещё и armour_penetration, он уже даёт возможность уменьшать процент отражаемого урона до нуля, в зависимости от своего значения, но не влияет на damage_deflection.

Есть ещё флаги и прочая ересь с разными типами урона (BRUTE, BURN, TOX, etc).

С такой системой, конечно, можно возвращать весь отражённый урон в оружие и всё будет по справедливости. Правда, для игровых реалий стоит пересмотреть объёмы здоровья у объектов и оружия, чтобы после миссклика калаш не превращался в тактическую дубинку.

Блин кто-то всё еще хранит броню в каждом обьекте с помощью листа. . . информация которая будет храниться виртуально в каждом атоме должна разбиваться на мелкие переменные, если иначе нельзя, можно конечно еще в глобальные датумы типа материалов напихать пресетов, но такие списки нормально бьют по оперативной памяти.

По поводу самого функционала:
Для меня не очень приемлемым является факт того что у предмета есть возможность полностью проигнорировать урон, для этого просто можно какой-нибудь нодамаг флаг тогда лепить, а обьектам которые можно сломать такой порог не особо нужен имо.
В случае с тупым уроном у меня костылем прикручен импульс который отвечает за урон который одежда смогла проигнорировать и наносить его напрямую органу который она защищает.

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

Тоесть тот факт что мне ручками придётся писать урон для одеваемых обьектов меня устраивает, проблема заключается именно в том что писать значения брони для каких-либо структур это уже куда более абстрактная идея.

Link to comment
Share on other sites

А ведь действительно, получилась какая-то хрень. Получается чем больше урона у предмета, тем дольше он живет, хотя эффект по идее должен быть обратным. Нельзя создавать хрупкие и мощные предметы. 

Вот исправленный вариант, теперь вещи с большим уроном могут быть хрупкими. Под спойлером нижн тоже хуета, но по крайней мере вещи которые крепче ломаются медленнее, вещи которые хрупки — ломаются быстрее + есть небольшая зависимость от урона. Бонусом чем вещь более сломана, тем быстрее она ломается.

Спойлер

Нож
5 урона
100 прочности

Меч 
50 урона
100 прочности

Стена
200 прочности

Нож бьет стену

A = Прочность стены
Z = Прочность ножа
Y = Урон ножа
X = A / Z
J = Z / A

A = A - (Y + J)
Z = Z - (X + J + Y/Z)

X = 200 / 100 = 2
J = 100 / 200 = 0.5
A = 200 - 7 = 193
Z = 100 - 2,55 = 97,45

Меч бьет стену

A = Прочность стены
Z = Прочность меча
Y = Урон меча
X = A / Z
J = Z / A

A = A - (Y + J)
Z = Z - (X + J + Y/Z)

X = 200 / 100 = 2
J = 100 / 200 = 0.5
A = 200 - 50,5 = 149,5
Z = 100 - 3 = 97

Меч бьет нож

X = 100 / 100 = 1
J = 100 / 100 = 1
A = 100 - 51 = 49
Z = 100 - 2,5 = 97,5

Меч бьет нож (в драке меч бьется об нож)

X = 100 / 100 = 1
J = 100 / 100 = 1
A = 100 - 51 = 49
Z = 100 - 6 = 94

 

Edited by derven_drovyanoy
Link to comment
Share on other sites

Мне кажется что скорее всего реализую отражение урона через сравнение с нанесенным уроном и текущим здоровьем.

Что-то в духе:

Урон = 10
Здоровье цели = 100
Множитель = max(0,1 - Урон / Здоровье цели)

Урон по атакующему = Урон * Множитель

Подобное я сначала думал сделать для простреливания стен и прочего, но как замена броне обьектам которые не нужно носить тоже может сойти? 

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...