|
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 51
|
|||||||||||
.NET 6 Задержка получения пакетов10.11.2023, 17:56. Показов 1438. Ответов 33
Метки нет (Все метки)
Всем привет. Есть игровой сервер, запущен с тикрейтом 70, получает от одного игрока примерно 62 пакета в секунду. Но возникае задержка в рассылке пакетов остальным игрокам, около секунды, а если убрать
0
|
|||||||||||
| 10.11.2023, 17:56 | |
|
Ответы с готовыми решениями:
33
Задержка пакетов UDP SharpPcap Перехват и задержка пакетов Программа для получения пакетов данных |
|
|
||
| 12.11.2023, 10:17 | ||
|
- нужно синхронизировать два(!) подключения. Т.е. когда первое отвалилось, нужно закрывать второе. Причем если TCP ещё худо-бедо понятно когда отвалится, то вот UDP всегда завязан на таймауте самописного ping-pong. У вас очень вероятно будет проблема что "отвилался чат" или "игра перестала отвечать, но чат работает" - TCP и UDP будут конкурировать друг с другом. Причем TCP это такой зверь, который на потери пакетов генерит дополнительный трафик. А потери пакетов, это очень часто когда в конкретном месте происходит перегрузка трафика, и выходит что ваш TCP будет по сути только усугублять проблему - две реализации ping-pong: внутренняя для TCP, от которой вы никуда не денетесь, и самописная на udp. Т.е. будете выполнять однотипное действие дважды, плюс трафик бонусом. - сокеты -- конечный ресурс на ПК. x2 сервере для двух протоколов не особо хорошее решение. Грубо говоря вы похерите всё преимущество UDP, при этом многократно усложнив код. При этом реализовать подтверждение на UDP несложно: добавляем уникальный индекс и после отправки ждем N ms подтверждение получения. Повторяем M раз, если нет -- выдаем ошибку. Не по теме: P.S. честно, без обид, но вам явно нужно сейчас не кодить, а читать кучу материала по том как всё это организовывать в играх. Пока явно видно что вы очень скудно разбираетесь в том, как работать что с TCP, что с UDP. Попытки интуитивно решить вопрос -- не всегда хорошо. Один только факт что вы хотите реализовать внутри TCP ping-pong... ну, это блин полный треш. Типа "я засунул мороженое в холодильник, а потом холодильник выкидываю на мороз, чтобы явно не растаяло".
0
|
||
|
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 51
|
|
| 12.11.2023, 10:25 [ТС] | |
|
Цикл приема уже разделил на два, для TCP и для UDP, там уже циклы не "молотят", насчёт комбинирования, услышал, видел, есть библиотеки Reliable Udp, так что прием данных не сложно изменить, ну схема с комбинированием вроде рабочая, SAMP написан на Raknet, а там как раз комбинируются протоколы
Добавлено через 1 минуту Пинг-понг всё-равно несет полезную нагрузку, в виде обновления данных о количестве игроков, пинге, серверном времени, думаю, что это не сильно большая проблема
0
|
|
| 12.11.2023, 10:40 | |
|
Не по теме: Ну, я пытался. Хотя если стоит задача повторить дyх gta online, где тот ещё треш в плане оптимизации и защиты от читеров -- данный подход имеет право на жизнь. :)
0
|
|
|
|
||
| 12.11.2023, 15:49 | ||
|
Если в сетевом пути существует узкое место, то оно равнозначно существует для обоих протоколов. В случае с TCP - протокол справится сам, со всеми своими пере-отправками. UDP - пакеты тупо будут потеряны, если не реализовано обратной связи на уровне приложения, что дополнительно вносит накладные расходы по времени.
На выбор влияет много факторов, в том числе размер посылки. Если он относительно не большой, то TCP выиграет в большинстве случаев. В любом случае, не понимая принципов этих двух вариантов и необходимой базы для их правильного использования в своем приложении - пользы не принесет ни тот ни другой.
0
|
||
|
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 51
|
|
| 12.11.2023, 16:42 [ТС] | |
|
Всё-таки стоит комбинировать два протокола? TCP нужен для чата, действий с диалоговыми окнами, создание, удаление машин и игроков вне зоны стрима, используется событийно и нет большого потока данных, пакеты весят до 100 байт, по tcp наверно пакетов 5 в секунду. Оставить два протокола или писать свой «надежный» udp?
0
|
|
|
|
||
| 12.11.2023, 16:52 | ||
|
Проникнись сперва теорией более углубленно и попробуй сделать выбор сам.
0
|
||
|
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 51
|
|
| 12.11.2023, 16:55 [ТС] | |
|
Ну тут пишут, что tcp будет трафик весь забирать, а вы наоборот, говорите, что если есть слабое место в сети, то скажется на оба протокола, мне от tcp нужна только гарантия доставки и доставка пакетов в правильном порядке, в таком случае лучше свой протокол писать поверх udp? Или же буду накладные расходы на уровне приложения?
0
|
|
|
|
|
| 12.11.2023, 17:07 | |
|
Unity123,
1. Никто не знает что ты там передаешь и получаешь обратно. 2. Неизвестна необходимая реакция участников на перебой с данными 3. Если сетевой радиус "улица/город" - один подход, если Москва - Австралия, другой. и пр. вещи... Если объем траффика ~100 байт да еще и с интервалами, описанными выше, то TCP за глаза, в обе стороны. Но, чувствую, и с этим будут проблемы, т.к. любые преимущества того или иного протокола можно легко запороть неумелыми действиями в своем коде, в связи с отсутствием знаний.
0
|
|
|
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 51
|
|
| 12.11.2023, 17:14 [ТС] | |
|
1. Передаются данные о чате, события посадки/высадки в авто, удаление и создание транспорта/игроков, ответы на диалоговые окна, и другие события, которые происходят не каждую секунду
2. Некоторым данным по типу чата при потере пакета нужно ждать, пока его переотправят, остальным нужна только гарантия доставки 3. Расстояния большие могут быть
0
|
|
|
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 51
|
|
| 12.11.2023, 17:26 [ТС] | |
|
Уеду, спасибо за внимание
Добавлено через 51 секунду Одно уже сделано месяца три назад, сейчас конкретно спрашиваю, как будет лучше
0
|
|
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 13.11.2023, 05:21 | ||
|
Для затравки я бы порекомендовал полистать книгу "Многопользовательские игры. Разработка сетевых приложений" - тут можно подсмотреть, как лучше дробить прикладную сетевую логику для оптимального быстродействия и пользовательского опыта.
0
|
||
|
1 / 1 / 0
Регистрация: 19.10.2021
Сообщений: 51
|
|
| 13.11.2023, 05:23 [ТС] | |
|
Интересно, прочитаю, спасибо
0
|
|
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||||
| 13.11.2023, 05:56 | ||||
|
Разрыв соединения проверяется только через получение пакетов с данными (Receive*-операции) с помощью try/catch. Добавлено через 27 минут
0
|
||||
| 13.11.2023, 05:56 | |
|
Приодический лаг во время получения UDP пакетов на Android Сокет для получения udp пакетов с определенным портом Получения пакетов "халявной" информации. Задача передачи пакетов данных: смоделировать процесс обслуживания 5000 пакетов Распараллеливание функции захвата пакетов libpcap и обработчика полученных пакетов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|