This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Регистрация урона на C#

Mr.Scalise

Специалист
7 Окт 2021
447
88
90
Всем ку, как сделать кастомную регу оружия на C#? К примеру чтобы ревик наносил 50 урона, а карабин 13 за попадание. Понимаю что много банальных вещей тут спрашиваю, однако только учусь и то что не знаю, спрашиваю вас, либо же рыскаю по форумам, вообщем вы меня поняли
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Так же, как и на JSе, отменяешь стандартный урон (не выпускаешь его с клиента), а далее на сервере считаешь нужные цифры, отправляешь в хп клиента.
 

Mr.Scalise

Специалист
7 Окт 2021
447
88
90
Через OnIncomingDamage, я правильно понимаю?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Через OnIncomingDamage, я правильно понимаю?

ЛИБО отменяешь весь входящий урон, либо отменяешь весь ВЫХОДЯЩИЙ урон, варианта 2. Я бы рекомендовал отменять именно второй вариант.
 

Mr.Scalise

Специалист
7 Окт 2021
447
88
90

frytech

Участник портала
15 Янв 2022
128
13
53

Я тут описал, нашел самый адекватный способ и самый рабочий
Можно ставить какой хочешь урон и при этом не навешивать костыли как на 5 рп с кастомными ивентами, которые идут через сервер
 

frytech

Участник портала
15 Янв 2022
128
13
53
При таком подходе будет лишняя нагрузка на сервер (каждый выстрел просчитывать) и по стандарту не будет реакции от игрока на урон (кровь и сама реакция), придется что то мудрить, гораздо проще урон просчитывать на клиенте игрока, который этот урон получает
 

FireFeed

⚡️Frontend Developer
Команда форума
Moderator
17 Дек 2020
200
66
127
20
но разве не могут перехватить executor'ом? и сделать урон 1к к примеру?
 

frytech

Участник портала
15 Янв 2022
128
13
53
но разве не могут перехватить executor'ом? и сделать урон 1к к примеру?
Он же написал, что на сервере считаться урон будет в таком случае, на сервер, очевидно, будет передаваться не урон, а кость, в которую произошло попадание, так что, максимум, что можно будет сделать, это экзекьютором всегда передавать кость - голова
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Вычислять что-либо и доверять клиенту - удел безумцев или дураков.
Ты не можешь позволить клиенту просчитывать что-то, что связано с критическими данными или другими игроками.
Если какая-либо система это лишняя нагрузка, то можно и систему домов удалить, и систему регистрации, да и рейдж в целом.

но разве не могут перехватить executor'ом? и сделать урон 1к к примеру?
Я и сказал, что ты отменяешь стандартный урон на клиенте и просчитываешь его на сервере.
 
Реакции: FireFeed

frytech

Участник портала
15 Янв 2022
128
13
53
Уверен?)

Кол-во хп, которое ты отправишь клиенту этот клиент сможет и сам подменить на любое угодное ему, хоть 0. Или же выдать себе хп, читы так то существуют на рейдж.
Вот если бы ты с клиента атакующего отправлял урон и его же назначал цели, тогда да, херня система.

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

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

FireFeed

⚡️Frontend Developer
Команда форума
Moderator
17 Дек 2020
200
66
127
20
а, забавно, я не увидел "на сервере считаешь"
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Я не знаю о каком хп ты говоришь и куда отправлять его надо. Либо ты меня не понимаешь, либо я тебя.
Система кастомного урона работала на редейдже с тех времён, когда он еще был популярен, проблем по этой части не замечено.
Читы существуют на всё, от этого давай не будем делать систему домов, а то телепорт по меткам существует и скупят с читами?
Доверять клиенту это плохо и ты поймёшь это, если поработаешь на каком-либо крупном проекте.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Уж извиняюсь, не могу запомнить все диалоги из всех веток.
"Отправлять в HP" можно по-разному. Можно на сервере, можно на клиенте, можно на сервере инвоуком.
Если ты говоришь о GMе, то его возможно применить при любой системе, хоть стандартного просчёта, хоть твоего, хоть еще какого угодно, это не тот случай, когда об этом нужно задумываться при создании подобной системы. Но просчитывать урон на клиенте игрока 1 для игрока 2 - это глупость, на мой взгляд.
 

frytech

Участник портала
15 Янв 2022
128
13
53
При чем тут система домов и система урона?) Дома хранятся на сервере, могут быть куплены другими игроками, содержат в себе мебель и прочие данные. Это, по сути, отдельные сущности.

А урон доверять клиенту можно, ты же не высылаемый урон доверяешь, а лишь получаемый. В этом есть большая разница. Ну и еще учти частоту выстрелов, бесполезная трата ресурсов, ей богу.
Вот и объясни давай, что страшного в том, чтобы доверить клиенту самому рассчитать себе урон, который он же и получит? Правильно, лишь то, что в теории, он сможет подменить получаемые данные и выдать себе урон 0. Но при таком раскладе и твой способ окажется непрактичным - чел просто может выдать себе гм и твой урон по нему так же не пройдет.
Только вот при твоем способе еще и сервер для чего то должен рассчитывать урон, а не сама жертва себе)
 

frytech

Участник портала
15 Янв 2022
128
13
53
Ты меня неправильно понял, на клиенте игрока2 для игрока2*
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Я сказал, что не стоит при создании любой системы исходить из того - можно ли это зачитерить. Всё, о чём я говорю - не стоит доверять клиенту для просчёта чего-либо важного.
Я не хочу спорить с твоим мнением, если ты считаешь, что так можно делать - вперёд, я останусь при своём мнении и могу допустить, что твой способ тоже может существовать.
 

frytech

Участник портала
15 Янв 2022
128
13
53
Я согласен с тобой, что важные данные доверять клиенту не стоит, это очевидно. Но урон) Ты ведь не просчитываешь урон при падении с высоты на сервере? Нет. Так же и с оружием.
Но хорошо, что ты от "Вычислять что-либо и доверять клиенту - удел безумцев или дураков." перешел к тому, что мой способ может существовать.
И твой способ может, просто мой эффективнее и, при этом, не опаснее для других игроков.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Не в обиду тебе будет сказано, но я скорее считаю, что что угодно может существовать.
Я бы на крупном проекте не стал использовать твой способ не проверив все потенциальные проблемы (и по итогу скорее всё равно решил бы оставить всё на сервере, имея возможность сохранять цифры, сверять с тем, что произошло по итогу и т.д, и т.п.).
Просто не хочу спорить, так как не интересно это стало совсем, да и я не считаю, что только моё мнение верное.
Вполне допускаю, что твой вариант по итогу может быть лучше моего, если всё проверить, включая тесты производительности и оценки рисков.
 
Реакции: frytech