Flash движок в игре Зомби Ферма

Содержание

Слайд 2

Начало разработки Требование к движку

Обзор существующих Flash-движков
Основной упор при разработке на оптимизацию

Начало разработки Требование к движку Обзор существующих Flash-движков Основной упор при разработке на оптимизацию

Слайд 3

Способ отрисовки

Display List и Bitmap Bitting
Движок изначально писался на Action Script 2
Однозначный

Способ отрисовки Display List и Bitmap Bitting Движок изначально писался на Action
выбор – использование Display List

Слайд 4

Изометрия

Разделение объектов в мире на статические объекты и персонажей
Объекты хранятся в массиве

Изометрия Разделение объектов в мире на статические объекты и персонажей Объекты хранятся
в порядке их отображения
Сортировка персонажей осуществляется
каждые 50 мс
Многоэтажность

Слайд 5

Проблемы производительности

При отображении тысяч спрайтов наблюдались сильные тормоза при движении мыши
Flash шлет

Проблемы производительности При отображении тысяч спрайтов наблюдались сильные тормоза при движении мыши
события мыши каждому спрайту, добавленному в Display List

Слайд 6

Решение проблемы

Application

mainSprite

UI Controller

Блокирование всех событий мыши
Добавление объекта UI Controller
UI

Решение проблемы Application mainSprite UI Controller Блокирование всех событий мыши Добавление объекта
система. UIComponent и UIContainer

Слайд 7

Система анимирования персонажей

Использование MovieClip тормозит
Персонаж состоит из слоев
Кадры персонажа собираются

Система анимирования персонажей Использование MovieClip тормозит Персонаж состоит из слоев Кадры персонажа
в одну большую растровую картинку
Под каждый слой создается объект Bitmap
Анимирование осуществляется путем копирования части растровой картинки в объект Bitmap

Слайд 8

50 Зомби!

50 Зомби!

Слайд 9

Звуки

Создание стерео звуков. Использование SoundTransform
SoundManager для хранения и менеджмента всех звуков в

Звуки Создание стерео звуков. Использование SoundTransform SoundManager для хранения и менеджмента всех звуков в игре
игре

Слайд 10

Кеширование

Графика объектов собирается группами в swf файлы
Менеджер объектов следит за количесвом созданных

Кеширование Графика объектов собирается группами в swf файлы Менеджер объектов следит за
копий картинок
Для подгрузки и кеширования картинок напрямую используется класс CachedImage

Слайд 11

Сигналы

Проблема разработки при разростании проекта
Использование сигналов
Простейший базовый класс логики
Важность правильной структуры кода

Сигналы Проблема разработки при разростании проекта Использование сигналов Простейший базовый класс логики
на начальных этапах разработки

Слайд 12

Обход препятствий

Алгоритм обхода в ширину даёт большую нагрузку
Обход препятствий при необходимости
Проблемы погрешностей

Обход препятствий Алгоритм обхода в ширину даёт большую нагрузку Обход препятствий при
при вычислениях
Учёт физики карты

Слайд 13

Тестирование

Обновления нужно делать в короткие сроки
Все ошибки не возможно найти на этапе

Тестирование Обновления нужно делать в короткие сроки Все ошибки не возможно найти
тестирования внутри компании
Критические ошибки Flash отправляются на сервер и записываются в логи

Слайд 14

Программист не должен заниматься добавлением контента
Редактор объектов и карт
Конвертер спрайтов

Организация работы

Программист не должен заниматься добавлением контента Редактор объектов и карт Конвертер спрайтов Организация работы

Слайд 15

Редактор карт и объектов

Редактор карт дает возможность добавлять в игру спрайты, анимированные

Редактор карт и объектов Редактор карт дает возможность добавлять в игру спрайты,
спрайты, составлять из спрайтов объекты, а из объектов композиции
В редакторе задаются свойства клеток поля
Структура композиции на примере могилы дровосека

Слайд 16

Кадры сортируются по папкам в удобном для использования порядке
Создаётся конфиг файл для

Кадры сортируются по папкам в удобном для использования порядке Создаётся конфиг файл
настройки анимаций
Анимация конвертируется при сборке проекта

Конвертер спрайтов

Слайд 17

Каждая сеть имеет свои технические особенности
Использование препроцессора во flex
Проект всегда имеет одну

Каждая сеть имеет свои технические особенности Использование препроцессора во flex Проект всегда
ветку в системе контроля версий
Проект собирается и заливается на сервер
одной командой с параметром социальной
сети

Портирование под социальные сети

Слайд 18

Isomech Engine

Быстрый изометрический движок
Оптимизированная UI-система
Оптимизированная анимация персонажей
Автоматизированное добавление

Isomech Engine Быстрый изометрический движок Оптимизированная UI-система Оптимизированная анимация персонажей Автоматизированное добавление
контента
Многоэтажность
Автоматизированная сборка под все социальные сети

Слайд 19

Требования
Высокие нагрузки
Линейное масштабирование
Простота написания логики игры

Server-side

Требования Высокие нагрузки Линейное масштабирование Простота написания логики игры Server-side

Слайд 22

Распределенная система серверов логики
PostgreSQL в качестве БД
PostgreSQL в качестве системы синхронизации серверов

Распределенная система серверов логики PostgreSQL в качестве БД PostgreSQL в качестве системы
логики

После старта

Слайд 23

База Данных
не справлялась с нагрузкой
хаотичный рост размера данных
отсутствие устойчивости к потере сервера
использование

База Данных не справлялась с нагрузкой хаотичный рост размера данных отсутствие устойчивости
базы данных не по назначению
в качестве синхронизатора

Проблема

Слайд 24

Требования
распределённая база
удобные инструменты работы с базой, в частности простота расширения кластера
отказоустойчивость
возможность простой

Требования распределённая база удобные инструменты работы с базой, в частности простота расширения
адаптации текущей модели игры под базу

Выбор базы

Слайд 25

Варианты
mongodb
HBase
Cassandra

Выбор базы

Варианты mongodb HBase Cassandra Выбор базы

Слайд 26

Варианты
ZooKeeper
memcached
hazelcast

Кеш и синхронизация

Варианты ZooKeeper memcached hazelcast Кеш и синхронизация

Слайд 27

Модуль статистики
все данные собираются в разрезах по полу, возрасту, стране
основные параметры данных:
идентификатор

Модуль статистики все данные собираются в разрезах по полу, возрасту, стране основные
события
числовое значение события
в качестве дополнительных параметров выступает массив подкатегорий

Статистика

Слайд 29

Распределенная система работы логики
Hazelcast в качестве системы синхронизации серверов и кэширования данных
Cassandra

Распределенная система работы логики Hazelcast в качестве системы синхронизации серверов и кэширования
в качестве распределенной БД
Сессия игрока привязана к определенному
серверу
9 серверов БД + 10 серверов логики =
120000 CCU, 1100000 DAU (RU)
450 GB данных игроков (RU)

Итоги

Имя файла: Flash-движок-в-игре-Зомби-Ферма.pptx
Количество просмотров: 161
Количество скачиваний: 0