Как устроен игровой протокол передачи данных?
https://habrahabr.ru/post/209144/
https://habrahabr.ru/post/209524/
https://habrahabr.ru/post/213559/
Оригиналы:
web.archive.org/web/20190328001900/https://gaffero...
Дополнительные материалы:
web.archive.org/web/20190328001900/https://gaffero...
По этому поводу, в целом, советую почитать блог Гленна Фидлера.
Так же есть удобные библиотеки, которые сами собой отвечают на остальные твои вопросы:
https://developers.google.com/protocol-buffers/
https://capnproto.org/
игру CS:GO, ведь там ежесекундно отправляется over9000 пакетов данныхДаже космическая ракета вряд ли ежесекундно отправляет over9000 "пакетов" телеметрии. :)
Ни клиент CS:GO, ни сервер CS:GO на один сокет, и близко столько не передает и не принимает, какие-то тысячи можно насчитать только если пакетами считать TCP/UDP-сегменты, но это уровень ОС, а вас интересуют не эти пакеты, а буферы byte[], и если скажем подсчитать вызовы Berkeley's send() в секунду то не будет и сотен и даже десятков может не быть.
Собственно весь TCP-поток игры вы можете посмотреть с помощью сниффера, но вы же не дружите с инструментами отладки как я помню, поэтому можете еще пару нулей дописать к числу в вашей фантазии. :)Пакует ли клиент каждый пакет через новый экземпляр класса для упаковки?Разумеется, да, как и с HTTP-запросами, классы вроде System.Net.HttpWebRequest в принципе являются моделью данных пакета вроде POGO, а всю "грязную работу" с буфером byte[] класс берет на себя, это повсеместная практика что за вопросы.Читает ли каждый пакет сервер через новый экземпляр класса для чтения?
Аналогично.Либо это все происходит через 1 класс?
Да вообще всю игру пишут в одном классе а новый класс создают только когда IDE вместо номеров строчек начинает выдавать числа с экспонентой!
Попробуйте написать просто надежный клиент-сервер без всякого payload и обойтись 1 классом там и там, мой первый был именно таким и это ужас, хотя кому я...)))С наступающим Вас.
Если только с наступающим трудовым днем, я завтра работать буду в отличие от таких как вы.))))