Система синхронизации игроков и задумка в реализации анти-чита "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 хороших плюса:
- Это небольшое количество информации которое необходимо передавать.
- Игрок A не сможет сделать так что бы его пули вылетали там где он захочет, ну а точнее у него на клиенте они будут вылетать там где он захочет, но остальные игроки будут видеть картину такой какой она должна быть без нечестного вмешательства в гемплей со стороны игрока A.
Но так же пока что существует один небольшой баг: когда игрок A к примеру быстро щелкнет мышкой и у него вылетит только 1 пуля, то иногда другие игроки могут не получить этот выстрел. Но все это будет обязательно пофиксено.
А теперь немного о том, как проходит урон по игрокам:
Приведу все тот же пример с 2-мя игроками, A и B. И вот игрок A совершает выстрел, а в этот момент игрок B получает информацию о том, что игрок A начал стрелять и на клиенте игрока B пули начинают вылетать с оружия игрока A, а игрок B получит урон от пуль игрока A только в том случае, когда на клиенте игрока B пули игрока A попадут по нему. И у этого метода так же есть огромный минус: игрок B может нечестно изменить урон от пули или вообще дать ей другое направление вылета, и тем самым по игроку B не будет проходить урон. Этот минус будет фикситься с помощью интересной анти-чит системой под названием GACS.
Немного о GACS:
GACS - это анти-чит система, которая будет не допускать нечестного вмешательства в гемплей, первые задачи которые будут реализованы в ней:
- Anti FlyHack - полет в игре, является нарушением игровых законов гравитации.
- Anti SpeedHack - бег быстрее чем дозволенно обычным смертным.
- Anti WTW ( ну или как то так, я не знаю как это называется ) - хождение сквозь стены.
- HR (Hit regestration) - регистрация попаданий и нанесение урона.
На этом я пока что заканчиваю свой пост. Всем спасибо за внимание, обязательно ждите новых постов и если у вас появились вопросы то не стесняйтесь обращаться ко мне, контакты указаны ниже!
Контакты
Я в Gmail - michael.vasukovff@gmail.com