Я в настоящее время разрабатывает сверху вниз, в режиме реального времени, зомби шутер. Я кодирование это в Java, используя JBox2D как мой физический движок. Я кодировании сети на этой неделе, и я теперь до синхронизации физики.
Я планирую использовать / модель авторитетного сервера интеллектуального клиента, где клиент может свободно перемещаться, пока сервер одобряет его позже. Это включает в себя клиент отправляет пакеты, содержащие данные движения на сервер, и сервер вычисления задержки, и повторно имитируя мир от более старого государства.
Моя проблема, мой текущий физический движок, JBox2D (в основном порт Box2D), не поддерживает откат мира, и, видимо, не так просто сериализации мировые данные. У меня есть 2 решения, я мог бы либо модифицировать / расширить свой текущий физический движок, или написать свои собственные.
Причины для написания собственного физического движка -
- Я могу удалить ненужные функции. В игре сверху вниз мне действительно нужны только механика столкновения и управляемые силы. Нет силы тяжести не участвует.
- Я могу понять код лучше, и было бы [скорее всего] будет легче реализовать рулон обратно функции
Причины расширения / модификации JBox2D
- Дать свой собственный физический движок, был бы значительный объемом работы, который может быть громоздким
- JBox2D имеет широкий поддерживающее сообщество, которое может помочь мне с моим разработчиком
- JBox2D, имеет определенные оптимизации, для таких вещей, как обнаружение столкновений, которые делают его полезным
- Некоторая работа, как уже было сделано над этим, но мало кода было передано
Итак, что вы думаете. Это моя первая игра, и я не путь профессионального разработчика игр. Если кто-то может предоставить некоторые ссылки на работу, уже проделанную в этой области (желательно с использованием JBox2D / Box2D / Java).
источник
strictfp
везде, что серьезно повлияет на производительность. В противном случае сервер и клиент не может получить точно такие же результаты. Я бы рекомендовал использовать неподвижную точку вместо этого.Ответы:
Обнаружение столкновений в 2D так чертовски просто я не знаю, почему вы даже пробуйте использовать физический движок в первую очередь. А так как все усилия для манипулирования являются прямыми или изогнутыми (не падают, не меняют диагнозы и т. Д.), Лично для меня не проблема, что вы должны выбрать. Сделать свой собственный простой. Столкновение:
Рассмотрим 3 возможных столкновения, которые могут произойти в 2 прямоугольниках:
EDIT: Как прокомментировал, я гораздо меньше знакомы с этим вопросом, и не следует обращаться по поводу пули / снаряда столкновения.
Когда я работал с пулями в 2D пространстве, я использовал свой род Pathing, которые работали как в прямом и изогнутом, где я бы бросить снаряд, используя физический движок (что я не делал с нуля) и использовать стандартные столкновения.
Читайте о создании этого с нуля в комментариях.
РЕДАКТИРОВАТЬ: * Поверьте мне, * независимо от того, что вам понадобится какая-то форма мертвых расчетов в игровом движке, из-за снарядов и сколько снарядов может быть на экране в любой момент времени. Вы АБСОЛЮТНО не хотите обновлять каждую пулю на экране для каждого кадра на это дает местоположение. Но это отличный способ сделать игру невыносимо медленной: D! Вам следует обновлять только эти вещи:
Теперь обновление данных в двигателе в соответствии с этими данными, а не на сервере для каждого проклятого снаряда, и посылать пакетные данные для каждой пули. (Представьте, что вы делаете это даже с двумя пулеметами на экране! Господи!)
источник