Архитектура мета игры wargaming. Глобальная карта 2.0

26

Upload: levon-avakyan

Post on 15-Apr-2017

2.340 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Архитектура мета игры Wargaming. Глобальная карта 2.0
Page 2: Архитектура мета игры Wargaming. Глобальная карта 2.0

О чем я буду говорить Глобальная карта

• Немного истории• Что такое Глобальная Карта• Gameplay• Игровые события на Глобальной карте

Архитектура и технологии• Технологический стек• GIS. Готовим карту• Архитектура Глобальной карты• Расчет игрового хода

Оперирование Глобальной картой• Особенности• Deployment• Сбор статистики и метрик• Немного о надежности

2

Page 3: Архитектура мета игры Wargaming. Глобальная карта 2.0

Глобальная Карта 2.0

3

Page 4: Архитектура мета игры Wargaming. Глобальная карта 2.0

Немного истории

Статистика

• Немного истории• Что такое

Глобальная Карта• Gameplay• Игровые события

на Глобальной Карте

• Около 900 игровых провинций

• 10-12 тысяч танковых сражений на одной карте в игровые часы

• До 5 тысяч кланов на одной карте в день

4

Page 5: Архитектура мета игры Wargaming. Глобальная карта 2.0

Что такое Глобальная Карта Статистика

• Немного истории• Что такое

Глобальная• Gameplay• Игровые события

на Глобальной карте • Около 10000 игровых

провинций

• 18-20 тысяч танковых сражений на одной карте в игровые часы

• До 8 тысяч кланов на одной карте в день

5

Page 6: Архитектура мета игры Wargaming. Глобальная карта 2.0

Gameplay• Немного истории• Что такое

Глобальная• Gameplay• Игровые события

на Глобальной карте

• Фронты• Очки влияния• Аукционы• Квесты• Сезоны

6

Page 7: Архитектура мета игры Wargaming. Глобальная карта 2.0

Игровые события на Глобальной Карте• Что такое Глобальная Карта

• Немного истории• Gameplay• Игровые события

на Глобальной Карте

7

Page 8: Архитектура мета игры Wargaming. Глобальная карта 2.0

Архитектура и технологии

8

Page 9: Архитектура мета игры Wargaming. Глобальная карта 2.0

Технологический стек• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

• Python 2.7• JS • CSS

• Falcon• SQLAlchemy + alembic

• Postgres 9.4• PostGis• Redis

• Kafka• RabbitMQ

• uwsgi• nginx

9

Page 10: Архитектура мета игры Wargaming. Глобальная карта 2.0

Под капотом у backend

Falcon

SQLAlchemy + alembic

• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода ”+” “-”

• Быстрый• Прост в использовании• Хорошо документирован

• Не популярен• Мало библиотек• Нет стандартов

организации кода

”+” “-”

• Популярный• Хорошо документирован

• ORM

10

Page 11: Архитектура мета игры Wargaming. Глобальная карта 2.0

Хранение данныхPostgres

Redis

”+” “-”

• Надежный• Много полезных и

интересных плюшек (jsonb, разнообразные индексы, расширения)

• Накоплена экспертиза

• Более сложное администрирование, чем, скажем, в MySQL

• Партиционирование

”+” “-”

• Быстрый• Надежный • RedisQuque• Типы данных• Богатый тулинг

• Использует одно ядро• KEYS• Отсутствие персистентности

данных

• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

11

Page 12: Архитектура мета игры Wargaming. Глобальная карта 2.0

• Много DOM операций• Рисуем HTML• Сложно кэшировать

• Marionette JS • Leaflet JS (рисует карту)• UTFGrid

Текущий стек

Минусы подхода

• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

12

Под капотом у Frontend

Page 13: Архитектура мета игры Wargaming. Глобальная карта 2.0

Что хотим изменить• Marionette JS -> React c Redux (уменьшим количество DOM

операций)• UTFGrid -> R-деревья -> Векторные тайлы-> WebGL • Geobuff + Topojson (передача геоданных)

• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

13

Под капотом у Frontend

Page 14: Архитектура мета игры Wargaming. Глобальная карта 2.0

