Всем привет.
Творческая работа Видео мафия кипят вовсю.
Напомню, WhoIsMafia — это новая экспериментальная версия игры Mafia, основная идея которой заключается в том, чтобы игроки общались «вживую» посредством камер и микрофонов.
Сервис практически полностью сделан по одноранговой технологии, видео транслируется напрямую между клиентами, а за всю игровую логику отвечают сами клиенты.
Сегодня я представлю хабрапаблику новое обновление и опишу некоторые технологические трудности, которые иногда ставят меня в тупик.
Обновлять
- Добавлена очень важная функция для развития проекта - просмотр игр и режим «без камеры».
Те.
даже если у тебя нет веб-камеры , вы сможете наблюдать за ходом игры, общаться с другими зрителями и игроками в перерывах между играми.
- Оптимизирована серверная часть - список комнат обновляется быстрее, корректнее и своевременно.
- Был переработан стартовый экран - теперь там есть подсказки, которые помогут пользователям, не знакомым со спецификой флеша, запустить игру.
- Чат и системные сообщения были основательно улучшены, что делает игру более комфортной и понятной.
- Добавлена сетевая статистика - теперь вы примерно можете видеть, сколько пользователей на сайте в данный момент и сколько зрителей смотрят вашу игру.
- Ну и как всегда была проделана огромная работа по устранению ошибок, а также по наполнению игры новыми видами ошибок :)
Технологическая дилемма: использовать или нет
Когда я начал работать над проектом, мне просто хотелось попробовать реализацию p2p во флеше.И если с передачей видео всё понятно (видео — это тяжёлый контент, который не следует отправлять через сервер), то с игровыми сообщениями всё не так однозначно.
С одной стороны, использование p2p в игре дает огромное преимущество при разработке.
Во-первых, вместо реализации и сервера, и клиента мы реализуем только клиент. В данном случае можно принять за аксиому, что у всех пользователей сервиса один и тот же клиент, а значит, все они работают по одним и тем же правилам.
Во-вторых, это открывает огромные возможности для масштабирования приложения — вам вообще не придется беспокоиться о нагрузке на сервер.
Ведь в этом случае от сервера требуется лишь познакомить клиентов друг с другом.
Хотя в принципе эти функции можно возложить на клиента – есть технологические возможности.
Но у каждой монеты есть и обратная сторона.
И самая большая проблема — синхронизация действий игроков.
Попробую объяснить это на пальцах на примере Мафии.
В игре имеется однозначное начальное состояние – начало игры.
Карты еще никто не получил.
Карты раздаются случайным образом – как это сделать? Здесь есть два варианта – либо назначить карточного босса, либо делать это вместе, при этом каждый клиент вносит небольшой вклад в ранд. Второй вариант объяснить сложно, поэтому рассмотрим первый вариант с лидером.
Один из клиентов назначается руководителем.
Допустим, это сделал веб-сервер и каким-то образом передал эту информацию клиентам.
После этого хост выступает в роли сервера.
Но:
- Хост может отключиться в любой момент
- Сообщения от ведущего могут не дойти ни до одного из клиентов
- Сообщения могут отправляться не в том порядке, в котором они были отправлены — ведь для связи RTMFP используется протокол UDP, который не гарантирует доставку.
- И, наконец, сообщения, отправленные хостом, могут быть фейковыми.
По первой проблеме, если ведущий долго не отвечает, хотя время уже пришло, его можно сменить.
Но как это сделать? Ведь то, что ведущий не отвечает, может «представиться» только одному игроку, а с учетом пунктов 2 и 3 оно обязательно появится.
Ну а раз так, давайте сделаем так, чтобы каждый клиент мог стать лидером, если ему вдруг покажется, что лидер исчез.
Тогда возникнут новые трудности – а что, если ведущий уже разослал важное сообщение всем клиентам, но один его не получил, он стал ведущим и снова отправляет это важное сообщение, но в своей интерпретации? Более того, он может сделать это специально – пункт 4. И это лишь верхушка айсберга в индустрии одноранговых игр.
Но я абсолютно уверен, что все эти трудности решаемы, просто мне пока не хватает квалификации и опыта.
За последние две недели я неоднократно думал, что неплохо было бы перевести игру на что-то вроде XMPP :) Но пока я не сдаюсь, я верю, что будущее за одноранговыми играми (по крайней мере, казуальными).
Поэтому если у вас есть опыт создания одноранговых игр, прошу поделиться, все будет позже.
Продолжение: Годовой отчет WhoisMafia Теги: #Децентрализованные сети #игра #видео #peer-to-peer #whoismafia #mafia
-
Создание Образа Моны Лизы В Игре Жизни.
19 Oct, 24 -
Краткое Сравнение Онлайн-Переводчиков
19 Oct, 24 -
Прослушивание Правок В Википедии
19 Oct, 24