Обычно игровые движки отправляют UDP-пакеты из-за задержки. Дело в том, что TCP просто недостаточно быстр, и надежность менее важна, чем скорость.
Веб-службы могут усугубить проблемы с задержкой, присущие TCP из-за дополнительных издержек. Кроме того, они будут поглощать память в зависимости от количества ожидаемых игроков. Наконец, у них есть большой объем полезной нагрузки, который вам просто не нужен (xml-нибудь?).
Есть несколько способов сделать это. Одним из способов является централизованный обмен сообщениями (клиент / сервер). Это означает, что у вас будет Java-сервер, прослушивающий пакеты udp от клиентов. Затем он будет ретранслировать их любому из соответствующих пользователей.
Второй способ децентрализован (одноранговый). Клиент регистрируется на сервере, чтобы указать, в какой игре / мире он находится. После этого он получает список других клиентов в этом мире. Сервер поддерживает этот список и уведомляет других клиентов о людях, которые присоединяются / уходят.
С этого момента клиенты передают пакеты udp напрямую другим пользователям.