Skip to content

Latest commit

 

History

History
49 lines (38 loc) · 6.9 KB

cheat-protection-stages.md

File metadata and controls

49 lines (38 loc) · 6.9 KB
description
Еще один пост о защите от читов, скопированный с форумов 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 для минимизации количества информации, отправляемой клиентам.