Pull to refresh

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

Reading time5 min
Views1.9K
WhoIsMafia - webcam-game

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

WhoIsMafia.com — сервис, позволяющий играть в популярнейшую салонную игру Мафия не выходя из дома. Мало того — не выходя из браузера. Для этого достаточно иметь Flash Player 10.1+, вэбкамеру и хотя бы двух-мегабитный безлимитный канал. Что из себя представляет сервис, технические подробности и игровые тонкости можно прочитать под катом.

Идея игры


Идея игры родилась на следующий день после ощупывания ручками real-time технологий 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

Серверная часть сделана на GAE. Хотя GAE нужен в общем-то для очень больших нагрузок, здесь он используется только на начальном этапе — познакомить клиентов друг с другом. Дальше все игровые операции происходят внутри сетевых групп (NetGroup). Сервер не принимает в них никакого участия — на в трансляции видео, ни в передаче игровых сообщений.

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 в обще-частном, и у моей игры в частности. Через некоторое время я обязательно отпишусь, сколько денег мне стоил хостинг и какое количество людей играло в игры. А пока буду наслаждаться жизнью и ждать выгодных предложений :)

Резюме


Игру я только сегодня собрал, еще никто её не тестировал, так что багов там полно. Специально для этого игре есть возможность оставить feedback, пожалуйста, пользуйтесь ею, буду вам очень благодарен. Если игра понравится — вот группа в фейсбуке, а вот твиттер. Присоединяйтесь, буду рад всех видеть.

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

Продолжение: Видео-мафия онлайн
Tags:
Hubs:
+98
Comments62

Articles