Как реализовать асинхронный сервер TCP C#?

Начал писать игровой сервер, все бы хорошо но возникла проблема, из-за того что нагрузка планируется более 10к человек а некоторые данные не успевают обрабатываться на стороне клиента то возникают рывки либо вообще отказ обновлять данные на клиентах, логика моего сервера:
1. Подключение к серверу и рассылка всем клиентам о подключении.
2. Синхронизация позиций (отправляется каждый раз, когда игрок двигается)
3. Прием сообщений на стороне клиента и интерполяция старой позиции до новой.

Использую для отправки и приема BinaryWriter и BinaryReader.
Ссылка на сервер: https://yadi.sk/d/ta5pmIFWe_nbwg
Прошу вас помочь решить данную проблему либо подсказать в какую сторону копать.
  • Вопрос задан
  • 923 просмотра
Решения вопроса 1
@Kosyachoka
Новое поколение создателей "своих 10к ммо серверов" подросло? :) ну ок

Тср или удп выбирается в основном по критерию насколько динамичная будет эта "новая эпичная сага". Если стрелялка, то удп скорость компенсирует качество. Если это "убийца вов, л2" то тср, там важно чтобы действия клиента были доставлены от и к серверу. А затем конечно самое сложное - не бросить это дело через месяц оставаясь без прогресса и наблюдая лаги и глюки. Чтобы сделать игру плавной придется делать адаптивную логику которая будет учитывать задержки сети как на клиенте так и на сервере. Легче всего сделать сначала клиент который будет бегать независимо от сервера, а затем постепенно добавлять туда шаг за шагом контроль со стороны сервера, отточить движение, затем взаимоотношение с миром (удачи с синхронизациец физики), бой итд.
Вобшем не ты первый, не ты последний. Ждем шедевр. Я если че буду десять тысяч первый игрок ;)

P.S. по теме :) . смотри в сторону архитектуры на основе пакетов и очередей. Только так ты выстроишь масштабируемое взаимоотношение клиент-сервера которое не будет загинаться от 20 одновременных подключений
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
mindtester
@mindtester Куратор тега C#
делаю странные вещи..чаще на C#.. иногда за деньги
dotnet core rsignal смотрели? если нет, рекомендую
Ответ написан
@asdz
Наверное вам нужно реализовать сервер на основе UdpClient
Ответ написан
DenomikoN
@DenomikoN
.NET Developer
Уоу, для начала надо разобраться с потоками )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Мечел-Сервис Челябинск
от 60 000 до 140 000 ₽
ВЫМПЕЛ Москва
от 150 000 до 230 000 ₽
Mentalstack Санкт-Петербург
от 100 000 до 150 000 ₽
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект