Как защититься от читерства на Photon Servere? Как вы знаете, из коробки он идет без физики.
Я хочу сделать 2D игру, возможно в какой то мере похожую на Terraria, мир из кубиков, только вид сбоку. Каждый кубик - 1х1. Персонаж - 1х3 или 2х3 , ещё не знаю.
Нужно как то защититься от NoClip (прохождение сквозь стены) и SpeedHack. Как я понимаю для этого придется к фотон серверу прикручивать физику ? Как её прикрутить так, что бы нагрузка на сервер была минимальная? Планируется использование большого количества Box Collider 2D. В принципе их можно объединить в один Polygon Collider 2D и по моему это будет намного лучше чем 50 коробочных коллайдеров.. Что думаете по этому поводу?
В документации ExitGames (Photon Server) предлагается использовать Unity Instances для проверки физики. А именно запускать Unity Instances, где физика просчитывается исключительно на Триггерах, что бы можно было проверить, например если игрок попал мечем по другому игроку и т.д. Но как запускать Unity Instance и как общаться серверу с этим Инстансом - я не понял, да там и не сказано конкретно. Это просто как ещё один клиент, запущенный локально, на котором воссоздается сцена в упрощенном виде ? Что думаете по этому поводу? Вот ссылка на то, как это в доках написано: http://doc.exitgames.com/en....-server
В общем цель одна - избавиться от читерства. А именно никаких полетов, быстрых перемещений и прохождений сквозь стены. По моему в игре не такая сложная физика, что бы это реализовать. Но я пока что не понял как именно это надо делать.. Жду ваших ответов
Сообщение отредактировал robertono - Суббота, 30 Мая 2015, 12:30
Тошнит уже от вашего Photon Server, в каждый тред его запихать надо, ещё и свой создать. Нужна защита от читеров - пиши свой сервак. А вообще, не понимаю, в чём проблема сделать сравнение серверных координат игрока с клиентскими, и если разница внезапно слишком большой стала, то просто возвращать его в прежнюю позицию? А для защиты от ноклипа проверять на наличие объектов в координатах игрока. Долгожданный анонсик: State of War
Сообщение отредактировал EchoIT - Суббота, 30 Мая 2015, 18:40
Подскажите пожалуйста как это проверять, если фотон сервер не имеет сцены игроков? Свою псевдофизику писать?
Ну, собственно, потому что я с ним не работаю, подсказать этого не смогу. Но ИМХО от этого отталкиваться нужно. Ну или написать псевдо-физику, всё её особенности вам и не нужны, только проверка коллизий. Если все коллизии - прямоугольники, то это не так сложно должно быть. Долгожданный анонсик: State of War
А есть смысл запускать локального клиента на том же компе где сервер? Я имею ввиду запускать игру на Unity, где всё что есть так это невидимые 3д объекты (только коллайдеры) и все остальные игроки? И подключать этого клиента как обычного, но сделать что бы на нем проводились физические проверки?
Можно прикрутить какой-нибудь физический движок к Photon Server. Не знаю, что именно используется в Unity, но думаю, что на стороне сервера самым простым решением было бы прикрутить какой-нибудь Box2D. Это, если нужна более-менее реалистичная физика твердых тел. Если все, что нужно проверять - пересечение двух объектов, то можно написать свою реализацию физического движка (Я пару лет назад писал такую систему: в ней все тела представляли из себя набор отрезков, соответственно пересечения между ними считались по простому алгоритму пересечения отрезков. Для оптимизации все эти тела засовывались в деревья из Bounding Box'ов. )
EchoIT, тогда если локальный клиент для просчета физики - не вариант, то что имеется ввиду в документации, говоря "run Unity Instances" ? Помогите разобраться пожалуйста.