Я нахожусь в написании пошаговой карточной игры на Java, но вам нужно посоветовать сделать ее многопользовательской. Игроки могут создать многопользовательскую игру, а затем другие могут присоединиться к этой игре, по очереди играть в свой ход. Я потратил часы, изучая все способы реализации этого, но действительно мог бы с некоторой помощью справиться. Я перечислю требования и то, что я узнал до сих пор:Многопользовательская игровая клиент-серверная архитектура RMI/JMS/Sockets
- Это совершенно Java игры, поэтому, используя что-то вроде RMI не является проблемой, по этой причине
- Игрок делает ход, этот ход отправляется на сервер, сервер отправляет этот ход другим игрокам (клиентам) в игре.
- Сервер должен хранить все игры в прогресс и игроков в них (в настоящее время делает это с
HashMap<UniqueGameID, GameObject>
Я экспериментировал с розетками и RMI до сих пор, и это кажется:.
RMI:
+
Ручки многопоточность и доступ к HashMap
-
Eith эр должен опрашивать сервер, чтобы увидеть, если игрок переехал или использовать обратные вызовы, которые не работают через брандмауэры
Sockets: (?)
+
Позволяет для асинхронных обратных вызовов
-
Can» т легко получить доступ к HashMap из нескольких потоков, которые порождаются (?)
-
более сложным, чем RMI
Я также изучал JMS, JINI/JavaSpaces, JGroups и все остальное, что я могу найти, но я понятия не имею, какой из них будет работать лучше всего. У меня есть клиент-серверная часть RMI и работает, но server-> client кажется, что вопрос невозможен, так как опрос настолько неэффективен и нескромн.
Я очень благодарен за любые ваши советы.
Большое спасибо
EDIT: С тех пор я обнаружил ConcurrentHashMap, который я думаю, решает одну из моих проблем.
Большое спасибо, это хорошо читать – Marc