Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Мультиплеер Html5 + Сокеты (Коллизии, столкновения объектов)

Мультиплеер Html5 + Сокеты (Коллизии, столкновения объектов)

Поделиться
EmtyНовичокwww2 фев. 201711:01#0
Привет всем!

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

С начало пробовал реализовать такую структура клиент - сервер
Клиент отсылает input серверу, сервер просчитывает и рассылает всем что данный клиент может ехать, добавил 100мс задержку и буфер данных на клиенте + интерполирую по предыдущей и следующей точке с учетом текущего положения на клиенте.
В итоге столкновения в нужных местах. Реакция движения не мгновенная. При пинге больше 100 не играбельно.

Сделал предсказание клиента, весь остальной мир остался обновляться по той же схеме.
Получил плавное движение игрока. Но совместить столкновения в нужном месте не удалось.

Появились вопросы:
1) Какую выбрать модель клиент - сервер для быстрого геймплея и столкновений между игроками.
2) Как реализовать при предсказании клиента точное отображение столкновения с другими игроками.
3) Возможно сделать в какой-то этап при предсказании меньше скорость клиента, чтоб попасть в точку столкновения.

Данные темы уже обсуждались на форуме. http://www.gamedev.ru/code/forum/?id=190589
Но пока мне не дали понять, как можно решить данную задачу со столкновениями.

Буду признателен за ответы.

robotcityПостоялецwww2 фев. 201712:36#1
ничего нового. Считаешь все на стороне клиента, на стороне сервера делаешь только проверки на читерство, если кто то движется с высокой скоростью или движется там где ему не положено или летать начал, также проверяешь попадание при стрельбе но упрощенно конечно, дальность и в поле зрения, если сильно хочется можешь просчитать полет пули.
Все делают так, никто не считает физику на сервере.
EmtyНовичокwww2 фев. 201712:46#2
Движение других игроков будет приходит ведь с сервера. Я ж не могу предсказать куда будет двигаться другие игроки, и они будут находится в прошлом а клиент в будущем. При коллизии я получу не верную точку соприкосновения.

Правка: 2 фев. 2017 12:47

robotcityПостоялецwww2 фев. 201712:50#3
Emty
ага, можно конечно заняться предсказанием или игрокам передавать данные о будущем, но идеально не получится никогда, так в чем проблема, просчитаешь столкновение как есть делов то.
EmtyНовичокwww2 фев. 201712:59#4
При просчете столкновения как есть, в данном случае объекты накладываются друг на друга. В статье выше были примеры как анимировали такие моменты что давало время для клиентов для корректного отображения. Тут хочется реализовать столкновения шаров и их разлет, как в бильярде.
robotcityПостоялецwww2 фев. 201713:05#5
Emty
много раз видел как люди застревают в друг друге, но ты конечно постарайся исправить это.
если в статье есть решение, то делай по нему.
На самом деле это легко решается, но объяснить я все равно не смогу, надо знать физический движок и как он работает, надо знать архитектуру сервера и архитектуру клиента.
EmtyНовичокwww2 фев. 201713:17#6
Спасибо за ответ.
На форуме описывают, но данные решения хороши для действий которые можно за маскировать.
В данный момент моя проблема в понимании  какую архитектуру выбрать для данной реализации которая позволила корректно отображать столкновение на всех клиентах.
robotcityПостоялецwww2 фев. 201713:31#7
на самом деле архитектура одна и она не изменилась со времен первого doom, дело не в архитектуре, дело в оптимизации, но пока ты до нее дойдешь пройдет много времени, удачи тебе конечно.

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

2001—2017 © GameDev.ru — Разработка игр