Использование высокоуровневого сетевого API (HLAPI) движка Unity3D кажется подходом «все или ничего». Для любых игровых объектов, которые, как ожидается, будут использоваться в многопользовательской игре, (большинство) вариантов поведения должны быть реализованы как NetworkBehaviour
s, и требуются сетевые компоненты. Кроме того, во всех сценах требуется сетевой менеджер. Я бы предпочел не дублировать сетевые версии всех ресурсов для одного игрока, и кажется, что ожидаемая практика заключается в том, чтобы однопользовательская игра была реализована как сетевая игра на основе хоста LAN только с одним (localhost) клиент.
Меня беспокоит то, что HLAPI, наложенный поверх абсолютно всего, приведет к значительным накладным расходам в однопользовательском режиме, который является основным направлением игры. Это обоснованное беспокойство?
Я рассмотрел несколько методов смягчения последствий, но они создают свои собственные проблемы с точки зрения удобства обслуживания и сложности кода:
- Префабы, необходимые в обоих режимах, будут продублированы (нарушает DRY: изменения в одном префабе необходимо вручную отразить в другом)
- Динамически изменять или заменять однопользовательские активы многопользовательскими или наоборот (сложно и потенциально подвержено ошибкам)
Каковы некоторые лучшие методы смягчения? Или они вообще нужны?