The Origin
zStudio began as a tool solving a very specific problem: game studios had years of valuable animation work locked inside Adobe Flash (.fla) files, and the web was moving to HTML5. Getting that work out — with all its animation tracks, sprite hierarchies, pivot points, and bitmap fonts intact — required something that didn't exist yet. So we built it ourselves. The first commit landed in February 2018. The core was an Adobe AIR application written in ActionScript 3. It accepted a compiled .swf file on the command line, walked the entire display list, and wrote out a structured placements.json alongside individual PNG images for every display object. That JSON schema — templates, instances, portrait/landscape orientation transforms, animation keyframes — became the foundation that zStudio is still built on today. By August 2018 the tool could pack all images into a single texture atlas using a custom rectangle packer written in AS3. Matrix decomposition was added so that Flash's internal transformation matrices could be broken back down into the x, y, rotation, scaleX, scaleY, skewX, and skewY values the runtime actually needed. A font exporter was built to extract embedded Flash fonts and convert them to bitmap font data. In September 2023 the placements.json output structure was tightened up. Its core later carried over into zStudio itself: in February 2025 the scene exporter and rectangle packer were ported to TypeScript and brought into the editor, detaching them from the Flash/AIR environment.
Highlights
- →Adobe AIR / ActionScript 3 SWF-to-JSON exporter
- →Custom rectangle packer and texture atlas builder
- →Matrix decomposition for clean transform export (x, y, rotation, scale, skew)
- →Font exporter and bitmap font pipeline
- →placements.json schema — the scene format that underpins all of zStudio
- →JSFL scripts for Adobe Animate pre-processing (timeline unification, library conversion, image export)
- →Portrait/landscape dual-orientation support in the output format
- →Exporter and rectangle packer ported to TypeScript in February 2025