Flash Rendering Library for a C++ Game Engine
This project involved the development of a C++ library for a game engine which could read, render, and animate a flash .swf file for a user interface or random artwork. There currently exists two such libraries that are well known: 1) GameSWF, and 2) ScaleformGFX. Most game engines use ScaleformGFX which is a proprietary library owned by Autodesk, and is not available to the general public. GameSWF was the precursor to ScaleformGFX but contains performance drawbacks, and obsolete code that does not always work. As a result, I began cannibalizing the GameSWF code, and rewriting it myself to meet a general renderer (one can plug DirectX into it), and use better tessellation algorithms. Additionally, my library implements Actionscript 3.0 (the Adobe Flash scripting language) as opposed to Actionscript 2.0 which is required by GameSWF and ScaleformGFX. Furthermore, my library will implement “advanced” shader effects (as of SWF 10.0) which neither library does – most likely due to performance issues. Not only did this project involve implementing several computational geometry algorithms and software design patterns, but it also involved working with OpenGL shaders, and learning about the construction and operation of a virtual machine for Actionscript. Things that are left to do: finalize the API for the library, link the Actionscript 3.0 functions with their C++ calls, Implement a MSAA anti-aliasing algorithm to clean up edges, Implement font rendering, Add interactive features such as text boxes, Implement the shader effects, and finally, optimize the library – especially to work with a game engine memory manager.