Skip to content

gitnabi/coa-mafia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Запустить сервер:

docker-compose up --build -d

Запустить клиент:

make build && make run

Детали:

  • Сессия игры начинается, когда к серверу подключатся 4 клиента.
  • Роли выдаются рандомно.
  • Сервер может одновременно обслуживать много сессий игры.
  • При подключении необходимо ввести имя(любая строка до '\n').
  • В первый игровой день игроки могут либо "лечь спать", либо обмениваться сообщениями.
  • В первую ночь комиссар и мафия выбирают цель. Сразу после выбора цели, наступает день.
  • Днем раскрывается жертва мафии.
  • Днем комиссар по желанию может опубликовать данные проверенного игрока.
  • Днем голосованием выбирают мафию, а результаты голосования становятся известны сразу после того как все будут готовы к ночи.
  • Если голосованием удалось убить мафию или если мафия осталась 1 на 1 с мирным жителем, то игра прекращается и объявляются результаты.
  • После объявления результатов сессия завершается. Для новой сессии нужно повторно подключить к серверу.

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

Типы действия, которые порождает клиент:

  • Инициализация нового игрока;
  • Голосование за мафию;
  • Проверка роли(для комиссара);
  • Публикация роли(для комиссара);
  • Убийство(для мафии);
  • Отправка сообщения;
  • Выход из игры(CTRL+C);
  • "Завершить дневную активность".

Типы уведомлений которые присылает сервер:

  • Подключение нового клиента;
  • Начало игры;
  • О голосовании(кто за кого проголосовал);
  • Результаты голосования;
  • Отключение из игры;
  • Конец игровой сессии.

Для обмена сообщениями используется RabbitMQ: каждый клиент создает свою очередь, очереди объединяет fanout exchange декларируемый по session_id, т.е. любое сообщение попавшее в брокер, будет разослано всем участникам одной сессии.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages