Interest Management

Документация о новой глобальной системе Interest Management.

Interest Management

При создании многопользовательских игр первый очевидный подход заключается в простой синхронизации состояния мира каждому игроку. По умолчанию это то, что делает Mirror, когда вы не используете какие-либо компоненты Interest Management.

Вместо того, чтобы отправлять полное состояние мира каждому игроку, стоит подумать о том, чтобы отправлять игроку только то, что находится вокруг игрока. Есть несколько основных принципов для interest management:

  • Размер: представьте себе World of Warcraft. Посылать весь мир каждому отдельному игроку было бы безумием. Чтобы масштабироваться до тысяч подключений, нам нужно отправлять только то, что имеет отношение к любому данному игроку.

  • Видимость: в такой MOBA-игре, как DotA / League of Legends, не все должны постоянно видеть друг друга. Игрок должен видеть только свою собственную команду и монстров вокруг себя. Не только для этого, игроки также не должны видеть друг друга за стенами и т.д.

  • Читерство: в таких играх, как Counter-Strike, игроки, естественно, не видят врагов за стенами, потому что камера их не отображает. Но если состояние всего мира известно в памяти, то хакеры все равно могли бы воспользоваться этим, показав игроков за стеной.

Другими словами, interest management - почти всегда хорошая идея.

Встроенные системы

Выберите Network Manager и добавьте к нему один из некоторых компонентов Interest Management.

  • Spatial Hashing это причина, по которой мы перешли от устаревшей системы идентификации для каждого клиента к глобальной системе и используем одну глобальную настройку диапазона видимости, которая одинакова для всего на сцене.

  • Distance является заменой для Network Proximity Checker.

  • Scene обеспечивает визуальную и физическую изоляцию между дополнительными сценами.

  • Match изолирует игроков для нефизических карточных, настольных, аркадных игр.

  • Team обеспечивает ограничение видимости сетевых объектов для членов команды. Это также может быть использовано для предметов, доступных только владельцу, заменяя Network Owner Checker.

  • Custom Interest Management предоставляет шаблон, который вы можете использовать для создания своей собственной системы.

  • Legacy Interest Management - Устарело.

Финальные ремарки

Новый API для Interest Management довольно прост и допускает сложную настройку. Мы рассмотрели это на примере, основанном на расстоянии, который легко понять.

Возможно вы заметили что этот компонент глобальный, тем не менее, все функции, похоже, работают локально для каждого Network Identity. На это есть две причины:

  • Наша система legacy Interest Management работал на основе идентификации каждого Network Identity (или локально, если хотите). Для глобальной системы мы просто перенесли эти функции в один глобальный компонент.

    • Это позволяет создавать глобальные решения, такие как Spatial hashing,при этом также гарантируется совместимость функций и простота обновления по сравнению со старыми системами.

    • На самом деле это просто старая система, перенесенная в другое место. Не бойтесь этого :)

  • Interest Management может быть нелегким со всеми этими спавнами и деспавнами в любое время. Mirror имеет целую кучу кода для interest management в скрипте NetworkServer, который просто вызывает три описанные выше функции.

    • Идея состоит в том, чтобы оградить вас от всех сложностей. Все, что вам нужно сделать, это беспокоиться об одном Network Identity в текущее время. С этим очень легко работать

Last updated