Войти
ПрограммированиеФорумСеть

Серверная часть для масштабной MMORPG (17 стр)

Страницы: 113 14 15 16 17 18 Следующая »
#240
(Правка: 16:09) 16:09, 11 авг 2022

kkolyan
> вопрос баланаса между производительностью и безопасностью в играх часто
> решается в сторону производительности
Производительно в каждом пакете слать ID игрока и обрабатывать миграцию? Ну-ну.
> расскажи, коли есть что. скептически сотрясать воздух каждый может.
Нормальная авторизация, токен сессии и эхо запросы поддерживающие сессию. Автоматическая отправка запроса авторизации со стороны клиента при отсутствии на стороне клиента N секунд эхо/ответа на эхо от сервера. Игнорирование любых пакетов, от неавторизованных адресов кроме запросов авторизации на сервере.

#241
(Правка: 16:52) 16:45, 11 авг 2022

Dampire
резюмирую ты предлагаешь
1. слать полный айдишник сессии в каждом пакете.
2. слать лесом тех, у кого сменился апишник

где тут ноу-хау?
всем и так ясно что если хотелки по траффику позволяют включать в каждый пакет полный токен - то так и надо делать.
всем и так ясно что если можно слать лесом тех у кого свичнулся айпишник - надо слать.

Dampire
> Производительно в каждом пакете слать ID игрока и обрабатывать миграцию? Ну-ну.
да, если делать в лоб, то это уязвимость. не надо делать в лоб :)

#242
(Правка: 17:37) 17:28, 11 авг 2022

kkolyan
Как-то ты печально все резюмируешь.
1. В каждом пакете ID вообще не упал. У тебя есть сессия, у которой есть однозначная метрика - эндпоинт. Все пакеты приходят и маршрутизируются в рамках сессии. Сессию поддерживает эхо. В эхо можно слать ID, а можно и не слать.
2. Проблему смены IP решает автоматическое переподключение и решает эту проблему ненагруженное клиентское приложение, а не нагруженный сервер. Причем безопасно решает.
Ноу-хау тут никаких, так работает большинство нормальных сетевых решений. Ноу-хау деревенского разлива изобретаете тут только вы. Если бы вместо бесконечных срачей читали папирусы или хотя бы доклады, то не было бы и всего этого бреда на 14 страниц.

#243
(Правка: 17:40) 17:35, 11 авг 2022

Dampire
> В каждом пакете ID вообще не упал
PeerId нужен, скажем ENet шлёт в каждом пакете и даже в открытом виде, и нумерация тупо от нуля до макс подключений
иначе за O(1) ты не поймёшь от кого пакет

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

#244
17:43, 11 авг 2022

#!
В реальном проекте так и так придется маршрутизировать данные из пакета. Один лукап в хешмапе мало что сможет изменить, но может ощутимо сократить объем трафика на сервере, если куча мелких пакетов гоняется. Как и везде трейдофф BW/CPU.

#245
(Правка: 17:52) 17:48, 11 авг 2022

Dampire
> В каждом пакете ID вообще не упал. У тебя есть сессия. Все пакеты приходят в рамках сессии. Сессию поддерживает эхо. В эхо можно слать ID, а можно и не слать.
а, понял. тогда мое решение с хэшами хрень, да)

Dampire
> Ноу-хау деревенского разлива изобретаете тут только вы. Если бы вместо бесконечных срачей читали папирусы или хотя бы доклады, то не было бы и всего этого бреда на 14 страниц.
как будто что-то плохое. напомню, здесь бурно обсуждается реализация экшн-баталии 500х500. серьезно ожидал увидеть тут профессионалов? :)

#!
> расскажи как клиент может определить свой внешний IP?
а зачем? просто просто переподключится при дисконнекте.

#246
17:49, 11 авг 2022

#!
> расскажи как клиент может определить свой внешний IP?
Например web-реквест к сервису по определению адреса. Зачем ему знать свой IP? 30 секунд сервер не отвечает ни на один эхо, сессия оборвалась, подрубись заново с условным логином-паролем/ClientID/???. Дальше уже логика сервера. Новая сессия, поиск старой по креденшелам, если сервер любезно придержал ее.

#247
17:53, 11 авг 2022

kkolyan
> здесь бурно обсуждается реализация экшн-баталии 500х500
Проблема баталий 500x500 не в сетевом протоколе, а в менеджменте видимости. Даже упакованную в 16 бит позицию 15 раз в секунду ни один сервер не сможет обработать и разослать всем.

#248
18:00, 11 авг 2022

Dampire
> Проблема баталий 500x500 не в сетевом протоколе, а в менеджменте видимости.
менеджер видимости прошлый век. Надо в группы объединять игроков которые дальше и их позиции передавать
группа+сдвиг, притом сдвиг раз в n фреймов, где n от расстояния зависит.

#249
(Правка: 18:09) 18:08, 11 авг 2022

Super_inoy
Тот же самый менеджмент видимости, только сбоку. RPC через какое количество раз ты будешь отсылать у юнитов в 100 и 1000 метрах от игрока? Видим каждый 3 прокаст в 100 метрах и каждый 10 в 1000? Что будешь делать, если надо не только позиции синхронить, но и ауры и эффекты? Тоже раз 10 кадров, когда мне например нафиг не упало знать о том какая там аура у того эльфа в 100 метрах, которого я даже затаргетить не могу.

#250
18:21, 11 авг 2022

Как самый простой и лежащий на поверхности вариант - spatial структура, чтобы сервер не разложился на рассчетах, где каждая ячейка имеет свой тикрейт в зависимости от позиции игрока и уровень детализации сообщений/данных. На дальних синхроним позиции/скорости с тикрейтом раз в пол часа, на ближнем обрабатываем все RPC, максимальный тикрейт и максимальный набор данных. Чем это не менеджемент видимости я хз.

#251
(Правка: 19:21) 19:20, 11 авг 2022

Dampire
> но и ауры и эффекты?
Ауры и эфффекты надо считать на каждом клиенте отдельно, т.е. пересылать надо только применение с длительностью.
Приоритетно, всегда, пропускать то можно только позиции, а не действия. А если потом данные расходятся - логировать и банить.

#252
(Правка: 20:06) 20:05, 11 авг 2022

Super_inoy
> Приоритетно, всегда, пропускать то можно только позиции, а не действия. А если потом данные расходятся - логировать и банить.
Удачки. Как сделаешь потом расскажешь, не прилег ли клиент от объемов расчетов.

#253
(Правка: 21:32) 20:12, 11 авг 2022

Dampire
> 30 секунд сервер не отвечает ни на один эхо, сессия оборвалась, подрубись заново с условным логином
Это проблему не решает, 30 секунд для игры - очень много, все планы игрока уже нарушены, все проиграно, с таким же успехом можно просто выкинуть.
Но ведь адрес может меняться у игрока, но не у сервера. Для сервера вы уж как-нибудь выбьете фиксированный IP.
Если соединение по tcp, оно через 30 секунд отсутствия связи само оборвется, для этого не надо прилагать никаких усилий.
Если по UDP - можете делать что хотите, на ходу подменять адреса на сервере. Обнаруживаете, что пришла какая-то левая посылка, приводите в соответствие. Клиент же постоянно что-то шлет серверу, не будет задержки даже в секунду.

#254
20:14, 11 авг 2022

Zab

+ Показать
Страницы: 113 14 15 16 17 18 Следующая »
ПрограммированиеФорумСеть