WTF is Platform?
В Wargaming есть отдельное подразделение, которое занимается… занимается разработкой некой «платформы» для издания игр. Объяснить, что такое Платформа, чем она является и не является, весьма сложно — но я попробую.
Почему появилась статья
Привет! Меня зовут Максим. И я тут работаю [в компании Wargaming].
У нас есть отдельное подразделение, которые занимается… занимается разработкой некой «платформы» для издания игр. Объяснить, что такое Платформа, чем она является и не является, весьма сложно. Но у меня и моих коллег есть желание рассказать вам о Платформе и ее внутренней «кухне»: кто мы, что мы делаем, какие технические решения принимаем, что у нас получилось, а что не очень. Я один из «старых» сотрудников этой команды, и в этой статье я хочу рассказать о том, как мы пришли к необходимости создания Платформы и основных этапах ее развития.
История по верхам: самое начало
World of Tanks — далеко не первая игра компании Wargaming, но создание Платформы началось именно с нее. Хотя само понятие [Платформа] и ее выделение в отдельную сущность появились гораздо позже.
К игре (которая состоит из клиента и сервера) сначала добавились:
- форум — на нем игроки общались (с ранней альфы) с разработчиками игры;
- сайт-портал — где была первая регистрация аккаунтов, новости, статьи;
- лаунчер — клиентское приложение, которое обновляет игру;
- платежная система — сервис для получения денег от игроков: интеграция с внешними платежными агрегаторами, в первую очередь;
- отдельный сайт для службы технической поддержки — который позволяет управлять имуществом игрока;
- тикетница — где игроки оставляли свои заявки.
Примерно таким составом удалось выйти в закрытое тестирование, начать получать платежи (предпродажи), затем — в открытое и, наконец, в релиз (в августе 2010-го).
История по верхам: быстрое развитие: вжух-вжух и в production
Перед релизом «Танков» и долгое время после него основное развитие платформы происходило в режиме «быстрее и побольше». Зачастую в релиз уходили сырые сервисы, которые затем стабилизировались, и наступало время делать уже другие решения для других задач:
- экспортер — отдельный сервис, который хранил «реплику» данных игр в виде набора JSON; дело в том, что внутри игры данные лежат в бинарном виде, более удобном для движка WoT, а снаружи (с типичных web-сайтов) проще пользоваться текстовым представлением;
- единый сервис аутентификации — для игры, форума, сайта игры и т. д.; до этого пара «логин/пароль» хранилась чуть ли не в каждом сервисе отдельно, и не всегда получалось хранить их согласованно;
- клановые войны — по сути отдельная браузерная игра с фишками, нападениями на территорию соседей, c боями, которые случались уже внутри WoT;
- турниры — аналогично клановым войнам;
- непрерывное увеличение способов и удобства оплаты — это вообще бесконечная задача, всегда можно сделать лучше и больше.
«Танки» за это время вышли в релиз в Европе и Северной Америке.
История по верхам: самолеты, корабли
Потом компания стала разрабатывать не только «Танки». И тут стал очевиден недостаток того, что мы сделали ранее для Платформы. Все, что мы разработали, было сделано для одной игры. Мало того, это были фактически рабочие прототипы; на продолжительное тестирование у нас в то время не хватало ни времени, ни рук. О масштабировании на несколько игр мы тогда задумывались в основном теоретически.
В основе серверов игр World of Tanks, World of Warplanes, World of Warships лежит игровой движок BigWorld и базовые задачи интеграции с сервисами платформы могли быть реализованы в общем виде. Но у команд, ответственных за разработку каждой из игр, есть собственное видение того, как именно каждая из игр должна подаваться. То есть, несмотря на то, что общий вектор совпадал, выяснилось, что существует огромное количество отличий, которые приходили к нам в платформу в виде отдельных требований.
Одна часть сервисов (например, игровые веб-порталы «Самолетов» и «Кораблей») фактически оказались разошедшимися fork-ами танкового портала. Вторая часть хоть и оставалась без изменений, но архитектура этих сервисов была такой, что для каждой из игр требовалась работающая в продакшене отдельная копия. И только небольшую часть сервисов было несложно доработать, чтобы оставить единственную копию на все игры в том или ином регионе.
Работы стало гораздо больше, и началась постоянная борьба. Что лучше: единое техническое решение для всех игр или отдельное для каждой? Дублирование — это лишняя работа, но такой подход дает играм возможность свободно делать кастомизации, выпускать релизы чаще и вообще идти своей дорогой.
История по верхам: консоли, мобилки
Когда игры стали выходить не только на PC (речь в первую очередь о World of Tanks на консолях и мобильных устройствах), это коснулось Платформы самым непосредственным образом. «Танки» на этих устройствах — это не порты с PC, это отдельные, полностью переработанные игры. Но! Сервера этих игр, хоть и были переработаны, в самом начале не сильно отличались от PC-шной версии.
На нас легла задача интеграции со сторонними платформами; мы должны были стать некоторым proxy между ними и игрой, взять на себя как можно больше задач взаимодействия и свести к минимуму изменения в серверных частях игр. В первую очередь это такие задачи:
- поддержка входа с помощью Sony PSN и Microsoft Xbox LIVE;
- логин на веб-ресурсы WG;
- создание аккаунтов и логины на мобильных устройствах;
- платежи.
Конкретную работу по интеграции с API Microsoft и Sony вели сами разработчики игр. От нас, как от разработчиков платформы, нужна была доработка определенных компонент и помощь в интеграции. Хотя нам тоже хватало задач, связанных со спецификой работы этих платформ.
Необычные регионы: Вьетнам, Китай, Корея
Азия — это отдельный мир. И даже не один. Там очень много нюансов. В том числе и в том, как именно люди играют в игры:
- Китай — это выпуск игры исключительно с местным партнером. Дело в том, что в Китае выпустить игру самостоятельно очень сложно. Требуется пройти огромное количество административных процедур, в том числе согласование в правительстве.
- Вьетнам — там World of Tanks в течение нескольких лет работала с партнером, который… у которого API для интеграции был в виде хранимых процедур к MS SQL.
- Корея — очень требовательное законодательство. Которое, в частности, требует обязательной интеграции с правительственным SaaS-ом. Он предоставляет данные об имени, возрасте и т. д. игрока, и настаивает на реализации ограничений по платежам (не более 500 долларов в месяц), по игровым часам и прочее. Даже есть требования к паролям игроков.
Advanced features
В определенный момент времени стали разрабатываться сервисы, которые понадобились для более качественного оперирования игр.
Из того, с чем сталкиваются сами игроки, это:
- Wargaming Game Center (WGC) — единое Windows-приложение для установки игр;
- сервис персональных предложений для магазина на основании статистики игрока;
- совместный тарифный план от Wargaming и Ростелекома.
И много внутренних инструментов для работы отделов поддержки, контента, и других.
Новая платформа для новых игр
Затем наши задачи дополнительно расширились. От поддержки нескольких игр, сделанных компанией Wargaming на движке BigWorld (WoT, WoWP, WoWS), нужно было перейти к поддержке множества других игр, сделанных на совершенно иных технологиях. И не только компанией Wargaming.
Стало очевидно, что многие компоненты могут поддерживать несколько игр, но не десятки/сотни. Да и наши API, использующиеся для интеграции, были очень заточены для игр на BigWorld, но не для игр на других технологиях.
Никакой «новой» Платформы не случилось. Случилось просто добавление нескольких новых сервисов и новых API, которые отлично сосуществуют с «классическими». Играми, которые поехали по новым рельсам (из уже анонсированных) стали:
- Total War Arena;
- Caliber;
- Pagan Online.
Ну и началась миграция старых.
Итого
Платформа это — совокупность сервисов и инструментов для издания игр — всё то, что позволяет игроку:
- зарегистрироваться;
- залогинится;
- заплатить;
- скачать игру;
- получить помощь.
А для издателя — помочь игроку это сделать, с учётом всех региональных особенностей и пожеланий разработчиков игр.
Что интересно узнать
Это история, пусть и по верхам, моими глазами. Не надо считать ее официальной — где-то я мог ошибиться, где-то упростить, где-то преувеличить. Но! Очень хочется продолжать делиться информацией. Дайте знать, о чем вам будет интересно узнать, и я и мои коллеги попробуем вам об этом рассказать.
P.S.
За картинки спасибо Pandarama https://www.instagram.com/pandaramka/
Автор: max_posedon