Как создать комнату в мафии онлайн

Обновлено: 07.07.2024

Всем известна игра «Мафия». Наверняка многие из хабрасообщества играли в неё. От игроков требуется умение логически мыслить, наблюдательность, речевые навыки и много чего ещё. От ведущего требуется немного больше. Об этом и поговорим поподробнее.

Мой опыт игры и проведения «Мафии» не такой и большой – всего около двух лет. Однако, я даже не берусь подсчитать, сколько игр я провёл. Самое большое неудобство, с которым я сталкивался – не чем и не на чем писать. Поэтому мне пришла в голову мысль написать простенькую программку, чтобы проще было учитывать действия и не запариваться с рисованием линеек, кривым почерком и всём таким прочим.

Ключевым моментом в выборе на чём же, собственно, писать, была кроссплатформенность. В итоге родился скрипт для ведущего «Мафии» с применением JavaScript и JQuery. Я далеко не перфекционист, поэтому скрипт так же далёк от возможного совершенства, однако, я им пользуюсь и весьма успешно.

Набор игроков


Интерфейс выполнен в минимализме – ничего лишнего. Кнопкой «+» добавляем игроков, кнопкой «-» напротив игрока – убираем его. Маленькие кнопочки позволяют переместить игроков вверх или вниз по списку, если игроки за столом вдруг решили поменяться местами.

Поскольку поначалу я даже не собирался рассказывать об этом скрипте никому, то «защита от дурака» не предусмотрена практически нигде. Ведущий сам должен следить, чтобы в игре не было двух детективов или маньяков, например.

Игра может начаться только при наличии пяти игроков, для начала игры надо нажать кнопку «Начать игру».

Начало


Перед стартом все редактируемые поля автоматически превращаются в простой текст. Сделано это для того, чтобы впоследствии можно было просто сохранить страничку на диск, если вдруг захочется «сохранить протокол игры».

Всегда есть возможность вернуться к началу, например, если вдруг пришла ещё пара человек, а игра толком и не началась. При нажатии кнопки «Заново» вся информация об игровых действиях «забывается», остаются только имена и роли, которые можно снова изменить – игра возвращается в состояние до нажатия кнопки «Начать игру».

Затем наступает ночь, города засыпает и просыпается мафия…


При нажатии на кнопки они подсвечиваются, таким образом, ведущий видит, что он нажимает. Пока не наступил день (не нажата кнопка «День»), всё можно поменять.

Как я уже говорил выше, «защиты от дурака» практически нет, программа почти никак не контролирует ведущего. Таким образом, может случиться день без смерти и ночь без убийств.


Правда, обычно такого не бывает.

Чтобы ведущему проще было ориентироваться в ситуации, если по соглашению между игроками выбывшие роли не объявляются, кнопки выбывших ролей блокируются, но не убираются совсем. В каждую ночь ведущий может видеть, какие роли он должен «пробудить», даже если они выбыли.

Конец игры

Для данного скрипта не существует понятия «конец игры». Он готов бесконечно обрабатывать нажатия кнопок «Ночь» и «День», тут снова всё на совести ведущего.

Дополнение

По сути вся программа – это html-страничка и скрипты, которые меняют информацию. Поскольку у меня не всегда есть возможность подключиться к Интернет, то всё работает локально – достаточно открыть в браузере html-файл. Разумеется, нужные скрипты должны лежать в той же папке, что и html-файл.

Что в планах

Добавить ещё кучу разных ролей. Кому-то, например, не хватает адвоката, шерифа. Добавить просчёта ситуации, чтобы облегчить работу ведущего, например, когда игра должна 100% закончиться. Добавить-таки регулируемую «защиту от дурака», например, исключить возможность дня без смертей.

Жду ваших дополнений и комментариев.

Заинтересованные личности могут скачать скрипт тут. На текущий момент версия 1.2.

Версия 1.2:
Добавлена вкладка «Настройки», там можно подгрузить другой стиль для отображения элементов.
Конфигурационные строчки вынесены в отдельны файл config.js, так их проще найти, если кто-то захочет что-то изменить…
Файлы распределены по папкам — скрипты в js, стили — в css.
Добавлена переменная $Debug, включающая режим дебаггинга, и функция showDebugInfo, выводящая в слой dDebug информацию.
Исправлена ошибка, возникающая при изменении количества игроков.
Добавлена кнопка с таймером. По умолчанию таймер засекается на три минуты.

Версия 1.1:
Добавлены идеи и оформление от Meft'а: расположение кнопок, значки действий.
Интерфейс сделан более удобным — кнопки управления перенесены вверх, справочная информация размещена отдельно.
Добавлена возможность автоматического назначения ролей в зависимости от количества игроков.
Добавлена подсветка строчек мафии.

Версия 1.0:
Роли: Мафия, Босс мафии, Комиссар, Доктор, Смертник, Красотка (Любовница), Вор, Маньяк, Бессмертный.

Как создать комнату в мафии онлайн

Мафия Онлайн