• PostGis – набор типов данных, функций для работы с геоданными• QGIS + плагины

• Open Street Map• Рельефы( высота, глубина – в виде растра)• Требования от геймдизайнеров

На вход

Инструменты

• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

14

GIS. Готовим Карту

Page 15: Архитектура мета игры Wargaming. Глобальная карта 2.0

GIS. Готовим карту• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

15

Page 16: Архитектура мета игры Wargaming. Глобальная карта 2.0

Архитектура Глобальной Карты• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

16

Page 17: Архитектура мета игры Wargaming. Глобальная карта 2.0

• Send Battle – отсылает бои на сервер• Battle – обрабатывает результаты боя• Clan Sync – синхронизирует карту и клановый сервис• History – публикует в kafka данные об изменениях на ГК• Next turn – расчет игрового хода

Workers• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

17

Page 18: Архитектура мета игры Wargaming. Глобальная карта 2.0

Расчет игрового хода• Запускается каждый час ровно в

00 минут• Пересчитывает игровую

ситуацию( запускает бои за провинции, просчитывает аукционы, раздает голду и т.д)

• Компонент• Фаза• Шаг

wot: - phase: leave-map handler: wot.core.turn.phases.LeaveMap steps: [leave_map] params: batch_size: 100

- wot: - phase: game_stats steps: - name: pre_turn_game_stats handler: wot.core.turn.steps.pre_turn_game_stats sdk: - phase: create_turn steps: - name: create_turn handler: sdk.turn.steps.create_turn

- wot: - phase: pre-turn steps: - name: start_scheduler handler: wot.core.turn.steps.start_scheduler

• Технологический стек

• GIS. Готовим карту• Архитектура ГК• Расчет игрового

хода

18

Page 19: Архитектура мета игры Wargaming. Глобальная карта 2.0

Оперирование Глобальной Картой

19

Page 20: Архитектура мета игры Wargaming. Глобальная карта 2.0

Особенности

• Неравномерная нагрузка в течение игрового дня и даже одного часа

• Большое количество внешних потребителей• Большое количество игровых настроек• Высокая степень кастомизации под разные регионы• Бои на Глобальной карте должны проходить в строго

определённое время, перенос – отмена боя является критической проблемой

• Особенности• Deployment• Сбор статистики и

метрик• Немного о

надежности

20

Page 21: Архитектура мета игры Wargaming. Глобальная карта 2.0

Deployment• Доставляется в виде 4х пакетов

• Backend-package• Frontend-package• Loc-package• Gamedata-package

• Процесс деплоя автоматизирован Fabric 2.0• Рендер конфигурации по шаблону• Доставка исходного кода/пакетов на продакшен• Выполнение миграций• Pre/post шаги

• Смотрим в сторону контейнеров и облаков• Docker• Mesos/Marathon/Chronos

• Особенности• Deployment• Сбор статистики и

метрик• Немного о

надежности

21

Page 22: Архитектура мета игры Wargaming. Глобальная карта 2.0

22

Собираем логи• Особенности• Deployment• Сбор статистики и

метрик• Немного о

надежности

Page 23: Архитектура мета игры Wargaming. Глобальная карта 2.0

23

Graphite• Особенности• Deployment• Сбор статистики и

метрик• Немного о

надежности

Page 24: Архитектура мета игры Wargaming. Глобальная карта 2.0

Graphana• Особенности• Deployment• Сбор статистики и

метрик• Немного о

надежности

24

Page 25: Архитектура мета игры Wargaming. Глобальная карта 2.0

Немного о надежности• Мониторинг

• Триггеры на системные метрики• Триггеры на логические ошибки

• Агрегация и анализ логов• Logstah + elastic search + kibana• Sentry• Graphite + Graphana• Логирование на уровне приложения в хранилище

• Нагрузочное тестирование• Анализ профиля нагрузки• Симуляция игровой активности

• Инструментарий

• Особенности• Deployment• Сбор статистики и

метрик• Немного о

надежности

25

Page 26: Архитектура мета игры Wargaming. Глобальная карта 2.0

Let’s Discuss

Левон Авакян

Competitive Gaming Reliability Team Lead

[email protected]