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/
