Многострадальный 2020-й подошёл к концу, и, помимо прочих событий, он запомнится нам как конец эры Flash. 1 января старый-добрый Flash выключили окончательно, в связи с чем произошел бум желтых заголовков о том, что «найден заменитель флеша лучше и безопаснее оригинала». Тема стала крайне популярной в октябре-ноябре, хотя логичнее было бы начинать…
Хех да это весело ))) Был у меня проект в работе - 18 игр головоломок написанных на флеше. Все ресы в swf с каким то кодом. Приличная код база и много математики. В итоге в одно лицо было все портировано на openfl где то за полгода, под конец подключился еще человек. Результат был ужасен! ))) На мелких пазлах более менее было, а на больших сильно проседал фпс и память просто росла как на дрожжах. В играх юзался cacheAsBitmap - это была боль ) OpenFL не справлялся со всем набором фич. Билд игры выходил где то 1mb сжатого js кода. Еще прикол в том что на одном экране могло отображаться десятки вьюверов игры - а это анрил для webgl - потеря контекста. В итоге нами было принято волевое решение написать свою реализацию flash graphics api (flash.display) на haxe. Ну и после заменить openfl. Писал я один где то полтора месяца. Конечно я учитывал только те фичи которые нужны, а это color transform, cacheAsBitmap, mask, scrollRect, dirty zones и text. И самое главное что бы все было на canvas! В итоге получился супер легкий двиг! С поддержкой выше перечисленного. Размер билда 300кб, память вообще не растет, cacheAsBitmap реализован только для поля игры где могут располагаться десятки тысяч элементов. Color transform реализовано на уровне трансформации цвета, а не попиксельно. Ну и самое главное стабильная производительность! Одно из самых сложных это было коррекция текста - что бы он на разных браузерах был одинаково. И pixel snapping - это боль ) Поиграть можно здесь https://www.conceptispuzzles.com.
До этого я делал свой конвертер ) но как то не очень он популярен https://github.com/AntonovSergey2211/guepard