This iteration was dedicated to creating and installing the App Store system into the current game environment. In order to actually purchase Apps, this would mean that I would also elaborating on an Unlock system as well. Before implementation, all Micro-Games were manually initialized within the Game Cycle Handler, Hub, and Playlist. After creating the App Store, these would need to be dynamically added over the course of gameplay, allowing for several default Micro-Games to be available at the start, and further Micro-Games to be added to the roster as the user unlocks them. Given the fact that this system would represent the last piece of the puzzle forming the whole game experience, I needed to ensure that the implementation would flow effectively.
At the start of any given session, if no previous saved data is found, the game will load Unlock states from an XML file. The XML file provides the default listing for all Micro-Games, and further denotes whether they are unlocked as starter Micro-Games, available in the App Store, or hidden indefinitely. Over the course of gameplay, users will be able to interact with the states by either purchasing Apps from the store, or revealing new Micro-Games in the App Store through accomplishments. This information would need to be saved to the Shared Object, therefore enabling the game to correctly update the Micro-Game roster whenever the user loads the game session.
An Unlock Data class handles the management of the Unlock states for Micro-Games. By sending out a list of the current Micro-Games and states, the Game Cycle Handler, Hub, Playlist, and App Store can determine changes between their locally owned vectors and the Unlock Data’s collection. For instance, if a new Micro-Game is bought, the Game Cycle Handler will receive an event from the Unlock Data class, and therefore will be able to check the Unlock states to uncover newly added Micro-Games.
For ease of reversion, each applicable system tracks two vectors. The first vector represents a list of all the possible Micro-Game apps. This means that the Hub system will be aware of all possible App Hub items at the start of the game. Systems also contain another vector representing the currently utilized Apps. When Apps are validated and added to a system, the system can transfer items from the total vector to the current vector, and vice-versa. As a result, resetting or removal is just a matter of removing items from the current vector and repopulating the total vector.
Similar to other methods of saving and loading, if no default saved list of Unlocks is found, the game will simply utilize the XML file. If a saved list is found, it will update all of the systems accordingly. Each time the game is saved, it will also ensure to update the Shared Object with the current list of Unlock information.
In its current form, the App Store completes the purchasing process, but still needs another pass to further polish and refine its functionality. Currently, a selection queue allows the user to navigate between all possible App Store Apps. Apps convey their name, icon, and purchase value. A Currency object enables Achievements to dynamically update the store value, as well as for the App Store to acquire and test the current value. This value is also saved within the Shared Object consistently over the course of gameplay, and on critical updates and purchases.
If the user has enough currency, the amount is deducted and the Unlock Data is notified of the change in Unlock state. This is then sent out to all systems. When the App Store system receives the event, it will note the change of state, therefore removing the app from the purchase list. All other apps will then add the new Micro-Game to their rosters, allowing it to be played by the user.
Aside from polishing a few other features, fixing some noticeable usability bugs, and implementing the currency on the main HUD, the implementation of Unlocks and the App Hub represents the bulk of the work for this sprint. Next iteration, I will likely focus on implementing a menu HUD visible in all major menus, as well as adding features to the App store. When available via documentation, the splash slideshow, bundles, and App pages will be added to the App Store. Hopefully, by the end of the next iteration, all major systems will be implemented, allowing for a focus on developing the actual Micro-Games for a few weeks.