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

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, если вы играли ранее.

Продолжение: Видео-мафия онлайн
+98
18 сентября 2010, 15:26
56
Bobos 52,7

комментарии (62)

+8
rrock #
Блин, у самого именно эта идея была, но всё руки до реализации не доходили… А тебе респект! И, я думаю, что если продолжишь этот проект, то он будет очень успешным, так как мафия приобретает всё большую популярность, открываются спец клубы, а уже если можно играть не отрываясь от любимого кресла, то народ повалит валом!!!
+2
docomo #
Всегда думал, что Мафия — это та самая игра из Facebook'а, в которую я ни разу не играл.
Оказывается, это что-то другое, и уже «риобретает всё большую популярность, открываются спец клубы»…
Ребят, вы когда это все успеваете-то — и работать и в играх разбираться? :)
+4
chEbba #
Я вот в мафию еще в школе играл, насколько я понимаю, она как раз была популярна во всяких математических кругах, на уровне всяких быков-коров.
+2
olegman #
Да ладно вам, вот Дмитрий Гришин, гендиректор Mail.ru — друид-эльф 80-го уровня. Как-то успел и прокачаться и возглавить один из самых посещаемых проектов рунета.

пруфлинк: www.forbes.ru/svoi-biznes/predprinimateli/56771-ruka-moskvy#cot-5
+1
rrock #
ну так это игра, в которую я еще в школе играл… благодаря ей очень хорошо учишься контролировать свои эмоции… мне это всегда помогает во всяких ругачках)))
+5
believe #
Очень здорово, что такие классические игры, как Мафия, переводят на новый уровень в Веб. Дай вам бог удачи! :)
+1
Bobos #
Ой, спасибо огромное, она мне пригодится.
+1
bydunai #
Идея хорошая. Будет ли возможность создавать закрытое лобби?
0
Bobos #
Закрытые комнаты — я думаю да, причем с сылкой в браузер, чтобы запостить в IM и по прямой ссылке входить. Но всему свое время — сначала отработать менанику
+1
Bobos #
Пардон, механику
+3
Mawerik #
Ох и багов то. Если ты реально хочешь на долго запустить такой проект, то работать тебе много.
+8
Bobos #
Только так можно потестить, когда один — все работает прекрасно 8)
0
diostm #
Жаль лишь, что «двух-мегабитный безлимитный канал»
многих лишает возможности поиграть.
+1
Bobos #
Это вопросы пары лет ))
0
Kakysha #
Bobos крут, это действительно инновация в интернетах, пока еще. А самое крутое виртуальное пять тебе за двухнедельный марафон!) Вот до чего доводят идеи!)
Огорчает одно — 2 мбит/с в нашей общажке нет (((
+1
Bobos #
Спасибо, но после тестов стало понятно, что это кончится еще очень не скоро )))
+1
LORiO #
win7, opera 10.62, Flash Player 10.1+
при открытии сайта вылезает окно с настройками флэша, и оно не кликабельно и текст почти не видно.
Вот на этом и закончилось общение с сайтом
0
SKYnv #
да ) подглючивает страшно )
+1
Bobos #
Альфа-тест )) только для своих )
+1
Demir0 #
наивни :) если понравится, счас ссылка быстро раскидается по аськам :)
+2
WaveMeUp #
Чтож вы в автора вцепились. То что будет лагать, это изначально было понятно. Однако, у меня работает. Спасибо за работу! Желаю вашему проекту успеха!
+1
Bobos #
Спасибо вам за теплые слова
+2
hurumba #
Смотри, по твоим правилам — если мафия будет выбирать жертву сразу, как начался их ход — тогда поражение мирных жителей почти обеспечено, так как ни комиссар, ни доктор не смогут использовать свои привилегии.
+1
Bobos #
Все зависит от мирных — если они будут думать башкой, все будет нормально. А вообще тут хотя бы поиграть — очень дикие лаги, нужно полностью пересматривать таймауты и протокол :) в наших реалиях нихрена не работает
0
hurumba #
А вообще идея хорошая. Желаю удачи!
+1
Bobos #
Спасибо, очень приятно
+4
Mi0zi #
Если автор не бросит проект и изловит все баги, то добьется успеха
+2
Bobos #
Ни за что не брошу )
0
grokinn #
идея отличная. правила самое то за одним исключением — в классической игре мафия побеждает если осталось равное количество игроков и мафии. Это справедливо, зачем отдавать игру на откуп рандому, игра же психологическая. кроме того обычно если после дневного голосования осталось на одного мирного жителя больше чем мафии то ночь не проводится. Это придает игре больше напряжения (мафия не может так просто победить, ей необходимо убедить хотя бы одного игрока).

