Программирование
February 3, 2019

Система синхронизации игроков и задумка в реализации анти-чита "GACS".

Всем привет! Давно не слышались :) Много чего реализовано и еще больше идей пришло в голову!

Пожалуй начну с того, что уже сделано:

  • Синхронизация игроков, а именно, позиция, поворот и наклон.
  • Синхронизация стрельбы + нанесение урона.

Подробнее про 1-ый пункт, позиция - это, координаты игроков в пространстве. Поворот и наклон - это, направление взгляда игрока вправо/влево и вверх/вниз.

А что можно сказать про 2-ой, так это интересная задумка в оптимизации этой самой синхронизации.

Раньше мы планировали сделать синхронизацию стрельбу такой: есть 2 игрока, A и B и к примеру A начинает стрельбу, а игроку B приходит информация о том где заспавниться и в какую сторон пуля полетит. Но у этого способа есть один большой недостаток: очень много информации приходится передавать: это точку спавна пули X|Y|Z координаты, а так же и поворот пули X|Y. А это плохо скажется на сервере особенно если оружие скорострельное.

Но все же реализовали иначе, а именно: также есть 2 игрока, A и B и когда A начинает стрелять то игроку B начинает приходить информация в виде true(1) или false(0), true означает что игрок A начал стрелять и на клиенте игрока B пули начинают вылетать с оружия игрока A. У данного метода имеется 2 хороших плюса:

  1. Это небольшое количество информации которое необходимо передавать.
  2. Игрок A не сможет сделать так что бы его пули вылетали там где он захочет, ну а точнее у него на клиенте они будут вылетать там где он захочет, но остальные игроки будут видеть картину такой какой она должна быть без нечестного вмешательства в гемплей со стороны игрока A.

Но так же пока что существует один небольшой баг: когда игрок A к примеру быстро щелкнет мышкой и у него вылетит только 1 пуля, то иногда другие игроки могут не получить этот выстрел. Но все это будет обязательно пофиксено.

А теперь немного о том, как проходит урон по игрокам:

Приведу все тот же пример с 2-мя игроками, A и B. И вот игрок A совершает выстрел, а в этот момент игрок B получает информацию о том, что игрок A начал стрелять и на клиенте игрока B пули начинают вылетать с оружия игрока A, а игрок B получит урон от пуль игрока A только в том случае, когда на клиенте игрока B пули игрока A попадут по нему. И у этого метода так же есть огромный минус: игрок B может нечестно изменить урон от пули или вообще дать ей другое направление вылета, и тем самым по игроку B не будет проходить урон. Этот минус будет фикситься с помощью интересной анти-чит системой под названием GACS.

Немного о GACS:

GACS - это анти-чит система, которая будет не допускать нечестного вмешательства в гемплей, первые задачи которые будут реализованы в ней:

  1. Anti FlyHack - полет в игре, является нарушением игровых законов гравитации.
  2. Anti SpeedHack - бег быстрее чем дозволенно обычным смертным.
  3. Anti WTW ( ну или как то так, я не знаю как это называется ) - хождение сквозь стены.
  4. HR (Hit regestration) - регистрация попаданий и нанесение урона.

На этом я пока что заканчиваю свой пост. Всем спасибо за внимание, обязательно ждите новых постов и если у вас появились вопросы то не стесняйтесь обращаться ко мне, контакты указаны ниже!

Контакты

Telegram канал

Я в Telegram

Я в Gmail - [email protected]