Войти
ПрограммированиеФорумСеть

Проверка коллизии на сервере

#0
8:14, 20 мар. 2018

Утро доброе, никак не могу нарыть информацию о способах реализации, везде и всюду пишут об этом, но нигде нет даже указания в каком направлении рыть.

Меня посетило только две мысли:
1) Открывать копию игры на сервере, с каким-нибудь флагом консольного режима без рендера картинки.
2) Создавать карты высот, но не представляю как она будет выглядеть  с многоуровневыми локациями.

Обе идеи не имеют права на существование как по мне. Неужели нет каких-нибудь готовых инструментов помогающих решить этот вопрос.
Просьба направить в каком направлении рыть хотя бы.


#1
11:29, 20 мар. 2018

готовых решений нет, если лень писать самому библиотеку расчета столкновений то берешь готовую подключаешь ее и мучаешься, расчитать столкновения на стороне сервера можно но очень сложно.

#2
12:04, 20 мар. 2018

Татарин, так вот мне и интересно, где серверу брать информацию об объектах для проверки? Приводить всё игровое окружение с клиента к неким примитивам, держать в памяти на сервере и с ними работать? Тогда какой формат можно использовать? И есть ли какие-нибудь инструменты для работы с такими данными в рилтайме?
И не лень писать, а даже интересно, просто не плохо было бы подсказать в каком направлении копать

#3
12:14, 20 мар. 2018

DoomGod
AABB - же классика, читай изучай. Смотря на чем у тебя клиент написан.

#4
13:58, 20 мар. 2018

DoomGod
> Неужели нет каких-нибудь готовых инструментов помогающих решить этот вопрос.
физдвижок поковыряй какой, Bullet Physics, в твоём случае Jitter Physics

> Приводить всё игровое окружение с клиента к неким примитивам, держать в памяти
> на сервере и с ними работать? Тогда какой формат можно использовать?
да

можешь трейсить повысотку физиксом, но проще забирать геометрию уровня сразу из FBX

#5
14:23, 20 мар. 2018

Sh.Tac.
Я пока с движком не определялся. Не стоит пока цели ничего конкретного сделать. Просто изучаю природу сетевого взаимодействия в играх. Вот и интересуюсь какие бывают способы решения данного вопроса.

#6
14:26, 20 мар. 2018

DoomGod
> интересуюсь какие бывают способы решения данного вопроса.
читай gaffer-on-games сразу : )

#7
14:59, 20 мар. 2018

DoomGod
такая же тема пишу физику для своего сессионного шутера с просчетом на сервере, с начала подключал готовые физ библиотеки но с ними все плохо, сервер нагружают сильно если вдруг просадка то персонаж может спокойно через стенку пройти, так что пишу свою упрощенную, но я и клиент свой пишу и сервер свой так что могу все оптимизировать а если возмешь готовый движок то жопа без шансов помыкаешься и сдашься.

#8
15:12, 20 мар. 2018

Татарин
В связке с чем разрабатываешь?

#9
15:28, 20 мар. 2018

DoomGod
я под веб пишу, клиент на threejs сервер на Nodejs, почти все самописное.

#10
9:38, 21 мар. 2018

DoomGod
> какой формат можно использовать?
Я прошёл к такому формату:
ГГ - это вертикальный цилиндр, ограниченный полусферами (капсула).
Карта состоит из секторов, так я называю тело, похожее на прямую призму, но с возможностью наклона обоих оснований. На такие части можно разбить ЛЮБОЕ полигональное тело, особенно удобно сразу в редакторе рисовать такими примитивами.

#11
15:36, 21 мар. 2018

DoomGod
> 1) Открывать копию игры на сервере, с каким-нибудь флагом консольного режима
> без рендера картинки
если не стандартное, то очень популярное решение, при этом на клиенте физику так же надо считать, но контроллировать на сервере, если юзер прошел куда не надо - сервер командует "откатиться" до валидного состояния

Татарин
> если вдруг просадка то персонаж может спокойно через стенку пройти,
вы явно, что-то не то делаете, при "правильном" подходе никуда ничего не проваливается, это называется фиксированный шаг физики, если будет лаг на сервере(долгий апдейт физики), то на клиентах это тоже будет выглядеть как лаг(задержка) и то только при движении, но не более,
update: тут нюанс - если вы используете CSP, то  - может теоретически куда-то провалиться, но через пару пингов сервер его должен поправить, ну и пересчет физики на клиенте параллельно с сервером - сводит вероятность такого к нулю

#12
18:28, 21 мар. 2018

leonardo98
да можно конечно библиотеку подключить с фиксированням шагом считать, просто это нагрузка большая на сервер, дорого получается для инди разработчика, да и там багов разных не меренно, если вдруг где то лаганет и сервер начнет отставать от клиента то на клиенте начнеться лагодром, это нужно будет писать отдельно решение, вообще игроки спасибо не скажут, в конечном счетет эти баги всех запарят и проверку на стороне сервера придеться просто отключить, поэтому я и делаю по другому.

ПрограммированиеФорумСеть

Тема в архиве.