С другом или с друзьями можно играть только за команду Мафии. Потому что смысл игры "Мафия" - найти Мафию, и если Мирные будут знать, кто Мирный, то этот самый смысл теряется и игра становиться неинтересной.

Далее встаете в поиск с другом.
Выбирайте любую Мафиозную роль, справа появится окно "Пригласить друга", нажимаете, выбираете друга, как только он примет приглашение - нажимаете "Начать поиск".

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

Как создать комнату в мафии онлайн

Ксеня Апптимистка

Вопрос: Куда исчезают скрины в альбомах?
Ответ: Скрины без бана не удаляются. Бан мог быть не выдан по следующим причинам:
1. Не подписана точная копия ника нарушителя.
2. Скрин сделан неправильно, либо он не полный.
3. На скрине нет состава нарушения.
4. Нарушитель не был онлайн при проверках скрина (если баны менее 12 часов-суток)
5. Нарушитель сменил ник.

Вопрос: Как выбраться из чс группы?
Ответ: Обратитесь к админам и узнайте, кто вас туда занес. С него же и спрашивайте. Вынести из чс вас может только тот модератор, который вас туда поставил.

Ксеня Апптимистка

Вопрос: Как играть если не осталось монет?
Ответ: Ежедневно дается зарплата в 40 монет (раз в сутки). Также начисляется бонус приблизительно каждые 10 минут +20 монет (для этого надо сыграть партию). Если на балансе меньше 20 монет (минимальной ставки за игру), бонус дается без партии. Самый быстрый способ – купить игровые монеты за голоса вк или на сайте бестмафия.
Монеты также даются в награду за повышение своей Лиги, за повышение звания, в лотерейных билетах за участие в дуэлях кланов.

Вопрос: Как добавить в Фавориты?
Ответ: Нажимаете на значок "Написать приватно" или открываете профиль нужного игрока – ‘Добавить в фавориты’

Вопрос: Как определяется победитель в драке?
Ответ: Игра выбирает, кто выиграет. Кто-то говорит, что победа зависит от того, сколько очков рейтинга ты набрал за день, кто-то делает упор на роль в игре, кто-то считает, что выигрыш зависит от того, голосовал ты первый или же второй. Но выбирает игра, так что нужно везение.
Победу принесут вам Перчатки (экстра). Если у вашего противника тоже есть Перчатки, исход драки определит рандом.
Маньяк и босс побеждают в драках всегда. Маньяк побеждает босса. Чтобы иметь равные шансы в драке с Маньяком/Боссом, нужно прокачать соотв. талант.
На данный момент решающую силу имеет ивентная экстра Кастет.

Вопрос: Как дарить подарки?
Ответ: Открываете профиль игрока, жмете "подарить подарок", выбираете подарок.

Вопрос: Что такое слив?
Ответ: Слив это:
1) Скидывание своей роли в чат/в приват.
2) Скидывание роли напарника в чат/в приват.
3) Копирование ночи в чат/в приват.
4) Когда спускаешь воду в унитаз.

Вопрос: Что значит свергнуть босса (убить босса) в чате игры?
Ответ: Свергнуть босса значит поставить на его место свою фотографию и любоваться ею до тех пор, пока то же самое не сделает кто-то другой. Стоимость всегда разная, указана под фотографией.

WhoIsMafia — новый вид online развлечения

WhoIsMafia - webcam-game

Наверняка некоторые из вас помнят мой пост двухнедельной давности, в котором я показывал, как можно организовать многопользовательскую видеоконференцию используя peer-to-peer технологию Flash-платформы. Сегодня я представляю на суд общественности не просто концет — теперь уже стартап. Знакомьтесь.

Идея игры
  1. Мафия — очень простая, понятная и чертовски популярная игра
  2. Пока еще в инернетах многопользовательские видеоконференции — абсолютная инновация
  3. Браузерных игр, основанных на реальном face-to-face общении большого количества людей, даже у америкосов еще нет
  4. Для нормальной игры по предварительным расчетам нужен более-менее вменяемый комп, вэбкамера и средненький интернет (по крайней мере по меркам Default City)
  5. Исследование новейших технологий — это именно то, чем хочет заниматься на мой взгляд любой адекватный айтишник. Это то, что не дает нашим мозгам засохнуть и заставляет улыбаться от уха до уха.
  6. Президент сказал — надо делать игрушки. Сказано — сделано :)
Игровой процесс

Скриншот WhoIsMafia.com

Так выглядит комната, наполненная людьми. Некоторые живы, некоторые в тюрьме, некоторые мертвы. По ссылке большая картинка.

Старт

После того, как загрузится приложении (порядка 800Kb), Flash-плеер соединяется с Adobe Stratus — RTMFP-платформой, помогающей организовать p2p соединения между плеерами. Нужно разрешить плееру использовать p2p и вэбкамеру. Иначе ничего работать не будет. Проверяется наличие камеры (must have), пользователь вводит свое имя и попадает в лобби (общую комнату), где можно создать или выбрать подходящую комнату для игры. Обратите внимание, пользователи тут анонимные, никакой регистрации не требуется, т.к. люди и так неохотно показывают свои лица в интернете. Пока интернет-общественность не готова к тотальной деанонимизации. Думаю, пару-тройку лет, и люди перестанут этого бояться :)

