The MovieClip was an externalized component that is used across all games. Being highly dependent on timestep's rendering system, keeping it separated made it difficult to add changes to timestep without impacting the stability of the MovieClip.
The Movieclip component contained a duplicate component from timestep (Matrix2D).
Observed performances were not as good as they could be.
One bug was also identified concerning the buffering of animations when its substitutions changed.
Some concepts were absent such as Symbol, Instance,Graphicandlibrary. Also the termMovieClip` is misleading as it will conflict with a MovieClip symbol of an animation (that is not supported yet).
How
Results
When it comes to the MovieClip component itself, it corresponds to a major boost (around 50% on the new skinning system). Therefore that is no surprise that Cats receives a good performance improvement >10%. It appears to be a minor improvement on Everwing though: ~1% in gameplay and 5% on the landing screen.
Engine tick
The ticking of the engine appears ~15% faster on Everwing's landing screen:
Before
After
Chrome profile (macbook)
On Cats
Before
After
The time taken by the renderFrame method is roughly half what it used to be!
Other performance improvements we can see on this profile comparison are due to all the optimizations that were done so far in timestep. We can notice that the time taken by the wrapRender method (which includes all the rendering pipeline) has been divided by 2.
On Everwing
Profiling on the landing page gives roughly 5% improvement:
Before
After
For some reason the performance improvement of the renderFrame method is not as good as in Cats. The MovieClip component used in Everwing is older and might have been more efficient in the past.
Notes on follow-up work:
There is some commented code that would correspond to the support of Flash MovieClip and Graphic options as well as identifications consistent with Flash (an instance can have a libraryID, a className and optionally an InstanceName). If Implemented we would be one step closer to full Flash feature support (there is a long way to go).
There are 2 ways to make the animations run slightly faster. By using the proper className identification system in order to determine which animations can be substituted and by optimizing the animation hierarchy but it would imply reexporting all the animations.
Why
The
MovieClip
was an externalized component that is used across all games. Being highly dependent on timestep's rendering system, keeping it separated made it difficult to add changes to timestep without impacting the stability of theMovieClip
.The
Movieclip
component contained a duplicate component from timestep (Matrix2D
).Observed performances were not as good as they could be.
One bug was also identified concerning the buffering of animations when its substitutions changed.
Some concepts were absent such as
Symbol
,Instance,
Graphicand
library. Also the term
MovieClip` is misleading as it will conflict with a MovieClip symbol of an animation (that is not supported yet).How
Results
When it comes to the
MovieClip
component itself, it corresponds to a major boost (around 50% on the new skinning system). Therefore that is no surprise that Cats receives a good performance improvement >10%. It appears to be a minor improvement on Everwing though: ~1% in gameplay and 5% on the landing screen.Engine tick
The ticking of the engine appears ~15% faster on Everwing's landing screen: Before
After
Chrome profile (macbook)
On Cats
Before
After
The time taken by the
renderFrame
method is roughly half what it used to be! Other performance improvements we can see on this profile comparison are due to all the optimizations that were done so far in timestep. We can notice that the time taken by thewrapRender
method (which includes all the rendering pipeline) has been divided by 2.On Everwing
Profiling on the landing page gives roughly 5% improvement: Before
After
For some reason the performance improvement of the
renderFrame
method is not as good as in Cats. TheMovieClip
component used in Everwing is older and might have been more efficient in the past.Notes on follow-up work:
libraryID
, aclassName
and optionally anInstanceName
). If Implemented we would be one step closer to full Flash feature support (there is a long way to go).className
identification system in order to determine which animations can be substituted and by optimizing the animation hierarchy but it would imply reexporting all the animations.