Flash-игра «Мафия» в условиях «В контакте»

    Цель этой статьи — описание процесса создания приложения, на примере моей игры «Мафия» под «В контакте».
    Тем, кто не знает (хотя лично я что-то очень сомневаюсь, что найдутся такие) что это за игра, рекомендую почитать ее описание на Википедии.

    Если вы знаете, что такое As3, Flex, Java, многопоточность, постоянное сокетное соединение или вам просто интересно как пишутся flash-игры, то думаю пост для вас!
    Под катом также найдется немного статистики.


    Я – фанат «Мафии»


    Именно так я называю себя с тех пор, как впервые в нее поиграл. Фанатами были все мои сокурсники, и это тоже неудивительно – в «мафию» играли все»! Когда же я стал профессионально заниматься разработкой Flash-игр, то задумался о написании собственной версии игры. Но все время чего-то не хватало. Однако эта мысль всегда служила фоном всему, что бы я ни делал.

    Помог «Крокодил»


    Поскольку была идея, то я постоянно мониторил в интернете ее реализацию. Но какой бы вариант мне не попадался – все время что-то не устраивало. Один недостаток объединял практически все версии – они были достаточно сложными. А мне хотелось создать такую игру, чтобы юзер просто, не задумываясь ни о чем, зашел и сразу же начал играть. И в этом мне помог «Крокодил» ‒ простая реализация сногсшибательной идеи! «Подвиснув» на несколько дней на зеленом хвостике контактовского «Гены», я нашел недостающее звено и принялся за написание собственной Flash-версии «Мафии». Но был еще один вспомогательный момент: так сложилось, что незадолго до начала работы, меня попросили помочь в реализации игры по написанному литературному сюжету. Однако там все оказалось гораздо сложнее, чем представлялось (он-лайн РПГ с большим количеством монстров на карте), и возможностей флеша не хватило. Проект сошел на «нет», но разработки остались. Именно эти разработки и пригодились мне при написании «Мафии» под «В Контакте». Соединив свою разработку с принципом игры «Крокодил», я получил то, что есть сейчас.

    Дизайн


    Средств на услуги профессионала у меня не было, и нет сейчас. Поэтому я использовал свои способности: рисовал все сам прямо во флеше. Немного помогла подружка – второй вариант иконок слегка доработала она.

    Какие инструменты я использовал для реализации идеи?


    1. Ресурсы, графика ‒ как я уже сказал, Adobe Flash 4.
    2. Код клиента – Action Script 3. Разработку вел в среде Flex.
    3. Сервер ‒ писал на Java. Здесь хочу сказать, почему выбрал именно Java. – Все просто. Посмотрел в интернете тесты на производительность Java и C++. Они мало чем отличались друг от друга, но Java очень похож на Action Script 3, что и послужило главным критерием выбора. Однако впоследствии этот выбор обернулся плюсами лично для меня:
      1. Скорость разработки возросла, потому что время переключения между языками сводилось к минимуму.
      2. В Java автоматизирована система работы с памятью, а мне, как не любителю лишних заморочек, это на руку.
      3. Сократилось общее время разработки, поскольку Java имеет много специализированных классов, предоставляемых разработчиками языка. Зачем изобретать велосипед, если его уже изобрели до меня?
      4. Многопоточный сервер, написанный на С++ ‒ довольно трудоемкая вещь по сравнению с такой же штукой на Java.
      5. Java запрещает не обрабатывать исключительные ситуации (конструкция try/catch).
    4. Связь клиента и сервера – осуществляется посредством постоянного сокетного соединения, а не на http-запросах, как это принято в большинстве случаев.
    5. Музыка ‒ написана профессиональным композитором-аранжировщиком в рамках спонсорской помощи.


    Структура проекта


    Игра построена по принципу горизонтального масштабирования, по крайней мере, я старался этого принципа придерживаться, потому что приложение писалось под «В Контакте», где аудитория потенциальных пользователей очень велика. Неделя после запуска игры показала, что аудитория растет лавинообразно, а это значит, что я был прав: меньше, чем за неделю, в игру поиграло более 15000 человек (без рекламы и продвижения – только по друзьям!), при одновременном минимальном количестве игроков 200 человек; максимальное количество игроков, одновременно он-лайн за это время было 600 человек. Для обслуживания всей этой аудитории сейчас хватает двух, работающих независимо друг от друга, «демонов» (экземпляров сервера). При возрастании нагрузки я планирую увеличивать количество «демонов», а их, в свою очередь, разносить по серверам.

    Сроки написания игры


    Игра была написана за 2 недели (при учете того, что я использовал предварительные разработки – о чем писал выше).

    Пробная версия


    В заключение хочу сказать, что с технической точки зрения игра запущена в варианте бета-версии: идет отладка всех процессов в условиях увеличения нагрузки; параллельно улучшается гейм-плей; уравновешиваются силы команд. Хочется добиться того, чтобы всем было приятно играть.

    Ресурсы (статистика)


    Игра запущена на выделенном сервере (спонсорская помощь друга).
    Характеристики сервера:
    1. Intel Xeon X3440 2.53GHz
    2. 8 GB RAM
    3. мать Intel S3420GP

    Один «демон» потребляет при минимальной нагрузке 0,3% процессора и 2% оперативной памяти. При повышении нагрузки увеличивается загрузка оперативной памяти. Загрузка процессора колеблется в пределах десятых долей процента (до 0,5). При этом сервер не обременен нагрузкой со стороны других проектов.

    Ссылка на игру

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 36

      0
      Connection.SECURITY_ERROR
      Поиграть не получится?
        0
        Ну скорее всего у вас открыт только 80ый порт,
        если так, то играть оттуда откуда вы пытаетесь — не получится(
          +1
          Может стоит как-то предупредить пользователей, что через прокси вы не поиграете? У меня не только 80 порт открыт.
            0
            Добавил в TODO лист.
        0
        Уж простите, но получилась не игра, а полнейший маразм:

        dreik.net/crap/shots/20100615-3r4-30kb.jpg — в приличном обществе за такое канделябром.

        Ну и проблема в реализации:

        dreik.net/crap/shots/20100615-46j-90kb.jpg — Давно умершие люди продолжают разговаривать как ни в чем не бывало.
          +2
          Умершим разрешно писать в комнату сообщения 1 раз за фазу — дабы люди поддержали свою команду, и посмотрели на завершение игры. Без этого люди просто выходили не дождавшись результата (выиграла его команда или нет). В реальной дворой то игре люди не сбегают сразу домой! А тут всё-таки интернет и ничего с этим не поделаешь(((
            0
            Как это происходит в реальной жизни — сильно разниться и очень сильно зависит от участников.

            Я по сути два года являюсь более чем активным игроком в клубе SPROOT (club471625) (Иркутск, Москва, С-Пб и другие города (сейчас, к сожалению, не вспомню где еще проводятся игры от нашего клуба, помню были попытки запуститься в Казани, на Украине, Германии, США, но где запустилось, а где нет — особо не интересовался)).

            Если есть возможность — посмотрите логи, от г-жи Ириша, если, конечно, меня не сильно глючит по утру, было два сообщения после смерти.
              0
              Но собственно к чему это я всё. К сожалению, я еще не видел ни одной достойной реализации данной игры в онлайн.
              Лично я вижу решение для данной игры лишь в виде аудио+видео конференции, где каждый участник видит лица остальных игроков и слышит их же.
              Более того, минута времени в режиме текста — мягко говоря ни о чем, большинство толком ничего написать не успеет. А тут ведь еще и думать+анализировать требуется.
                0
                Я полностью с вами согласен! Уж простите — то что сделал за 2е недели как смог(((
                Ну я не собираюсь останавливаться на этом — буду развивать, улучшать, прислушиываться к пользователям и наводить баланс…
                  0
                  Я ни в коем случае не критикую Вашу реализацию, просто, к сожалению, я не вижу возможности «нормальной» реализации данной игры в интернете (на случай паблик игр). Если состав участников известен заранее и люди между собо знакомы — еще есть возможность нормально сыграть (разумеется, если нет предварительного сговора). В противном случае — увы, ну или это мне так невезло на онлайн-мафии. :=)

                  В любом случае Вы молодец! Даёшь продвижение этой прекрасной игры. :=)
                  +3
                  Сдается мне, что Мафия в форме видео-конференции с рандомными участниками превратится в подобие тусовки извращенцев вроде чатрулет.
                    0
                    Вменяемый модератор, думаю, справится с этой задачей. ИМХО, данная игра не может быть оставлена на робота, а в формате «конференции», опять же имхо, обязателен ведущий.
                      0
                      Мафия в видео аудио-видео конференции не окупится никогда в жизни… Нагрузка дикая будет
                        0
                        Понимаю, что рискую нахватать минусов, но: Это индустрия развлечения, тут платят за многое.

                        Пара вариантов навскидку:
                        1) Есть такое понятие как элитарность — за неё платят. Клуб по игре Мафия с действительно сильными игроками, которые хотят думать и развиваться легко становится элитарным.
                        2) Русские переехавшие в другие страны, которые любят и знают данную игру — заплатят за возможность _нормально_ поиграть.
                        3) Те, кому лень собирать «тусовку» у себя в городе, районе и т.п., но хотят поиграть — заплатят.
                          0
                          мне кажется, что на данный момент всё равно слабоокупаемое это занятие, хотя мне тут подумалось, что в последнем флеш-плеере поддерживается передача видео напрямую от клиента к клиенту, а сервер только адреса раздаёт.
                  –4
                  Да за такое надо сразу слать игры такие далеко и ещё дальше.
                  Писать после смерти писать вообще нельзя, это портит игру.
                  А уж о правилах… про доктора и комиссара не сказано ничего в самом начале, как будто их там и нет. Не сказаны расклады когда есть доктор и комиссар.
                  З.Ы. Спруту привет :)
                  0
                  А монетизация планируется?

                  Если да, то какая?
                    +2
                    Да планируется, но нескоро — сейчас главная задача добиться стабильности сервера.
                    Если монетизация будет, то не в ущерб игре, а просто, если человек хочет чего-то большего он получит.
                    –1
                    Вы конкурентов смотрели?
                    (у них хоть и тормоза жуткие, и сервера отваливаются) но вот реализация, простите меня, получше…
                    Толи все быстро слишком, роли как-то не явно обозначены, вешание происходят на раз-два, а надо дать время «оправдаться»… и т.д…
                      +9
                      Хочу отметить, что в последние года полтора меня Хабр несколько разочаровывает. Пример тому, этот пост.

                      Я сам не разработчик, однако мне кажется, что это нормальный топик с технологической составляющей. Я предполагал, что его обсуждение должно было идти в русле «почему ты использовал этот способ, а не другой» или «расскажи подробнее, как ты решил такую-то проблему». А выходит, что дискуссия на уровне «онлайн мафия — отстой» и «другие игры лучше, там еще можно ферму выращивать».
                        –2
                        А меня разочаровывает что вместо попытки нормальной реализации браузерного варианты игры и в дальнейшем (возможно) перевод на платформу приложений для ВК люди рвутся сразу урвать денег и создают варианты только под ВК, которые ещё и не очень реализованы (говорю с позиции того, кто играл в браузерную «мафию» четыре года).
                        Как уже сказал выше один хороший человек, который играет в элитном клубе в «мафию» в жизни, «мафия» игра элитарная и подходить к реализации её надо тоже элитарно. А то вон рамблер создал мафию на флеше, потом как-то странно отпочковались с рамблера разработчики в ВК и создали (maffia.vkontakte.ru).
                        Говоря простым языком — нахрен эти «рюшечки, цветочки», которые так популярны в приложениях в том же ВК, нужна более грамотная реализация.
                        –3
                        а откуда инвентарь из магазина? отсюда scribbler.ru/mafia/game?
                        • НЛО прилетело и опубликовало эту надпись здесь
                            +3
                            пошла реклама конкурентов ))))
                              +8
                              Автор молодец. Написать за 2 недели сервер и клиент, да еще с учетом масштабирования. Плюс дизайн сделать (хоть не супер, но все же хоть что-то).
                              Я как разработчик проникся уважением.
                              Многопоточные сервера писать это вам не плюшки в магазине покупать.

                              Эх, мне бы такую производительность.

                                +1
                                Очень достойная реализация, конкуренты могут только завидовать такой скорости разработки!
                                  +1
                                  Как выше писали, на Хабре хотелось бы увидеть не пиар, а код и проблемы решенные во время разработки!
                                    +1
                                    Особенно после сего упоминания:
                                    > Если вы знаете, что такое As3, Flex, Java, многопоточность, постоянное сокетное соединение или вам просто
                                    > интересно как пишутся flash-игры, то думаю пост для вас!
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                    +1
                                    Суть поста к сожалению сводится только к «я написал мафию на AS3 + сервак на Яве». Полезной инфы кроме пиара — минимум.

                                    PS: Музычка порадовала. Очень приятно!
                                      +2
                                      Согласен с вами. Мой недочет. Чуть позже напишу продолжение, где опишу имеено техническую составляющую игры. Возможно даже будут графики )))
                                        0
                                        Очень жду описание технической стороны :)
                                        Конкретно что использовали для взаимодействия через сокеты? Собственный протокол? Какая-нибудь защита предусмотрена?
                                      +2
                                      Хотелось бы кстати чтобы приложение не запрашивало доступ к друзьям, а то моя паранойя начинает включаться.
                                        0
                                        Автор, сколько одновременных подключений выдерживает ваш сервер на Java? Как с потребляемой памятью? Думали ли о стратегии масштабирования?
                                          0
                                          до 1000 коннектов выдерживал пока…
                                          Стратегия масштабирования уже сделана — есть возможность запускать кучи серверов на разных машинах)))
                                          0
                                          с 15 июня прошло уже больше 4-х месяцев, а даже банальный вопрос в игре: в каком случае присуждается победа мафам так и неотлажен — clip2net.com/s/AYG7 сидеть и тупо «домачивать граждан» — уг…
                                          и так далее и тому подобное: ни слова о коме и доке, музыка такая уже давно существует и писалась полюбому не под эту мафию, некая пародия на скрибловскую…

                                          любая игрушка будь она супер сложная, на что жалуется ТС или же она легкая простая — вс едолжно быть продумано до мелочей, написать слово мафия, запустить на сервер и т.д. — лучше бы ты эти две недли сейчас потратил на создание самой игрухи… а напротяжении 4рех месяцев продумывал полностью концепцию всей игры… в этом случае — был бы смысл обсуждения…

                                          тому кто написал выше про первостепенное созадние самой игры а потом разработки платформы под тот же ВК +1

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

                                          Самое читаемое