Выбор комнаты

У каждой комнаты есть описание, язык общения (надеюсь заразить Мафией весь мир), предпочитаемый возраст игроков и минимальное количество игроков. Если количество игроков окажется больше, чем предполагалось при создании комнаты, можно либо кикнуть некоторых, либо играть в таком составе.

Как вы знаете, в каждом анонимном видео-чате обязательно есть дрочилы. Я совершенно не понимаю, зачем тыркать хером в интернет, но оградить игру от таких господ не в состоянии. Единственное разумное, что пришло в голову — это Бан. Пока это просто ограничение на входжение именно в эту комнату, но в будущем можно будет продумать и реализовать что-нибудь более жестокое.

После того, как наберется достаточно игроков, создатель комнаты (админ) запускает игру. Пользователи получают карту. Пока в игре 4 вида карт:

1. Мирные жители (зеленая карта)

Днем мирные жители пытаются выяснить, кто является мафом, и посадить его путем голосования за решетку. Ночью они спят, ничего не делая. Это неорганизованное большинство.

2. Мафия (красная карта)

Они в игре являются организованным меньшинством. Мафы видят друг друга и знают, кто есть кто. Днем изо всех сил пытаются сбить мирных жителей с пути истинного и заставить их посадить друг-друга, а еще лучше — посадить полицейского или доктора. Ночью мафы путем голосования выбирают жертву. При этом ночью мирные жители не видят видео мафов, а мафы могу общаться друг с другом. Мафы должны придти к единому мнению, поэтому они могут свой голос изменить, если этого потребует ситуация.

3. Комиссар (темно-синяя карта)

Этот мирный житель обладает особой возможностью — ночью он может выяснить статус любого игрока. Единственное — сделать он должен это раньше, чем мафия убьет кого-нибудь. Это нововведение именно моей реализации игры, придающее ей особый драйв :)

4. Доктор (бирюзовая карта)

Тоже мирный, но ночью может защитить любого игрока. Сделать это он так же должен до тех пор, пока мафы не договорились о жертве.

Голосование

Если в результате дневного или ночного голосования получается равное количество голосов, результат выбирает Святой Рендом (простите, но это ИМХО самое уместное в интернене решение). В будущем можно будет сделать что-нибудь более классическое.

Победа

Победила та команда, которая полностью уничтожила другую — либо мафы, либо жители. В будущем можно ввести массу дополнительных статусов, фантазия игроков в Мафию безгранична :)

После окончания игры становятся видны все карты, у игроков есть возможность обсудить игру. Так же игра становится доступна в общем списке и к ней могу присоединиться все желающие.

Общение

Помимо видео, клиенты передают друг другу еще и аудио-контент. Так что если хотите полноценной игры — запаситесь микрофонами. Для того, чтобы избежать дикого эха (все-таки 6+ игроков, у каждого своя пропускная способность, свои лаги), звук передается только в том случае, если пользователь нажал кнопку «ON AIR». Если два пользователя говорят одновременно — будут слышны оба. Но это как перебивать друг друга в жизни — неприлично. Если кто-то совсем расшалился — ему можно отключить звук на принимающей стороне. Благо всегда видно, кто именно говорит.

Весь интерфейс на корявом английский языке. Сделано это не случайно. Во-первых, весь интернет говорит на английском. Во-вторых, локализацию сделать не очень сложно позже. Ну и в третьих, слово VOTE переводится на русский ГОЛОСОВАТЬ, а хотелось, чтобы кнопочки были аккуратными. Если найдете ошибки — пишите, исправлю.

Технологии
AppEngine
Multicasting

Сервис построен на технологии Peer-to-Peer, а точнее Multicasting, появившейся во Flash Player-е в 10.1 версии. В прошлом посте для организации трансляций я использовал прямое соединение между клиентами. В итоге если в комнате присутствовали 8 человек, то у каждого клиента было открыто по 14 потоков — 7 в одну сторону 7 в другую. Мультикастинг позволяет клиентам оптимизировать нагрузку на сеть, передавая принимаемые потоки далее друг другу внутри группы.

Posting
Графика/Код

Графика сделана в Adobe Illustrator (да, знаю, простовато), потом перекинута в Adobe Flash Catalyst. Там она была превращена в компоненты (кнопки, списки, custom-компоненты), к ним добавлена анимация при переходе из одного состояния в другое, а затем все это добро перекинуто во Flash Builder, где и добавлен функционал

Перспективы

Я оптимист. Я вижу гигантские перспективы и у p2p-технологии в общем, и у Flash-p2p в обще-частном, и у моей игры в частности. Через некоторое время я обязательно отпишусь, сколько денег мне стоил хостинг и какое количество людей играло в игры. А пока буду наслаждаться жизнью и ждать выгодных предложений :)

Резюме

UPD 19:30 Обновил и сервера, и клиента — часть багов выгнал, учел некоторые пожелания. Обновите клиент CTRL+F5, если вы играли ранее.

Читайте также: