Должен ли я использовать RMI для Java многопользовательской игры? - PullRequest
4 голосов
/ 19 июня 2010

Я создаю игру «Монополия» на Java и хочу, чтобы она поддерживала игры по сети (дело было в том, чтобы я и мои друзья в США могли играть в нее).Сеть - это целая область программирования, в которую я еще не вступил, поэтому мне было трудно решить, как именно это осуществить.В общем, я чувствовал, что правильным способом для этого было бы иметь серверное приложение со всем игровым кодом Monopoly, а затем клиентское приложение с простым графическим интерфейсом с удаленными вызовами методов.

Будет ли RMI слишком сложным для этого проекта или это лучший способ продолжить?Есть ли у вас какие-либо предложения или советы для меня?

Обновление : эта игра будет на 100% Java.Поэтому не стоит беспокоиться о клиентах, которым необходимо установить Java.Также было бы здорово получить несколько советов по использованию RMI.

Ответы [ 2 ]

15 голосов
/ 19 июня 2010

RMI - это не сложная вещь, а наоборот.

Это позволяет вам разрабатывать свой игровой протокол, не заботясь о том, чтобы Message объекты проходили между сервером и клиентами с длинными цепями if, чтобы проверить, какой это тип сообщения, и выполнить все, что требуется.

Что вы действительно можете сделать с RMI - это иметь централизованный объект (на сервере), для которого вы напрямую вызываете методы от клиентов, таких как iWantToMoveThere(position) или iWantToBuyLand(where) и так далее. Это упрощает протокол и накладывает некоторые накладные расходы, которые у вас будут в любом случае, так как я отговариваю вас от реализации бинарного прокотола. XML или сериализованный Java был бы хорошим компромиссом, так как вам не нужно в реальном времени для такой игры, как эта.

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

Так же, как прямой опыт: я использовал RMI для управления сервером, который позволял разработчикам публиковать свои собственные игровые плагины, позволяющие игрокам автоматически подключаться к серверу и загружать контент, чтобы иметь возможность играть. Все было обработано RMI, за исключением того факта, что мне нужно было обратное TCP-соединение, чтобы иметь возможность обрабатывать асинхронные события всякий раз, когда мне было нужно. Весь исходный код был всего ~ 1 тыс. Строк в группе из 7-8 классов

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

Похоже, у вас будут толстые клиенты. Зачем? У вас может быть 100% -ный java-сервер, который имеет всю вашу бизнес-логику и может обращаться к нему через браузер, используя jquery / Ajax и рендеринг html5.

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

...