Экран обновления игры апплета при изменении сетевого игрового состояния - PullRequest
1 голос
/ 18 декабря 2011

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

Статья такая: http://www3.ntu.edu.sg/home/ehchua/programming/java/J8d_Game_Framework.html

Моя игра представляет собой сетку, в которой другие игроки могут менять простые прямоугольники. Это не должен быть самый быстрый подход, но каким-то образом мне нужен новый поток, который подключается к моему серверу и модифицирует состояние игры, которое будет отображаться на экране. Я просто не вижу, как я могу это реализовать, не вызывая зависания потока апплета.

Может кто-нибудь увидеть решение этой проблемы?

Ответы [ 2 ]

2 голосов
/ 18 декабря 2011

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

Для проблемы со связью, есть простой подход: сервер периодически отправляет обновления каждому игроку,будь то через постоянно подключенное TCP-соединение или просто периодические старые ненадежные UDP-пакеты.Выбор того, какой из них использовать, будет зависеть от требований вашего приложения.Прочитайте о разнице между TCP и UDP - есть много, много мест, в том числе на SO (просто поиск), которые обсуждают компромиссы.Как только у вас будет обновление состояния сервера, и вы сможете убедиться, что это работает, предоставив серверу некоторое состояние сценария для отслеживания, вы можете отправить некоторые данные и другим способом.В зависимости от вашего приложения вам может потребоваться соблюдать осторожность: может ли игрок лгать серверу о своих действиях и т. Д.

В Java соединения часто выполняются с помощью классов Socket и ServerSocket или с помощьюклассы DatagramPacket и DatagramSocket.

1 голос
/ 18 декабря 2011

Я просто не могу понять, как я могу это реализовать, не вызывая зависания потока апплета.

Реализуйте ActionListener для обновления / проверки сервера. Вызовите слушателя в цикле, используя Swing Timer. См. Как использовать Swing Timers для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...