Отправка / получение объекта / ссылок или части объекта с помощью JavaNIO - PullRequest
0 голосов
/ 20 марта 2011

Я разработал симуляцию физики в реальном времени с NIO, которая заключается в перемещении шариков одновременно (в реальном времени) на нескольких клиентах

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

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

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

У меня проблема с реализацией, если кто-то поможетДля примера с кодом, было бы замечательно, в любом случае, который может быть общим для отправки данных моделирования, таких как координаты объекта, отличные от строк , может быть приемлемым (если кто-то проделал подобную работу), но это должно бытьреализовать сценарий использования, как я описал.

Спасибо,

Джиббилала

PS: Могу ли я узнать причину Downvoting вопрос?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2011

Используйте RMI с KryoNet , тогда вы просто используете удаленные вызовы методов, и эти вызовы достаточно эффективны, и вам больше не нужно о них беспокоиться. На сайте есть примеры RMI, с которых вы можете начать. Если вам нужно взаимодействие клиента в реальном времени с симулированными шарами, это становится немного сложнее, и вам может понадобиться использовать UDP, но в противном случае вы можете просто отправить позиции. Вы должны попытаться объединить информацию, возможно, в методе объекта вашего мира.

0 голосов
/ 20 марта 2011

обо всем по порядку:

вам нужен идентификатор объекта для представления движущегося / любого другого материала.У объекта есть свойства, как и у любого другого объекта в Java, в вашем случае у шара есть координаты.Возможно, шар имеет форму (помимо того, что он представляет собой идеальную сферу с постоянной R), вы должны сначала отправить описание или тип объекта, а затем изменить некоторые из его свойств.Для идентификации объекта вы можете использовать один длинный или даже UUID, но представленный 2 длинными (16 байтами)

Вы можете даже использовать стандартную сериализацию Java, но я бы советовал, если вы не разбираетесь в этом вопросе (но вытогда не задавали бы вопрос).

Хотя создание двоичного протокола не сложно для замены собственного представления на основе строк, это также не простая задача для первого таймера.

NIO сама по себе поддерживает ByteBuffer, однако это не должно влиять на внешнюю / потоковую модель, которую вы представляете ваши данные.Если вы можете представить «шары» каким-то осмысленным образом в байте [], вы можете добиться того же с помощью ByteArray.

...