I am currently working on a fairly large UI heavy flash game. Our team has been working on this for about 9 months. None of us had previous experience with Flash, so we are constantly improving our workflows during this time. Nevertheless, we still believe that what we are doing now is not optimal, especially the interface between encoders and artists, so I wonder how other teams work.
An ideal workflow must meet the following requirements:
1. Reusable user interface elements are defined only once.
This means that if we want to change the font or style of the button, we do not want to go through all of our menus and change them manually. We want them to be defined in one central place and only sent from there. Bonus points if assets are distributed not only during editing, but also during execution, that is, they are loaded only once.
2. Everything loads on demand
We currently have two different loading steps: first, we load the menu libraries. When this is done, players can already interact with all the menus. Then we start loading the actual gameplay data. The initial loading time is still too long and makes us lose a lot of potential players. We really want to load only the minimum minimum necessary for the main menu, and then download everything else only when the player is trying to actually open the corresponding menu. Zuma Blitz does it really well.
3. Artists may make minor changes without the help of coders.
If the menu needs to be redesigned without changing the actual functionality, artists can do it themselves in Flash CS6. This requires a clear interface between art and code, and artists must also check and debug their changes before sending them to the encoders.
-
Our current workflow looks like this: an artist creates screens in the role of MovieClips in Flash CS6 and exports them as SWF. On the code side, download MovieClips from the SWF screens and use them as View classes on our PureMVC-based system. Mediators gain access to elements, such as text fields in views, by their instance names.
This is error prone because there is no central place to define an interface (i.e. instance names). It takes a lot of communication overhead between the coder and the artist. In addition, it creates a relationship between the code and the internal structure of the movie clip. Artists cannot attach a text box to another submodule when they want to apply some effects to it.
We are experimenting with an event-based interface that requires an artist to add a few lines of code to a movie clip. This is less error prone and interdependent than before, but it still does not fully satisfy (3), unless we write additional tools for testing and debugging. This should be a common problem, and I cannot imagine that there is no simpler way.
For (2) we also began to build a home solution, but again, this is such a common task, there should already be something that we can use.
So, how do experienced Flash developers manage such large projects?