Final Foe. О разработке сетевого мультиплеера на Unity
Final Foe. О разработке сетевого мультиплеера на Unity
3939

1. Что по нагрузке на хост? Насколько требования к железу растут для такие клиентов?
2. Что по поводу пинга и того, что у хоста явное преимущество за счёт нулевого пинга?
3. Что с читерством со стороны хоста?

4

1. Требования к железу для хоста растут. Потому что ему приходится обсчитывать и серверную и клиентскую логику. А другим игрокам - только клиентскую. На сколько именно - зависит от того, как именно устроена серверная логика. Скажу так - примерно 70-80% процессорного времени в игре занимает рендеринг, обсчёт физики, работа сборщика мусора. А на саму игровую логику остаётся около 20%. Расти будут только последние 20%, потому что только в этой части процессорной нагрузки между хостом и клиентом есть различия. Предположим, у хоста она будет 40%, а у клиента - 20%. Соответственно, 120% суммарной нагрузки для хоста и 100% суммарной нагрузки для клиента. Не такая уже большая разница. Но повторюсь, всё зависит от конкретной сетевой логики.

Более того, нагрузка на сеть тоже будет отличаться. У хоста пропускная способность должна быть выше. Если играют 4 игрока, то хост должен будет вести обмен с 3-мя игроками, а каждый из клиентов - только с хостом. В моей игре на сцене может быть до 60 персонажей. И у всех постоянно синхронизируется позиция, ротация, анимация и ещё куча всего. Иногда трафик у хоста может составлять, например, 3 Мбит/с. А у клиента раза в 2 меньше. Мои замеры были довольно грубыми, поэтому в этих цифрах я не уверен. Чем меньше синхронизаций - тем меньше пропускной способности требуется. Я проводил сетевые тесты вдвоём, втроём, вчетвером. Скорость интернета у меня не очень высокая. Тем не менее всё работает стабильно.

2. Пинг зависит от ряда факторов: удалённость между игроками, качество сетевого кода, качество сетевой инфраструктуры и т.д. Как я писал в статье - у хоста нулевой пинг, а у клиентов - нет. Соответственно, у хоста в любом случае будет преимущество. В моей игре Final Foe пинг обычно не более 100 ms, иногда меньше. Для PVE-кооператива это не критично.

3. Большинство игр типа "Хост-Клиент" рассчитаны на нескольких друзей, решивших вместе во что-то поиграть. Так что даже если игра соревновательная - было бы странно пытаться читерить. Заниматься реверсивной инженерией или чем-то вроде этого, чтобы заменять исходящие сетевые пакеты - чтобы победить своего знакомого в дружеской игре? Это бред. А если говорить про всякие MOBA или MMO-игры, то в них повсеместно используются выделенные сервера. Подключение "Хост-Клиент" не используется в современных соревновательных играх.

6

Ананасовые вопросы, аж жуть, словно на собеседование на сеньор-юнити-бекенд-разраба попал

1