ДОСТАВЛЯЯ
ВЕБ-КОНТЕНТ
В ИГРУ
Максим Щепелин, Wargaming
MMO battle-arena с использованием военной техники,
первой половины XX века
Геймплей состоит из player vs. player боёв, где каждый
игрок управляет единицей военной техники.
ЧТО ТАКОЕ WORLD OF TANKS?
WORLD OF TANKS В ЦИФРАХ
• 30+ млн. игроков
• В пике 1.1+ млн игроков онлайн
• 200+ логинов в игру за секунду
• 100+ боев создается за секунду
• 5000+ Tb раздается при каждом обновлении
• Релизный цикл – 7 недель
44
ВЕБ-СЕРВИСЫ ВОКРУГ ИГРЫ
Server
Game client
Accounts
Clans
…
Ratings
Meta-games
API Gateway
ПРОБЛЕМЫ
• Клиент – огромный монолит
• Долгий релизный цикл
• Вносить небольшие изменения – дорого
66
СЕРВИСЫ ВОКРУГ ИГРЫ
Game client
EventsBoards
Clans
…
Ratings
Meta-games
7
CHROMIUM EMBEDDED FRAMEWORK
Chromium Embedded Framework (CEF) — open source фреймворк
для встраивания Chromium в приложение.
Позволяет разработчику не погружаться в 12М строк кода
Chromium.
Основной контрибьютор – Adobe
7
КТО ИСПОЛЬЗУЕТ CEF
ВОЗМОЖНОСТИ
CEF
10
• Remote debug protocol
• Все возможности DevTools
• Автоматизация через Selenium
ОТЛАДКА
12
INTER-PROCESS COMMUNICATION
PROTOCOL
12
• Обмен данными между игрой и браузером
• Игра – источник данных для веб-приложения
• Использование нативных диалогов из javascript
13
Inter Process Communication protocol
13
ВЕБ-ПРИЛОЖЕНИЕ
В ИГРЕ
16
TECHNOLOGY STACK
• React
• Redux
• Moment
• Intl
• css-modules
16
17
SHARED
COMPONENT

LIBRARY
18
ПРЕИМУЩЕСТВА ИСПОЛЬЗОВАНИЯ CEF
19
• Отдельный релизный цикл
• Бизнес-логика изолирована от кодовой базы игры
• Soft-launch и canary релизы
REACTIVE
UPDATES
NGINX КАК WEBSOCKET СЕРВЕР
BackendFrontend Nginx
web socket http
Подробнее: https://goo.gl/nkhDFo
23
NGINX PUSH-STREAM-MODULE
РАСХОД ПАМЯТИ
• Message – 200 bytes
• Channel – 270 bytes
• Subscriber – 6550 bytes
24
НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ
• Intel Xeon E5-2670 2.60GHz (8 core) 8gb RAM, CentOS 7
• 100к соединений на 24 часа
• 97% CPU utilization (16 nginx workers)
• 8262 сообщений рассылается за секунду
• 6900 RAM использовано
• 0 разрывов соединения
ПРЕИМУЩЕСТВА ИСПОЛЬЗОВАНИЯ CEF
25
• Отдельный от клиента релизный цикл
• Бизнес-логика изолирована от кодовой базы игры
• Soft-launch и canary релизы
• Веб-UI ведёт себя как нативный UI
• Инструменты user-tracking
ПРОИЗВОДИ-
ТЕЛЬНОСТЬ
27
CEF OFF-SCREEN RENDERING
Game process
Browser process Renderer process
GPU process
Подробнее: https://goo.gl/WLzBvn
IPC
IPC
IPC
29
ПОТРЕБЛЕНИЕ
ПАМЯТИ
КОНФИГУРАЦИИ ЖЕЛЕЗА
Minimal
Win XP 32-bit, AMD Athlon 3500+, 1.5GB RAM,
GeForce 6800 256.0 MB
Low
Win 7 64-bit, Intel Core 2 Duo, 4096MB RAM,
GeForce 8600 GT 2gb
Average
Win 7 64-bit, Core i3-2100, 4096MB RAM,
GeForce GTS450 1GB
Потребление памяти браузером
ВРЕМЯ
ЗАГРУЗКИ
РЕЗУЛЬТАТЫ
• Три крупных фичи сделаны в браузере
• Повышение скорости разработки
• Изменения в веб-фичах не требуют тестирования клиента
• Двухнедельные релизные циклы
• Soft launch функциональности
38
ВЫВОДЫ
• Хорошое решение для доставки динамического
контета в desktop приложение
• Не предназначен для встраивания в приложения
требовательные к ресурсам
• В режиме off-screen rendering не потдериживает
hardware acceleration
• Из-за Windows XP chromium 49 версии
Максим Щепелин
m.schepelin@gmail.com
ВОПРОСЫ?

Максим Щепелин - Доставляя веб-контент в игру