зомби ферма. как это сделано - Виктор и Андрей Кузьмины...
DESCRIPTION
В докладе будет рассказано, как создавалась топовая социальная онлайн игра "Зомби Ферма", в которую играет уже более 8 000 000 пользователей не только русскоязычных, но и зарубежных социальных сетей. С какими трудностями пришлось столкнуться в процессе разработки и дальнейшей поддержки игры. Какие проблемы возникали и какими путями они устранялись.Какие решения позволили поднять игру на более высокий уровень в техническом плане. Как оптимизировалась работа движка и как усовершенствовалась серверная база. Почему для нас не проблема DAU в 5 000 000.TRANSCRIPT
Flash движок в игре Зомби Ферма
• Проблемы в процессе разработки и их решения
Начало разработкиТребование к движку
• Обзор существующих Flash-движков• Основной упор при разработке на оптимизацию
Способ отрисовки
• Display List и Bitmap Bitting• Движок изначально писался на Action Script 2• Однозначный выбор – использование Display List
Изометрия
• Разделение объектов в мире на статические объекты иперсонажей
• Объекты хранятся в массиве в порядке их отображения• Сортировка персонажей осуществляется каждые 100 мс• Многоэтажность
Проблемыпроизводительности
• При отображении тысяч спрайтов наблюдалисьсильные тормоза при движении мыши
• Flash шлет события мыши каждому спрайту,добавленному в Display List
Решение проблемыApplication
mainSprite
UI Controller
• Блокирование всех событий мыши• Добавление объекта UI Controller• UI система. UIComponent и UIContainer
Система анимированияперсонажей
• Использование MovieClip тормозит• Персонаж состоит из слоев• Кадры персонажа собираются в одну большуюрастровую картинку• Под каждый слой создается объект Bitmap• Анимирование осуществляется путем копирования части растровой картинки в объектBitmap
50 Зомби!
• Программист не должен заниматься добавлениемконтента
• Редактор объектов и карт• Конвертер спрайтов
Организация работы
Редакторкарт и объектов
• Редактор карт дает возможность добавлять в игруспрайты, анимированные спрайты, составлять изспрайтов объекты, а из объектов композиции• В редакторе задаются свойства клеток поля• Структура композиции на примере могилы дровосека
• Кадры сортируются по папкам в удобном дляиспользования порядке
• Создаётся конфиг файл для настройки анимаций• Анимация конвертируется при сборке проекта
Конвертер спрайтов
• Каждая сеть имеет свои технические особенности• Использование препроцессора во flex• Проект всегда имеет одну ветку в системе контроляверсий
• Проект собирается и заливается на серверодной командой с параметром социальнойсети
Портирование подсоциальные сети
Isomech Engine
• Быстрый изометрический движок• Оптимизированная UI-система• Оптимизированная анимация персонажей• Автоматизированное добавление контента• Многоэтажность• Автоматизированная сборка под все социальные сети
Требования• Высокие нагрузки• Линейное масштабирование• Простота написания логики игры
Server-side
• Распределенная система серверов логики• PostgreSQL в качестве БД• PostgreSQL в качестве системы синхронизациисерверов логики
После старта
База Данных• не справлялась с нагрузкой• хаотичный рост размера данных• отсутствие устойчивости к потере сервера• использование базы данных не по назначениюв качестве синхронизатора
Проблема
• Распределенная система работы логики• Hazelcast в качестве системы синхронизации серверови кэширования данных
• Cassandra в качестве распределенной БД• Сессия игрока привязана к определенномусерверу• 9 серверов БД + 6 серверов логики =100000 CCU, 800000 DAU (RU)• 200 GB данных игроков (RU)
Итоги
Вопросы? E-mail: [email protected]
Спасибо за внимание!