Клиент-серверная игра на Java с апплетами

Мне нужно реализовать простую клиент-серверную игру tour на Java. К сожалению, я только начинаю с сетевого программирования и имею некоторые проблемы с выбором подходящего решения.

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

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

должен ли я создать исполняемый сервер, который будет работать все время на сервере и ждать игроков? Мне это кажется странным. Или есть более простой способ сделать это, например, могу ли я сделать сервлет и поместить его на сервер Tomcat, чтобы сервер запускался только есть ли игроки? Может ли сервлет взаимодействовать с апплетами (клиентами) и наоборот?*

Я был бы очень благодарен за некоторые советы.

3 ответов


могу ли я сделать сервлет и поместить его на сервер Tomcat, чтобы сервер запускался только при наличии игроков

экземпляр Tomcat будет работать в любом случае, иначе игроки не смогут подключиться к нему.

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

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

поэтому, если у вас уже есть некоторые знания в области коммуникационных технологий, попробуйте использовать это. Просто имейте в виду ограничения и учитывайте их (например, форматы сообщений, push/pull communication и т. д.).


Это зависит от того, какую игру вы ищете. Апплеты обычно являются хорошим выбором для представления анимации (полностью на Java) и доступны из браузера. Примеры реального мира будут отвлекаться на Flash для презентации клиента.

Если ваша игра-игра типа поворота (шахматы, карты и т. д.), затем вы можете реализовать свою логику в виде сервлетов или веб-сервисов или ajax с соответствующим использованием хэш-таблиц или баз данных для хранения живых сеансов на стороне сервера. Если ваша игра больше с точки зрения пользовательского опыта (например, пример типа Need For Speed), создание пользовательского сервера имеет больше смысла.


Если вы ищете платформу приложений netwrok в Java, вы можете прочитать о Apache MINA. Документация утверждает, что она " помогает пользователям легко разрабатывать высокопроизводительные и масштабируемые сетевые приложения."и он имеет поддержку для различных транспортов, таких как TCP/IP и UDP/IP через Java NIO. Резюме функций можно увидеть здесь.

мой личный опыт работы с MINA до сих пор хорош и используется в различных проектах. Один реализация похожа на ваш случай, это не игра mulitplayer, но включает в себя несколько апплетов, соединяющих сервер. Я нашел, что мина очень хорошо справляется с несколькими сеансами. Он делает это очень аккуратно. Кроме того, его очень легко масштабировать и поддерживать код. Легко добавлять фильтры и определять протоколы.

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

однако, как и любой новый проект с открытым исходным кодом, у него есть свои проблемы тоже. То есть: интернет-сообщество небольшое, а документация, хотя и быстро улучшается, очень ограничена.

официальный руководство пользователя охватывает большинство основ и является хорошей отправной точкой, если вы хотите узнать больше.