Vizor Interactive: Технологии успеха
-
Upload
devgamm-conference -
Category
Documents
-
view
712 -
download
1
description
Transcript of Vizor Interactive: Технологии успеха
![Page 1: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/1.jpg)
Flash движок в игре Зомби Ферма
• Проблемы в процессе разработки и их решения
![Page 2: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/2.jpg)
Начало разработки Требование к движку
• Обзор существующих Flash-движков
• Основной упор при разработке на оптимизацию
![Page 3: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/3.jpg)
Способ отрисовки
• Display List и Bitmap Bitting
• Движок изначально писался на Action Script 2
• Однозначный выбор – использование Display List
![Page 4: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/4.jpg)
Изометрия
• Разделение объектов в мире на статические объекты и персонажей
• Объекты хранятся в массиве в порядке их отображения
• Сортировка персонажей осуществляется
каждые 50 мс
• Многоэтажность
![Page 5: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/5.jpg)
Проблемы производительности
• При отображении тысяч спрайтов наблюдались сильные тормоза при движении мыши
• Flash шлет события мыши каждому спрайту, добавленному в Display List
![Page 6: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/6.jpg)
Решение проблемы
Application
mainSprite UI Controller
• Блокирование всех событий мыши• Добавление объекта UI Controller• UI система. UIComponent и UIContainer
![Page 7: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/7.jpg)
Система анимированияперсонажей
• Использование MovieClip тормозит• Персонаж состоит из слоев• Кадры персонажа собираются в одну большую растровую картинку• Под каждый слой создается объект Bitmap• Анимирование осуществляется путем копирования части растровой картинки в объект Bitmap
![Page 8: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/8.jpg)
50 Зомби!
![Page 9: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/9.jpg)
Звуки
• Создание стерео звуков. Использование SoundTransform
• SoundManager для хранения и менеджмента всех звуков в игре
![Page 10: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/10.jpg)
Кеширование
• Графика объектов собирается группами в swf файлы
• Менеджер объектов следит за количесвом созданных копий картинок
• Для подгрузки и кеширования картинок напрямую используется класс CachedImage
![Page 11: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/11.jpg)
Сигналы
• Проблема разработки при разростании проекта
• Использование сигналов
• Простейший базовый класс логики
• Важность правильной структуры кода на начальных этапах разработки
![Page 12: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/12.jpg)
Обход препятствий
• Алгоритм обхода в ширину даёт большую нагрузку
• Обход препятствий при необходимости
• Проблемы погрешностей при вычислениях
• Учёт физики карты
![Page 13: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/13.jpg)
Тестирование
• Обновления нужно делать в короткие сроки
• Все ошибки не возможно найти на этапе тестирования внутри компании
• Критические ошибки Flash отправляются на сервер и записываются в логи
![Page 14: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/14.jpg)
• Программист не должен заниматься добавлением контента
• Редактор объектов и карт
• Конвертер спрайтов
Организация работы
![Page 15: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/15.jpg)
Редакторкарт и объектов
• Редактор карт дает возможность добавлять в игру спрайты, анимированные спрайты, составлять из спрайтов объекты, а из объектов композиции• В редакторе задаются свойства клеток поля• Структура композиции на примере могилы дровосека
![Page 16: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/16.jpg)
• Кадры сортируются по папкам в удобном для использования порядке
• Создаётся конфиг файл для настройки анимаций
• Анимация конвертируется при сборке проекта
Конвертер спрайтов
![Page 17: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/17.jpg)
• Каждая сеть имеет свои технические особенности
• Использование препроцессора во flex
• Проект всегда имеет одну ветку в системе контроля версий
• Проект собирается и заливается на сервер
одной командой с параметром социальной
сети
Портирование под социальные сети
![Page 18: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/18.jpg)
Isomech Engine• Быстрый изометрический движок• Оптимизированная UI-система• Оптимизированная анимация персонажей• Автоматизированное добавление контента• Многоэтажность• Автоматизированная сборка под все социальные сети
![Page 19: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/19.jpg)
Требования
• Высокие нагрузки
• Линейное масштабирование
• Простота написания логики игры
Server-side
![Page 20: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/20.jpg)
![Page 21: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/21.jpg)
![Page 22: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/22.jpg)
• Распределенная система серверов логики
• PostgreSQL в качестве БД
• PostgreSQL в качестве системы синхронизации серверов логики
После старта
![Page 23: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/23.jpg)
База Данных
• не справлялась с нагрузкой
• хаотичный рост размера данных
• отсутствие устойчивости к потере сервера
• использование базы данных не по назначению
в качестве синхронизатора
Проблема
![Page 24: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/24.jpg)
Требования
• распределённая база
• удобные инструменты работы с базой, в частности простота расширения кластера
• отказоустойчивость
• возможность простой адаптации текущей модели игры под базу
Выбор базы
![Page 25: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/25.jpg)
Варианты
• mongodb
• HBase
• Cassandra
Выбор базы
![Page 26: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/26.jpg)
Варианты
• ZooKeeper
• memcached
• hazelcast
Кеш и синхронизация
![Page 27: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/27.jpg)
Модуль статистики
• все данные собираются в разрезах по полу, возрасту, стране
• основные параметры данных:– идентификатор события– числовое значение события
• в качестве дополнительных параметров выступает массив подкатегорий
Статистика
![Page 28: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/28.jpg)
![Page 29: Vizor Interactive: Технологии успеха](https://reader030.fdocument.pub/reader030/viewer/2022020116/5594afc61a28ab1b648b4571/html5/thumbnails/29.jpg)
• Распределенная система работы логики
• Hazelcast в качестве системы синхронизации серверов и кэширования данных
• Cassandra в качестве распределенной БД
• Сессия игрока привязана к определенному
серверу
• 9 серверов БД + 10 серверов логики =
120000 CCU, 1100000 DAU (RU)
• 450 GB данных игроков (RU)
Итоги