В своем докладе я расскажу что такое Глобальная карта, как она устроена, какие технологии, архитектурыне решения, принципы и подходы используются. Как мы боремся с высокими нагрузками, с какими проблемами сталкиваемся, и как их решаем.
Report
Share
Report
Share
1 of 26
More Related Content
Архитектура мета игры Wargaming. Глобальная карта 2.0.
2. О чем я буду говорить
Глобальная карта
• Немного истории
• Что такое Глобальная Карта
• Gameplay
• Игровые события на Глобальной карте
Архитектура и технологии
• Технологический стек
• GIS. Готовим карту
• Архитектура Глобальной карты
• Расчет игрового хода
Оперирование Глобальной картой
• Особенности
• Deployment
• Сбор статистики и метрик
• Немного о надежности
2
4. Немного истории
Статистика
• Немного истории
• Что такое
Глобальная
Карта
• Gameplay
• Игровые события
на Глобальной
Карте
• Около 900 игровых провинций
• 10-12 тысяч танковых
сражений на одной карте в
игровые часы
• До 5 тысяч кланов на одной
карте в день
4
5. Что такое Глобальная Карта
Статистика
• Немного истории
• Что такое
Глобальная
• Gameplay
• Игровые события
на Глобальной
карте • Около 10000 игровых
провинций
• 18-20 тысяч танковых
сражений на одной карте в
игровые часы
• До 8 тысяч кланов на одной
карте в день
5
6. Gameplay• Немного истории
• Что такое
Глобальная
• Gameplay
• Игровые события
на Глобальной
карте
• Фронты
• Очки влияния
• Аукционы
• Квесты
• Сезоны
6
7. Игровые события на Глобальной Карте• Что такое
Глобальная Карта
• Немного истории
• Gameplay
• Игровые события
на Глобальной
Карте
7
10. Под капотом у backend
Falcon
SQLAlchemy + alembic
• Технологический
стек
• GIS. Готовим карту
• Архитектура ГК
• Расчет игрового
хода ”+” “-”
• Быстрый
• Прост в использовании
• Хорошо документирован
• Не популярен
• Мало библиотек
• Нет стандартов
организации кода
”+” “-”
• Популярный
• Хорошо документирован
• ORM
10
11. Хранение данных
Postgres
Redis
”+” “-”
• Надежный
• Много полезных и
интересных плюшек (jsonb,
разнообразные индексы,
расширения)
• Накоплена экспертиза
• Более сложное
администрирование, чем,
скажем, в MySQL
• Партиционирование
”+” “-”
• Быстрый
• Надежный
• RedisQuque
• Типы данных
• Богатый тулинг
• Использует одно ядро
• KEYS
• Отсутствие персистентности
данных
• Технологический
стек
• GIS. Готовим карту
• Архитектура ГК
• Расчет игрового
хода
11
12. • Много DOM операций
• Рисуем HTML
• Сложно кэшировать
• Marionette JS
• Leaflet JS (рисует карту)
• UTFGrid
Текущий стек
Минусы подхода
• Технологический
стек
• GIS. Готовим карту
• Архитектура ГК
• Расчет игрового
хода
12
Под капотом у Frontend
13. Что хотим изменить
• Marionette JS -> React c Redux (уменьшим количество DOM
операций)
• UTFGrid -> R-деревья -> Векторные тайлы-> WebGL
• Geobuff + Topojson (передача геоданных)
• Технологический
стек
• GIS. Готовим карту
• Архитектура ГК
• Расчет игрового
хода
13
Под капотом у Frontend
14. • PostGis – набор типов данных, функций для работы с геоданными
• QGIS + плагины
• Open Street Map
• Рельефы( высота, глубина – в виде растра)
• Требования от геймдизайнеров
На вход
Инструменты
• Технологический
стек
• GIS. Готовим карту
• Архитектура ГК
• Расчет игрового
хода
14
GIS. Готовим Карту
20. Особенности
• Неравномерная нагрузка в течение игрового дня и даже
одного часа
• Большое количество внешних потребителей
• Большое количество игровых настроек
• Высокая степень кастомизации под разные регионы
• Бои на Глобальной карте должны проходить в строго
определённое время, перенос – отмена боя является
критической проблемой
• Особенности
• Deployment
• Сбор статистики и
метрик
• Немного о
надежности
20
21. Deployment
• Доставляется в виде 4х пакетов
• Backend-package
• Frontend-package
• Loc-package
• Gamedata-package
• Процесс деплоя автоматизирован Fabric 2.0
• Рендер конфигурации по шаблону
• Доставка исходного кода/пакетов на продакшен
• Выполнение миграций
• Pre/post шаги
• Смотрим в сторону контейнеров и облаков
• Docker
• Mesos/Marathon/Chronos
• Особенности
• Deployment
• Сбор статистики и
метрик
• Немного о
надежности
21
25. Немного о надежности
• Мониторинг
• Триггеры на системные метрики
• Триггеры на логические ошибки
• Агрегация и анализ логов
• Logstah + elastic search + kibana
• Sentry
• Graphite + Graphana
• Логирование на уровне приложения в хранилище
• Нагрузочное тестирование
• Анализ профиля нагрузки
• Симуляция игровой активности
• Инструментарий
• Особенности
• Deployment
• Сбор статистики и
метрик
• Немного о
надежности
25