SlideShare a Scribd company logo
Плавный переход к HTML5
• 2 версии игры для тестирования пользователями
• Еженедельные апдейты в плановом порядке
• Возможность отключить HTML5 версию либо
ограничить ее использование
Варианты решения
• Переписать все с нуля
• Единовременная конвертация кода в язык, генерирующий и AS,
и JS код.
• Реализация Flash API на JavaScript и конвертера кода AS -> JS
Rendering
• StageXL (bunnymark: 150000)
• PIXI (bunnymark: 200000)
• IvanK Lib
• EaselJS
• и т.д.
PIXI
• Схожесть с Flash API
• Хороший бенчмарк
• Большое комьюнити
• WebGL + Canvas
Основные проблемы
Производительность клиента в
одинаковых условиях в зависимости от браузера
5
60
12
30
11
60
30
2220
40
0
10
20
30
40
50
60
70
Render time
(ms)
Fps Render time
(ms)
Fps
Chrome
Mozilla
Edge
PC1 PC2
RAM
Основная проблема – загрузка swf пакета ресурсов с
множеством [Embed]
[Embed(source = “img/0.png")] public var IMG_0:Class;
[Embed(source = "img/1.png")] public var IMG_1:Class;
[Embed(source = "img/2.png")] public var IMG_2:Class;
RAM
Варианты решения:
Грузить ресурсы отдельным
запросом при попытке доступа к
ним в приложении либо сразу
(минус – изначальное
переполнение)
Грузить ресурсы в упакованном
виде сразу и распаковывать
при первой попытке доступа к
ним
IMG_0:
IMG_1:
IMG_2:
IMG_0:
IMG_1:
IMG_2: IMG_0
Текст
На примере Google Сhrome:
- BitmapFont
- Векторизация шрифта
- Иногда помогает увеличение
текста в 2 раза, отрисовка его на
HTMLCanvas и отрисовка на
результирующий HTMLCanvas с
масштабом 0.5
GPU
Выключение hardware antialiasing дает до 50% производительности, но
приводит к угловатости кривых (скругленный прямоугольник)
Решение: рисовать линию как множество прямоугольников с
градиентом по бокам
GPU
Минимизация количества объектов типа ShaderProgram либо
их прекомпиляция уменьшит заметные лаги в Mozilla
Размер ресурсов на GPU можно снизить, если первый
BitmapData.copyPixels в (0,0) из атласа заменить рамкой в
исходном атласе, если есть уверенность в том, что исходный
объект BitmapData не будет меняться
GPU
Единовременная загрузка множества картинок из Embed
ресурсов может быть организована динамическим атласом,
если отрисовка картинок происходит подряд
Для этого на этапе сборки проекта необходимо
сгенерировать прямоугольники – будущие места картинок в
этом атласе.
Модификация рендерера
При >5000 объектов в дисплей листе большой процент по
загруженности CPU занимает перерасчет результирующих
трансформаций и границ
Решение
• Введем понятие камеры
• Трехуровневый кэш границ и трансформаций (локальные, мировые и
экранные)
• Камера врезается в дисплей лист на объекте, относительно которого
происходят минимальные изменения трансформации объектов (x, y,
width, height, rotation, …), и перерасчет происходит только у
экранных трансформаций
Решение
Спасибо за внимание
Moving from Flash to HTML5 – converting large projects

More Related Content

What's hot

Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
Fwdays
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Fwdays
 
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страницFrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
FrontDays
 
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Экономное масштабирование в облаке, Иван Кокорин, Vostok ProjectsЭкономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
it-people
 
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
 Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects  Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
it-people
 
Изобретая колесо: как мы писали свой мониторинг
Изобретая колесо: как мы писали свой мониторингИзобретая колесо: как мы писали свой мониторинг
Изобретая колесо: как мы писали свой мониторинг
Uptime Community
 
UI, сделай мне хорошо
UI, сделай мне хорошоUI, сделай мне хорошо
UI, сделай мне хорошо
ssuser2062cc
 
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...Ontico
 
Server-side JavaScript
Server-side JavaScriptServer-side JavaScript
Server-side JavaScriptMedia Gorod
 
Podlodka i os crew 8
Podlodka i os crew 8Podlodka i os crew 8
Podlodka i os crew 8
ssuser2062cc
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Ontico
 
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают..."Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
Egor Petrov
 
Цифровая обработка сигналов
Цифровая обработка сигналовЦифровая обработка сигналов
Цифровая обработка сигналов
MATLAB
 
Платформа GPUDigtiallab
Платформа GPUDigtiallabПлатформа GPUDigtiallab
Платформа GPUDigtiallab
oleg gubanov
 
Kostja
KostjaKostja
KostjaOntico
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
Ontico
 
Практическая верификация и командная работа
Практическая верификация и командная работаПрактическая верификация и командная работа
Практическая верификация и командная работа
MATLAB
 
Mafiozi Performance1
Mafiozi Performance1Mafiozi Performance1
Mafiozi Performance1barcamplv09
 
Legacy vs Agile Team
Legacy vs Agile TeamLegacy vs Agile Team
Legacy vs Agile Team
Alexey Voronin
 

What's hot (19)

Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
 
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страницFrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
 
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Экономное масштабирование в облаке, Иван Кокорин, Vostok ProjectsЭкономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
 
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
 Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects  Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
 
Изобретая колесо: как мы писали свой мониторинг
Изобретая колесо: как мы писали свой мониторингИзобретая колесо: как мы писали свой мониторинг
Изобретая колесо: как мы писали свой мониторинг
 
UI, сделай мне хорошо
UI, сделай мне хорошоUI, сделай мне хорошо
UI, сделай мне хорошо
 
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
 
Server-side JavaScript
Server-side JavaScriptServer-side JavaScript
Server-side JavaScript
 
Podlodka i os crew 8
Podlodka i os crew 8Podlodka i os crew 8
Podlodka i os crew 8
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
 
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают..."Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
 
Цифровая обработка сигналов
Цифровая обработка сигналовЦифровая обработка сигналов
Цифровая обработка сигналов
 
Платформа GPUDigtiallab
Платформа GPUDigtiallabПлатформа GPUDigtiallab
Платформа GPUDigtiallab
 
Kostja
KostjaKostja
Kostja
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
 
Практическая верификация и командная работа
Практическая верификация и командная работаПрактическая верификация и командная работа
Практическая верификация и командная работа
 
Mafiozi Performance1
Mafiozi Performance1Mafiozi Performance1
Mafiozi Performance1
 
Legacy vs Agile Team
Legacy vs Agile TeamLegacy vs Agile Team
Legacy vs Agile Team
 

Viewers also liked

PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
Frank Wienberg
 
Big and small development: key differences
Big and small development: key differencesBig and small development: key differences
Big and small development: key differences
DevGAMM Conference
 
Game design technology: easy solutions for complex problems
Game design technology: easy solutions for complex problemsGame design technology: easy solutions for complex problems
Game design technology: easy solutions for complex problems
DevGAMM Conference
 
Sound drama in game projects. Movie sound in games
Sound drama in game projects. Movie sound in gamesSound drama in game projects. Movie sound in games
Sound drama in game projects. Movie sound in games
DevGAMM Conference
 
Applied music: how to speak the composer’s language
Applied music: how to speak the composer’s languageApplied music: how to speak the composer’s language
Applied music: how to speak the composer’s language
DevGAMM Conference
 
Producing for indies
Producing for indiesProducing for indies
Producing for indies
DevGAMM Conference
 
Twists and turns of developing music applications for iOS
Twists and turns of developing music applications for iOSTwists and turns of developing music applications for iOS
Twists and turns of developing music applications for iOS
DevGAMM Conference
 

Viewers also liked (7)

PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
 
Big and small development: key differences
Big and small development: key differencesBig and small development: key differences
Big and small development: key differences
 
Game design technology: easy solutions for complex problems
Game design technology: easy solutions for complex problemsGame design technology: easy solutions for complex problems
Game design technology: easy solutions for complex problems
 
Sound drama in game projects. Movie sound in games
Sound drama in game projects. Movie sound in gamesSound drama in game projects. Movie sound in games
Sound drama in game projects. Movie sound in games
 
Applied music: how to speak the composer’s language
Applied music: how to speak the composer’s languageApplied music: how to speak the composer’s language
Applied music: how to speak the composer’s language
 
Producing for indies
Producing for indiesProducing for indies
Producing for indies
 
Twists and turns of developing music applications for iOS
Twists and turns of developing music applications for iOSTwists and turns of developing music applications for iOS
Twists and turns of developing music applications for iOS
 

Similar to Moving from Flash to HTML5 – converting large projects

Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
OdessaJS Conf
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
Sergey Rubanov
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
DevGAMM Conference
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 
ERP-системы в облаке: разбор кейсов DataLine
ERP-системы в облаке: разбор кейсов DataLineERP-системы в облаке: разбор кейсов DataLine
ERP-системы в облаке: разбор кейсов DataLine
DataLine
 
Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"
Yandex
 
Михаил Черномордиков Ie9
Михаил Черномордиков   Ie9Михаил Черномордиков   Ie9
Михаил Черномордиков Ie9Siel01
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
Roman_Lut
 
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
OdessaFrontend
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
Олег Винников
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
Andrei Pangin
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
Provectus
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
Alexander Demidov
 
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...DEPO Computers
 
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Айдар Гилязов
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Yandex
 

Similar to Moving from Flash to HTML5 – converting large projects (20)

Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
ERP-системы в облаке: разбор кейсов DataLine
ERP-системы в облаке: разбор кейсов DataLineERP-системы в облаке: разбор кейсов DataLine
ERP-системы в облаке: разбор кейсов DataLine
 
Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"
 
Михаил Черномордиков Ie9
Михаил Черномордиков   Ie9Михаил Черномордиков   Ie9
Михаил Черномордиков Ie9
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
 
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
Решения DEPO Computers для консолидации данных и серверной виртуализации на б...
 
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
 

More from DevGAMM Conference

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...
DevGAMM Conference
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
DevGAMM Conference
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
DevGAMM Conference
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
DevGAMM Conference
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)
DevGAMM Conference
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
DevGAMM Conference
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
DevGAMM Conference
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
DevGAMM Conference
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
DevGAMM Conference
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
DevGAMM Conference
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
DevGAMM Conference
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
DevGAMM Conference
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...
DevGAMM Conference
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
DevGAMM Conference
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
DevGAMM Conference
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
DevGAMM Conference
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
DevGAMM Conference
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
DevGAMM Conference
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
DevGAMM Conference
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
DevGAMM Conference
 

More from DevGAMM Conference (20)

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
 

Moving from Flash to HTML5 – converting large projects

  • 1.
  • 2. Плавный переход к HTML5 • 2 версии игры для тестирования пользователями • Еженедельные апдейты в плановом порядке • Возможность отключить HTML5 версию либо ограничить ее использование
  • 3. Варианты решения • Переписать все с нуля • Единовременная конвертация кода в язык, генерирующий и AS, и JS код. • Реализация Flash API на JavaScript и конвертера кода AS -> JS
  • 4. Rendering • StageXL (bunnymark: 150000) • PIXI (bunnymark: 200000) • IvanK Lib • EaselJS • и т.д.
  • 5. PIXI • Схожесть с Flash API • Хороший бенчмарк • Большое комьюнити • WebGL + Canvas
  • 7. Производительность клиента в одинаковых условиях в зависимости от браузера 5 60 12 30 11 60 30 2220 40 0 10 20 30 40 50 60 70 Render time (ms) Fps Render time (ms) Fps Chrome Mozilla Edge PC1 PC2
  • 8. RAM Основная проблема – загрузка swf пакета ресурсов с множеством [Embed] [Embed(source = “img/0.png")] public var IMG_0:Class; [Embed(source = "img/1.png")] public var IMG_1:Class; [Embed(source = "img/2.png")] public var IMG_2:Class;
  • 9. RAM Варианты решения: Грузить ресурсы отдельным запросом при попытке доступа к ним в приложении либо сразу (минус – изначальное переполнение) Грузить ресурсы в упакованном виде сразу и распаковывать при первой попытке доступа к ним IMG_0: IMG_1: IMG_2: IMG_0: IMG_1: IMG_2: IMG_0
  • 10. Текст На примере Google Сhrome: - BitmapFont - Векторизация шрифта - Иногда помогает увеличение текста в 2 раза, отрисовка его на HTMLCanvas и отрисовка на результирующий HTMLCanvas с масштабом 0.5
  • 11. GPU Выключение hardware antialiasing дает до 50% производительности, но приводит к угловатости кривых (скругленный прямоугольник) Решение: рисовать линию как множество прямоугольников с градиентом по бокам
  • 12. GPU Минимизация количества объектов типа ShaderProgram либо их прекомпиляция уменьшит заметные лаги в Mozilla Размер ресурсов на GPU можно снизить, если первый BitmapData.copyPixels в (0,0) из атласа заменить рамкой в исходном атласе, если есть уверенность в том, что исходный объект BitmapData не будет меняться
  • 13. GPU Единовременная загрузка множества картинок из Embed ресурсов может быть организована динамическим атласом, если отрисовка картинок происходит подряд Для этого на этапе сборки проекта необходимо сгенерировать прямоугольники – будущие места картинок в этом атласе.
  • 14. Модификация рендерера При >5000 объектов в дисплей листе большой процент по загруженности CPU занимает перерасчет результирующих трансформаций и границ
  • 15. Решение • Введем понятие камеры • Трехуровневый кэш границ и трансформаций (локальные, мировые и экранные) • Камера врезается в дисплей лист на объекте, относительно которого происходят минимальные изменения трансформации объектов (x, y, width, height, rotation, …), и перерасчет происходит только у экранных трансформаций