Сетевую игру кости делал в рамках обучения студента.
Сервер и клиент общаются между собой по TCP протоколу (3443 порт). Один синглтон я сделал для серверной части, один для клиентской. Сервер ожидает клиента и при подключении создает новый поток. Это в принципе для меня новым не было, т.к. что то подобное я уже делал для windows на других языках.
Время как всегда было ограничено, поэтому присутствуют некритичные баги, вроде плохой генерации случайных чисел, да и в целом сейчас я бы сделал всё иначе, но на тот момент в голову пришла именно такая структура приложения.
Модели кубиков взял от предыдущей игры “Кости”, набросал пару форм в JavaFX и готово!

Механика игры является довольно простой:
Игрок, решивший создать игру (сервер), запускает приложение, в меню выбирает ИГРА->Создать игру, указывает количество игроков, начальный счет и счет для победы, свой ник и жмет “Создать!”
Далее сервер ожидает подключения игроков. Игроки, которые подключаются к игре должны выбирать пункт меню “Игра->подключиться к игре”, вводят имя компьютера (сервера) или его ip адрес. Когда все игроки подключились, сервер нажимает “Начать” и игра начинается. Первым бросает кости сервер, затем остальные игроки в порядке подключения и так по кругу. Игра заканчивается, если кто то набирает победное количество очков, либо если останется
один игрок у которого очков больше нуля. Игроки с нулевым счетом считаются выбывшими и кости не бросают, но могут общаться в игровом чате.
А здесь игровой процесс:

Интересно поиграл сам с собой 🙂 Но суть я думаю понятна – в локальной сети сервер создает игру, клиенты подключаются, сервер начинает игру. Для обмена между клиентом и сервером я использовал своеобразный чат:
В режиме чата передаются обычные сообщения, дополненные игровым ником (именем).
Для управления игрой и обменом служебной информацией (количество очков, у кого что выпало, кто ходит и т д)
используется специальный формат сообщений, вида
##COMMAND##DATA##DATA##DATA…..
Служебные сообщения между клиентом и сервером:
(СК – сервер ->клиент, КС – Клиент->Сервер, СВ – Сервер->Всем клиентам)
СВ ##StartGame## : Сообщение клиентам о начале игры
СК ##ROLLPLEASE## : Сообщение клиенту, что пришла его очередь бросать кости
КС ##CLROLL##1##2##15##4##80## : Клиент бросил кости, выпало 1+2, ставка 15 на 4, счет 80 ( сервер дублирует всем )
СВ ##State##Вася##100##Петя##40## : Сервер сообщает всем состояние счета игроков (всех учавствующих).
СВ ##ENDGAME## : Сервер сообщает всем, что игра окончена
Игра не претендует на что то серьезное, состряпана практически на коленке, по вечерам, но опыт получен – студенту объяснил, и даже сам понял 🙂
Проект для Idea можно скачать здесь, только что проверил – всё работает. Для редактирования или просмотра форм нужен Scene Builder для Java FX, но запустить можно и без него.