Разработка 3D-игры на Flash: едем с костылями на собственном
велосипеде
Сергей Шпадырев,
программист,
компания «Тортуга»
Почему мы выбрали Flash
• Широкое распространение Flash Player-a• Наличие испытанных в боях фреймворков и библиотек• Большой опыт в разработке на Flash• Скорость и удобство разработки
Stage3D
Встроенная во Flash аппаратно-ускоренная архитектура, совмещающая в себе возможности отрисовки 3D и 2D графики. Предоставляет разработчикам низкоуровневый API для работы с GPU.
Stage3D лежит в основе всех трехмерных графических движков на Flash, начиная с 11 версии.
Выбор 3D-движка
+ открытость и бесплатность+ распространенность+ широкие возможности+ много хороших уроков- уступает в производительности - слабый редактор
+ неплохой редактор+ качественные туториалы+ свой язык шейдеров- закрытость- платность- мало информации в интернете
+ открытость и бесплатность+ чуть большая производительность+ русская поддержка- нет редактора- мало документации
Первый блин комом
Преодолевая трудности
1. Проблемы с документацией
22 строки шейдера=
1,5 недели
2. Непонятные аномалии и неожиданные перемены в API
3. Многие базовые вещи приходится дописывать
4. Неожиданные утечки памяти
Animation pool
Entity pool
Character pool
+
+
=Нет проседания FPSи утечек памяти
5. Латание дыр движка
- частицы
- проектор теней
- уничтожение объектов
- определение клика по объекту
6. Производительность
Плохое освещение –высокий FPS
Хорошее освещение, тени –снижение FPS в 1,5-2 раза
Кроссплатформенность
• Поддерживаются основные платформы
• Возможно использование Native API
• Быстродействие иногда заставляет желать лучшего
Избиение младенцев
VS
Производительность
Тест 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
Графика и анимация 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.
Графический тест с анимацией. Был создан текстурный атлас и анимация. Тестирование происходит аналогично предыдущему тесту.
Сложная модель, 10 штук,
1 направленный источник света.
Flash – 27Unity3D – 51
Графика 3D
1000 кубиков,самый простой шейдер.
Flash – 10Unity3D – 49
Какие мы сделали выводы
Разрабатывать 3D игру на Flash можно, но стоит этим заниматься только если уже есть готовая инфраструктура. Возможно будут наблюдаться проблемы с производительностью на мобильных платформах, поэтому для них предпочтительнее использование Unity. Если инфраструктуры нет, то Unityтоже лучший вариант.
Top Related