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/