Как стать автором
Обновить

Комментарии 3

Спасибо, хорошая обзорная статья.
Надеюсь на большее количество деталей в будущем.

Я бы предложил дополнить несколько пунктов / примеров.

- Почему существуют и применяются гибридные State Authority:
- В высокоскоростных играх, к примеру, в шутерах, очень высокие требования к скорости реакции и поэтому часть симуляций (физика, ближнее окружение, пули игрока) производится на клиенте, иначе игра будет казаться неотзывчивой. В этом случае сервер отвечает за разрешение конфликтных ситуаций постфактум. Клиент может посчитать у себя и применить мгновенно действие "попал врагу в голову", а сервер постфактум, собрав данные с другого клиента и проведя симуляцию кадров в фактическом прошлом, выносит вердикт - "нет, он на самом деле в этот момент свернул вправо и ты не попал" или "да, ты его убил".

- P2P архитектуры с shared state Authority классически применяются в стратегиях. Дело в том, что передача данных тысяч юнитов легко перегружает сеть, особенно если необходимо передавать данные каждый-к-каждому на десяток клиентов. Не говоря уж про задержки и прочее. Поэтому традиционно применяется подход с детерменированной симуляцией - все клиенты одновременно стартуют с одинакового состояния и крутят у себя детерминированную симуляцию игры, а договариваются только о применяемых командах. "Игрок выделил всех юнитов в координатах (10,10):(20,20) и отправил в позицию (5,3)". Команды тоже применяются в определенный кадр симуляции одновременно.
При таком подходе тысячи юнитов обсчитываются локально, траффик довольно мал, можно обеспечить коммуникацию каждый-к-каждому.
Бонусом идет легкость сохранения и реплеев.
Минусы
Мап хак будет работать всегда, потому что у клиентов есть полное состояние игры.
Сложность разработки полностью детерменированной симуляции, ограничения в использовании, к примеру float (может иметь разную точность на разных архитектурах).
Сложности восстановления сессии в случае задержек, десинхронизации и прочего.

С другой стороны врятли какой то другой подход возможен в играх типа Supreme Commander.

Благодарю за дополнения — подумаю над тем, как их вписать в текущую структуру 🙏

Про симуляцию вычислений на клиентах и вынесение вердикта сервером по-моему где-то в тексте мельком упоминалось. Чуть подробнее и более явно писал в предыдущей части. И более пристальное внимание планирую уделить в части про способы компенсации задержек. Здесь я хотел сделать акцент больше на том, что подобная гибкость вообще есть. А для чего она — уже как-будто вопросы другого порядка.

Детерминированная симуляция с синхронизацией через команды — достаточно ходовой подход. Я бы не стал это завязывать на P2P: это легальный способ сократить объём траффика на любой топологии. Я бы скорее это связал со скоростью геймплея.
Если игра достаточно slow-paced — лучше варианта не придумать: для меты классно подходит, всяческие баттлеры и матч-3 хорошо делались.
Но с повышением скорости геймплея разработка в такой парадигме усложняется. Для шутеров и shoot'em'up'ов по-моему даже пытаться бессмысленно. А для синка большого кол-ва NPC есть и другие "велосипеды". Например, объединение в группы и синк не каждого непися в отдельности, а всей группы как единого объекта с определённой долей свободы локальной симуляции в рамках группы.

Классный тейк про стратегии — об этом не думал. Экспертизы, даже с точки зрения игрока, в этом жанре не имею, но почему-то тоже кажется, что здесь всё упрётся по итогу к скорости игры.

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

Шутеры точно применяют частичное разрешение на клиентах для скорости, но редко полный Стейт. Из материалов, которые я изучал, игры типа фортнайта обрабатывают стрельбу локально а потом шлют на сервер для проверки валидности.

Стратегии более терпимы к задержкам - все же когда отдаешь приказ или применяешь способность, ты делаешь это с юнитами (типа они ходят и кастуют заклинания), и оправдано, что они не реагируют мгновенно.

Но в них много юнитов.

В общем из того что я знаю, Старкрафт, эпоха империй, Supreme commander и Bar точно это используют, вероятно значительная часть других стратегий то же.

Именно поэтому мап хак является такой проблемой для них (Старкрафт ведь киберспортивный) - клиента нельзя от него ограничить, у него есть полный стейт

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории