История запуска игры в социальных сетях / Хабр
Под конец весны 2013 года, я описывал историю плохого старта на Google Play. Пока с iOS заминки, решили закинуть игру в ВК и ОК. В статье я хочу поделиться особенностями запуска приложения под соц-сети, и расскажу про возникшие проблемы до и после релиза.
Особенности веб-плеерной версии
На этой платформе появилась возможность включить
динамические тени, а не просто «бездушный» Projector, увеличить четкость текстур, а также улучшить глобальные параметры качества. Если для Android стояло «Fast», то тут можно было смело выбирать “Good”.
Еще нам понадобился футер для игры. В нем обычно размещают полезную информацию, кнопку приглашения друзей и ссылку на группу. Решил не морочится с Unity3d и сделал его прямо в HTML:
Подготовка серверной части
В веб-версии встал вопрос о надежном сохранении карьеры, рейтингов и платежей.
, которую я уже немного знал. Издатель негативно отнесся к этому решению (советовали перейти PostgreSQL), но я не послушал и делал по своему, так как мне было так проще.
Структура БД, тут хранятся все нужные данные
Основной файлик server.php вышел в ~300 строк, в нем описаны следующие возможности:
- Регистрация игрока
- Покупка и прокачка машинки
- Покупка бензина (расходник)
- Запись результата заезда
На этот файл игрок шлёт данные через POST и мы их пишем в БД. Не очень безопасно, но есть несколько простых проверок типа подписи через md5, которые защищают от школьников.
Ответ приходит примерно в таком виде:
{"id":"4","name":"Nolex","lvl":"7","coins":"9034","stamina":"40000","kill_zombies":"6952"}Это JSON, для Unity3d советую использовать библиотеку JsonFx. Json.
Рейтинг – важный элемент игры, постоянно наблюдаю как игроки соревнуются там между собой, потому упомяну про скрипт rating.php. В нем было 8 запросов к БД, 4 из которых позже стали меня беспокоить.
SET @rownum:=0; SELECT r2.`rank`, r2.`name`, r2.`points` FROM (SELECT @rownum:=@rownum+1 as rank, `salto` as `points`, `name`, `id` FROM `players` as `r1` WHERE `sn` = '1' ORDER BY `salto` DESC) as `r2` WHERE `id` = '999'
Это один из проблемных запросов определения позиции текущего игрока в выбранной категории. Когда игроков было мало, то это проходило моментально, но позже игроков стало больше, все стало тормозить и я убрал эту опцию. Сейчас, если игрок не попал в ТОП-100, то снизу просто отображаем его место как “> 100” и рядом заработанные очки. Иного решения я не смог придумать.
Позже, после релиза, появилась еще админка для игры, где я реализовал сводку последних данных, раздел статистики по всем соц-сетям, и рассылку оповещений с логированием в БД.
Баланс
Учитывая плохую конвертацию на Андроиде и жлобскую аудиторию в соц-сетях, было принято решение пересмотреть баланс. Мы сделали аналог «энергии» — бензин. Когда он заканчивается, у игрока выбор —
ждать или донатить.
После того, как я внедрил расходник, началось самое мучительное и одновременно интересное — настройка цифр. Издатель (Herocraft) настаивал на жестком балансе, а я напротив — более мягкий. Разговоры и споры ни к чему хорошему не привели и мы решили довериться тестам.
Для этого я настроил полное логирование всех заездов. Тестеры покатались и появились данные, благодаря которым мы смогли узнать сколько в среднем игрок зарабатывает монет и сколько тратит бензина на каждом уровне. Далее мы просто урезали топливо под каждый уровень. Нужно было добиться того, чтоб уровень «сходу» не проходился, а игрока стопорило ближе к концу трассы. Это не касается первого уровня, который предназначен для завлечения игрока.
Это важно.Окно с предупреждением о малом кол-ве топлива
Интеграция в соц-сети
Сначала интегрировал в ВК, было легко, т-к уже не первый раз. От API мне нужно было немногое:
- Получение персональных данных игрока
- Приглашение друзей
- Постинг на стену
- Спам (рассылка)
- Запись уровня игрока в базу соц-сети (друзям видно активность игроков при «апах»)
- Оплата (наверное, самый ответственный пункт!)
Далее приступил к ОК, тут все сложнее. API не привычное, песочница неудобная, но быстро привыкаешь. Для запуска, нужно юридическое лицо (вот тут плюс издателя). Из
особенностей в ОКможно выделить квадратную иконку (с острыми краями), название игры на русском языке в обязательном порядке и придирчивую модерацию (где-то с 5-го раза получилось ёё пройти).
Запуск игры
Статические файлы были загружены в облако к издателю (там файлик *. unity3d размером в 22 Мб, и несколько картинок). PHP+MYSQL разместил на своем слабенькой сервере, которым арендуем с напарником за 40$ / мес. Посчитав, что все в порядке, приступили к запуску.
В ВК произошло все очень быстро, нажали на кнопку проверки (процедура бесплатная, в залог берут 10 голосов). В тот же день приложение одобрили и оно попало в блок «Новые». Пошел первый траффик.
Сервер себя вел нормально, но не так хорошо, как хотелось. Запросы шли довольно медленно, иногда были задержки по 3 секунды, потому я напросился к своему знакомому, у которого был неплохой тарифный план на Хецнере.
Игра в топе продержалась около недели, с каждым днем она падала все ниже и ниже. В день было по 5-7к установок, потом упало до 2к.
Почти сразу я настроил рассылку оповещений и каждый день старался оповещать игроков, у которых восстановился бензин.
Далее намечался запуск в ОК. Релиз нам назначили на 27 число, но по непонятной причине игра релизнулась и попала в «Новые» 24 июля и вот тогда серверу стало плохо от наплыва большого количества людей.
Скачек обращений к MySQL-базе
Таким образом нагнулся сервер моего товарища, на что он мне сказал «большое спасибо» (к слову, на сервере был 1 крупный проект, приносящий деньги). Появились тормоза и иногда выбивала ошибка «502 Bad Gateway». Такая ситуация была около суток.
Не ожидая такого поворота событий, я решил закинуть игру назад на свой сервак. Это было глупо, так как он упал через 20 минут после переезда.
Всем игрокам которые играли в эти дни и сталкивались с «лагами» я накинул по 1000 монеток и сделал рассылку. Это хорошая практика в подобных ситуациях.
В конечном счете, я переехал на сервер к издателю, где игра адекватно работает по сей день. Кстати, сервер довольно интересный, кэшируется постоянно. Правки php-файлов по sftp вступают в силу только через несколько минут. Не очень удобно, но похоже это какая-то «фишка» для оптимизации нагрузки, и надо сказать вполне удачная.
График регистраций в игре, тут видно примерно сколько трафа с ВК и ОК
Примерно такая же ситуация и по платежам, в ОК их больше, из чего можно сделать вывод, что там траф «пожирнее».
Немного цифр и заключение
- Школьники нашли дырку в обучении. Можно было фармить по 10 монеток. Как говорит MySQL, один очень настойчивый мальчик проделал такую операцию
1200 раз и нафармил 12к монет. - На текущий момент игру установили уже более 130к человек (50% ВК / 50 ОК %).
- Только 17% игроков дошло до последних уровней.
- На днях в ВК отправили заявку в новые (уже платную), сняло 1к голосов, ждём.
Если подвести итог, то можно смело говорить, что нету большого смысла издавать подобную игру в соц-сетях, тут был больше спортивный интерес. В любом случае, было довольно занимательно наблюдать и влиять на весь этот процесс.
Игры Вконтакте (вк). Играть бесплатно Vkontakte (vk)
Новые / Лучшие
Цена Свободы2 Поиск предметов 2018 г.
Магия Слова Прочее 2018 г.
Тетрис. Весёлая стройка Аркада 2018 г.
Весенние Истории Прочее 2018 г.
Ёжики! Симулятор 2018 г.
Непокоренные земли Симулятор 2018 г.
Цветочные Луга Симулятор 2016 г.
Модняшки. Фея цветов Головоломка 2016 г.
Автобитва: Draw Out Прочее 2016 г.
Времена Года — Три в Ряд Головоломка 2018 г.
Западный поезд Аркада 2017 г.
Филворды Онлайн Прочее 2018 г.
Поиск Отличий Прочее 2017 г.
Герои Алатыря Головоломка 2017 г.
Космо Ровер Аркада 2018 г.
Универ Прочее 2016 г.
Битва Эрудитов Прочее 2016 г.
Грибники: новый сезон Симулятор 2017 г.
Hames Puzzle Прочее 2017 г.
Rise of Angels Приключения 2018 г.
Mahjong Solitaire Прочее 2017 г.
Детектив: Инди Кот Головоломка 2017 г.
Warfare. Цена Победы Симулятор 2016 г.
Лесная Кухня Головоломка 2017 г.
Танграм Прочее 2017 г.
Солнечная Ферма Симулятор 2017 г.
Heroes Tactics Аркада 2017 г.
Фазенда Симулятор 2017 г.
Dragon Hunter Приключения 2018 г.
Лига Пузырей Прочее 2017 г.
Универ 2: Новая общага Симулятор 2017 г.
Пирамиды Египта — пасьянсы Прочее 2017 г.
Подарки Санты 2018 Симулятор 2017 г.
Оружие богини Приключения 2017 г.
Коты: дворовые разборки Аркада 2017 г.
Мой котенок Прочее 2017 г.
Камни времени Головоломка 2017 г.
Маджонг: Сезоны Прочее 2017 г.
Ядерный шар Прочее 2016 г.
Зимняя сказка Головоломка 2016 г.
Угадай мелодию Прочее 2016 г.
Таинственный лес — три в ряд! Головоломка 2016 г.
Опасный клад Аркада 2015 г.
Трудный лабиринт Аркада 2016 г.
Рыбалка 2048 Аркада 2017 г.
Ёлочка 2018 Симулятор 2017 г.
Фермерский Утес Симулятор 2017 г.
ВК 72.01 (К): обзор, характеристики, сравнение
Добавить к сравнению Автомобиль добавлен к сравнению Добавить конфигурацию автомобиля к сравнению В сравнение добавлена конфигурация автомобиля
Добавить к сравнению автомобиль в базовой комплектации Удалить автомобиль из сравнения Добавьте автомобиль в его текущей комплектации к сравнению Удалить автомобиль из сравнения
Сверхтяжелый танк с задним расположением башни. Разработан компанией Krupp. Новая машина должна была иметь более сильное вооружение и усиленное бронирование по сравнению с VK 70.01. Существовал только в чертежах.
Командир
стрелок
Водитель
Радист
Погрузчик
Это наградной автомобиль. Наградные машины имеют статус «Элита», дают больше опыта за бой, дают ряд других бонусов и не требуют исследования.
Этот автомобиль может зарабатывать боны в определенных режимах игры.
Огневая мощь
HP Урон
мм Пробивание брони
0}»> л.с./мин Урон в минуту
0, «спецификация_дельта-хорошо»: $данные с Время сведения
0, «спецификация_дельта-хорошо»: $данные м Рассеивание на 100 м
0}»> шт Емкость боеприпасов
Мобильность
0}»> / 0}»> / т Ограничение веса/нагрузки
0}»> л.