
Загорелись мы недавно идеей создания интересного и увлекательного приложения для проекта scribbler, да такого, чтобы всем нравилось… Зато хотелось в первую очередь эмоций, переживаний, командного духа, азарта. Сошлись в итоге на идее делать Мафию.
Ну что, идея появилась, осталось лишь реализовать ее. В первую очередь пришлось покопаться по просторам рунета, дабы понять, что представляет собой мафия он-лайн и определиться хоть с какими-нибудь правилами.
Как ни странно, но самой большой проблемой оказались правила игры. Сколько людей, столько и мнений, у каждого своя мафия. В конце концов мы определились только с персонажами и их действиями. Дальше — больше: сколько в игре будет дней? Ночей? Как будет проходить голосование? Для решения этих вопросов нам пришлось ежедневно собираться всей конторой на мафбатлы. В реальной жизни преимущество мафии в том, что эмоции играют одну из ключевых ролей. Девушки строят глазки, игроки приглядываются друг к другу в попытках вычислить злобного мафиози. В он-лайн версии все немного по-другому, но для общения мы прикрутили удобный чат.
Комментарии разработчика:
Изначально предполагалось, что клиент будет работать посредством http запросов, но данный способ значительно бы увеличил нагрузку на сервер, и выбор пал на постоянное соединение с сервером посредством сокетов.
Итак, приступил к разработке сервера в качестве языка выбрал C++ и использовал библиотеку Qt, так как легко понимаема, удобна в разработке, да и к тому же кросс платформенная.
Сервер посадил на порт 5190(его также использует ICQ), т.е. получается так, что у кого не закрыт данный порт, тот может играть в мафию.
С выбором протокола долго не мучался и данные отправлял в виде XML, в котором было имя комманды и значения передаваемые с коммандой, что то типа:

Сервер также присылал ответ в виде XML с такой же структурой.
Да, протокол в виде XML в данном случае конечно же избыточный, но игра тоже не 3d шутер ). Соответственно все игровые процессы происходят на стороне сервера, а flash клиент только отображает текущее состояние игры, посредством полученных данных.
Приглашаем всех, поиграть и высказать свое мнение игре!