кроме того отсутствие регистрации конечно хорошо, но предлагаю все же сделать регистрацию по желанию, на случай если человек хочет поиграть со своими друзьями а не со случайными людьми.
+1
Bobos #
Все будет. Насчет рендома — есть варианты, когда голосование проводится, но если голосов поровну — трупа определяет не жребий, а голосование зрителей ;) Но всему свое время
+5
CAH4A #
У меня дежавю. Кажется, что опять в камеру письками тыкать будут… -)
+4
AusTiN #
я никак не могу понять, зачем тыкать хуем писькой в камеру… О_о
0
CAH4A #
Был такой стартап — «Chatroulette».
Он достаточно быстро захватил большое количество эксгибиционистов во всём мире, прославив своего создателя, семнадцатилетнего парня, как супер успешного молодого стартапера.
0
FlamingDeth #
Денег он не заработал, инвестиции не получил. Где успешность?
Загнать толпу леммингов и через месяц ее потерять — бесполезная трата времени.
0
CAH4A #
Да! Ради Бога, мне, что каждый раз показывать табличку «сарказм», когда я открываю рот?
+3
FlamingDeth #
Кстати, это была бы полезная функция в Хабре. :-)
0
AusTiN #
У тебя есть табличка «Сарказм»? ©
прошу прощения за обращение на «ты», это цитата сами знаете откуда ;-)
0
AusTiN #
спасибо, капитан
я в курсе что такое Чатрулет, спасибо за разъяснение… мой вопрос подразумевал психологическую сторону данного явления :)
+1
Mihalich88 #
Идея супер, респект! НО приложение виснет на «Connecting to network. Wait a second...»
+1
Bobos #
Видимо файерволл или что-то вроде того. Нужно события и таймауты еще много-много раз пересматривать и перепроверять в различных условиях.
0
mr47 #
Вот идея то хорошая, а вот выбранная «мафия» — плохая, лучше сделай не (как ее называют в профи клубах по клубной мафии) «было-мафию». В чем проблема создается масса персонажей лишних и не кому не нужных и много сложностей. Лучше клубную, она чище рассчитана именно на интеллект имеет небольшой список правил и не нагружает игрока, а поощряет его придумывать логические и запутанные цепочки, что гораздо интереснее…
+1
Bobos #
Там база заложена. И сверху все допы. Пока для тестов правила зависят от числа играющих
0
allter #
Следующий шаг — сделать «шарады» («ассоциации»).
+1
Bobos #
Покер?
0
allter #
Тоже хорошая вещь. :)
0
FlamingDeth #
Это не стартап, это т.н. proof of concept. Кусок осмысленного кода.
0
FlamingDeth #
На 5Мб лагает страшно. Не играбельно.
0
IamIvan #
Отличная конкуренция мафияонлайн.ру, раньше почти каждый день играл, но там проблемы с серверами (что очень бесит) и нет веб камер =)
Если сделаете:
1. возможность создавать игры без веб камер — не всегда есть возможность включить камеру, а поиграть хочется
3. Русский интерфейс
3. Всякие разные интересные плюшки =))
И сервера будут выдерживать высокую нагрузку.
То будет супер!!!

p.s. первый пункт можно заменить на облегченную версию сайта (без звука и видео)
+1
twangel #
Проблем с серверами у нас не наблюдалось достаточно давно. :)
0
Denter #
А можно чуть подробнее про Muliticasting? Потому как данный термин определяет вполне конкретную сетевую технологию. И данная технология, к сожалению, в глобальном Интернете работать не будет. Даже при разворачивании её в границах локальной сети компании или провайдера (для то же IPTV) нужны серьёзные танцы с бубном.
Т.е. если игроки будут в пределах одной локалки или домашней сети, может и будет работать.

Или Вы по данным термином что-то другое подпазумеваете? Хотя я не совсем себе представляю, что может быть ещё.

В принципе для многопользовательских конференций есть всего три работающих технологии сетевого уровня:

0
Denter #
Блин, слетело.
Так вот
— Full mesh: каждый передает свою картинку каждому. Количество учасников ограничивается возможностями самой слабой точки
— Multicast — Каждый отдает один поток и получает поток от каждого. Требует серьёзных предварительных настроек ВСЕГО сетевого оборудования между участниками вплоть до свичей.
— Использование оборудование агрегации потоков. Каждый учасник отдает один поток и получает один агрегированный поток от данного оборудования. Количество определяется возможностями данной железки. И это уже — ни разу не p2p.

Сейчас для видео конференций как правило используется именно последний вариант. Но для Вас это, очевидно, не подойдёт.
+1
Bobos #
Почитайте />тут, с картинками, очень наглядно.
0
Demir0 #
Ну, небольшой багрепорт (правда, мало конкретики):

1) Длинные сообщения залазят за кнопку отправки.
2) Все подвисает немного и происходит что-то непонятное. Нужно чтоб сообщения выдавались как-то по центру и всем были видны одновременно, а не в чате.
3) Игра проходит быстро как-то.
4) 30-40% камер не видны.

Понравилась идея со скринами камеры при отсылке сообщений :)

В общем, удачи!
0
k0tyara #
Идея хороша, но играть пока практически невозможно.
0. Множество багов.
1. Нет прокрутки, как следствие часть игроков оказываются за пределами экрана и проголосовать за них не получается.
2. Неявное разграничение день\ночь
3. Отсутствие правил или подсказок по игре
0
micbsv #
Я держал в руках Томми-ган, который на фотке - ужасно неудобный, длинный, тяжелый автомат.
Почему он был такой популярный…
+1
AusTiN #
м.б других не было? ))
0
Modul_Z #
шикарная идея. предлагаю обсудить кое-какое сотрудничество лично. мои контакты в профайле.
0
Smarty #
Connecting to network, wait a second………………
0
drayv #
чет никто играть не хочет.)
0
Basilevs #
Идея правильная. ее в деньги не сложно превратить. Вы в Москве?
0
Belidor #
Пустовато

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