@hwf672

Расскажите о оптимизации мультиплеера на ПК?

1. Меня интересует проблема отсутствия интерактивности с окружением( мебель, предметы быта, камни) в плане почему объекты статичны.
2. Какие нагрузки испытывает пользователь/сервер в таких случаях. С чем это в плане графики можно сравнить по нагрузке ( других ассоциаций у меня нет).
3. Какие способы оптимизации используются? ( в каком-нибудь DayZ окружение меняет модель/текстуру, на более низкое качество, почему они их вообще не отключают, на определенном расстоянии?)
4. Как устроена передача информации между сервером и пользователем. ( Скажем, упала кружка со стола, игроки видят, что она поменяла свои начальные координаты, но она у всех в разном месте, какого черта?)
5. Могут ли создать в ближайшее время многопользовательскую опен-ворлд игру с динамическими объектами, которые можно подбирать, бить ими, бросать их и т.д.
6. Что можно почитать на эту тему для юнити.
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 2
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
1. Чем статичнее предметы, тем меньше информации необходимо передавать между сервером и клиентом, тем меньше нагрузка на сервер и его пропускную способность, тем меньше "лагов" и "багов";
2. Клиент не испытывает никаких проблем. Сервер испытывает проблемы только если к нему подключено много клиентов и у каждого нужно просчитать множество информации. Из-за этого клиент дольше ждет пакет с данными от сервера и в игре, в зависимости от алгоритма просчета интерактивности, предметы игры могут телепортироваться или долго лежать на месте;
3. Графики на сервере нет. Там сплошные векторы и математика;
4. Есть различные алгоритмы. Например, если на клиенте всегда ждут ответа от сервера, то движение происхожит рывками (по мере поступления пакетов-ответов от сервера). Если же на клиенте стоит экстраполяция, то клиент вычисляет несколько шагов вперед и отрисовывает их, проверяя уже отрисованное по пакетам от сервера. Однако, если есть какое-то несоответствие, то со стороны клиента начинаются "телепортики";
5. Железо на серверах уже очень хороши и с расчетом огромных объемов данных проблем нет. Все дело в медленных каналах связи и их пропускной способности;
6. Много чего) Есть интересные статьи на том же хабре про то, как борются с медленными каналами связи в скоростных шутерах, как просчитывают полет пули и попадания по цели. Например, в том же overwatch headshot'ом считается приличная такая сфера вокруг головы.
Ответ написан
Комментировать
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Я не спец в игрострое, но попробую объяснить, как сам понимаю процесс. Пусть поправят гуру.
Информация о положении объекта, его свойствах, координатах и т.д. Храниться в клиенте и на сервере, соответственно, сервер и клиент обмениваются информацией в двухстороннем режиме (с задержкой связанной с интернетом и предусмотренной разработчиком). Соответственно, если 10 пользователей взаимодействуют с 1 предметом, допустим кружкой, одновременно, все тянут ее в разные стороны. Тогда должен быть алгоритм, который решает данный конфликт. В каждом игровом движке свои методы. Они по разному оптимизированы и баги связаны именно с оптимизацией. Допустим Ваш клиент прорисовывает Ваши действия на кружку, не связавшись с сервером, так как это чаще не нужно, посылает на сервер данные о изменении положения кружки. Но на сервере уже приняты изменения от другого игрока. И в ответ Вы получаете координаты, которые совершенно противоположны Вашим, Ваш клиент перерисовывает кружку согласно эталонным (пришедшим с сервера) координатам. И Вы видите, как у Вас в руках кружка пропала и появилась в другом месте. Что бы решить подобные конфликты, должен быть принципиально иной метод, отличный от сервер+много клиентов. Мир должен быть в 1 месте, а игрок должен быть объектом этого мира. Когда мощности компьютеров возрастут, наверное так и будет. 1 сервер, который продумывает все и рендерить кадры для каждого игрока в отдельности, а не возлагая эту функцию на клиент. Рассчитывая все силы и их векторы, которые действуют на объект.
По сути наш мир устроен именно так как Вы хотите, но для вычисления используется колоссальная мощность. Поэтому мы упрощаем некоторые вещи.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы