Этапы защиты от читов

Еще один пост о защите от читов, скопированный с форумов Unity для дальнейшего использования.

Источник: https://forum.unity.com/threads/help-me-choose-networking-solution-for-formation-tactics-game.1340309/

[Защита от читов] - это обширная тема с различными этапами защиты, о которых вам следует знать.

Server Authority

Было бы разумно сначала реализовать почти всю игровую логику с упором на авторитарный сервер, прежде чем беспокоиться о клиентском античите. Например, если здоровье игрока зависит от клиента, то никакие клиентские античиты не защитят вас от хакеров, включающих режим бога. Где, как и в случае с авторитарным сервером, вы никогда не стали бы спрашивать клиента о текущем состоянии здоровья. Вместо этого сервер сообщал бы клиенту о его здоровье и принимал бы все решения, связанные со здоровьем, а также проверял бы все запросы клиента, связанные со здоровьем. Например, при запросе на использование зелья всегда убедитесь, что игрок действительно владеет этим зельем, не мертв и т.д. Это существенно повышает защиту игры, если только кто то не сможете получить доступ к серверной машине. Однако некоторые аспекты, такие как перемещение, может быть довольно сложно сделать одновременно отзывчивыми и безопасными. Безусловно, возможно реализовать все ваше игровое состояние с помощью авторитарного сервера. Даже для перемещения, когда вы можете переместить клиента немедленно, отправьте перемещение на сервер, проверьте, было ли перемещение законным, а затем примите / отклоните его.

Минимизация клиентского информирования

Тем не менее, клиенты все равно могут получить преимущества, просто считывая состояние из памяти, не манипулируя им. Например, если ваша тактическая игра случайно сохранит в памяти все позиции противника, то хакеры могут попытаться извлечь их в своих интересах. В этом случае было бы полезно отправить клиенту только необходимую информацию. Например, многие сетевые библиотеки предоставляют настраиваемое управление интересами (Interest Management). Вы могли бы реализовать подобное у себя, используя Raycasting, чтобы проверить, видит ли игрок другого игрока. В противном случае даже не отправляйте его игроку вообще (в этом случае он не может быть извлечен из памяти)..

Античит на стороне клиента

Античит с Mirror

Обратите внимание, что Mirror по умолчанию является серверо-авторитарным. Interest Management и SyncMode для минимизации количества информации, отправляемой клиентам.

Last updated