23
Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде Сергей Шпадырев, программист, компания «Тортуга»

SECON'2014 - Сергей Шпадырев - Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Embed Size (px)

DESCRIPTION

Тезисы: выбор Flash/Air при создании игры с 3D, сравнение с Unity3D; обзор существующих во Flash 3D-библиотек; трудности разработки 3D-игры на Flash; особенности использования на мобильных платформах; некоторые результаты. Целевая аудитория: все, кому интересна разработка игр, с любым уровнем вовлеченности в индустрию.

Citation preview

Page 1: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Разработка 3D-игры на Flash: едем с костылями на собственном

велосипеде

Сергей Шпадырев,

программист,

компания «Тортуга»

Page 2: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Почему мы выбрали Flash

• Широкое распространение Flash Player-a• Наличие испытанных в боях фреймворков и библиотек• Большой опыт в разработке на Flash• Скорость и удобство разработки

Page 3: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Stage3D

Встроенная во Flash аппаратно-ускоренная архитектура, совмещающая в себе возможности отрисовки 3D и 2D графики. Предоставляет разработчикам низкоуровневый API для работы с GPU.

Stage3D лежит в основе всех трехмерных графических движков на Flash, начиная с 11 версии.

Page 4: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Выбор 3D-движка

+ открытость и бесплатность+ распространенность+ широкие возможности+ много хороших уроков- уступает в производительности - слабый редактор

+ неплохой редактор+ качественные туториалы+ свой язык шейдеров- закрытость- платность- мало информации в интернете

+ открытость и бесплатность+ чуть большая производительность+ русская поддержка- нет редактора- мало документации

Page 5: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Первый блин комом

Page 6: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Преодолевая трудности

1. Проблемы с документацией

22 строки шейдера=

1,5 недели

Page 7: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

2. Непонятные аномалии и неожиданные перемены в API

Page 8: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

3. Многие базовые вещи приходится дописывать

Page 9: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

4. Неожиданные утечки памяти

Page 10: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Animation pool

Entity pool

Character pool

+

+

=Нет проседания FPSи утечек памяти

Page 11: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

5. Латание дыр движка

- частицы

- проектор теней

- уничтожение объектов

- определение клика по объекту

Page 12: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

6. Производительность

Плохое освещение –высокий FPS

Хорошее освещение, тени –снижение FPS в 1,5-2 раза

Page 13: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Кроссплатформенность

• Поддерживаются основные платформы

• Возможно использование Native API

• Быстродействие иногда заставляет желать лучшего

Page 14: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Избиение младенцев

VS

Page 15: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Производительность

Тест 1 – поиск простых чисел Flash (мс) Unity (мс)

Тест на скорость арифметических вычислений. Простым перебором ищутся простые числа в диапазоне от 1 до миллиона. Запоминается время потраченное на поиск, выбирается минимальное, максимальное и среднее значение.

min 3540 2527max 3678 2672avg 3610 2555

Тест на скорость работы с массивами. Создаётся массив из миллиона элементов и заполняется случайными числами. В ходе теста по массиву прогоняется алгоритм a[i] = a[i -1] + 99

Тест 2 – работа с массивами

Flash (мс) Unity (мс)min 57 26max 58 27avg 57,6 26,3

Page 16: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Графика и анимация 2D

Тест3 (Картинки) Flash Unity

Тест4 (Анимация) Flash Unity

Количество объектов FPS

Количество объектов FPS

200 60 57 200 20 57400 60 44 400 10 34600 60 28 600 8 21800 47 21 800 6 17

1000 37 18 1000 5 131200 32 14 1200 3 111400 28 12 1400 2 91600 24 10 1600 2 81800 22 9 1800 2 72000 20 9 2000 2 6

Описание теста 3:

Описание теста4:

Графический тест. Каждые 5 секунд создаётся 200 объектов типа Image, они перемещаются в случайном направлении и поворачиваются на случайный угол. Замеряется FPS.

Графический тест с анимацией. Был создан текстурный атлас и анимация. Тестирование происходит аналогично предыдущему тесту.

Page 17: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Сложная модель, 10 штук,

1 направленный источник света.

Flash – 27Unity3D – 51

Графика 3D

1000 кубиков,самый простой шейдер.

Flash – 10Unity3D – 49

Page 18: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Какие мы сделали выводы

Разрабатывать 3D игру на Flash можно, но стоит этим заниматься только если уже есть готовая инфраструктура. Возможно будут наблюдаться проблемы с производительностью на мобильных платформах, поэтому для них предпочтительнее использование Unity. Если инфраструктуры нет, то Unityтоже лучший вариант.

Page 19: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде
Page 20: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде
Page 21: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде
Page 22: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде
Page 23: SECON'2014 - Сергей Шпадырев -  Разработка 3D-игры на Flash: едем с костылями на собственном велосипеде

Компания «Тортуга»

tortugasocial.com

Для стоящих резюме:

[email protected]

Сергей Шпадырев