I've been trying to figure out what is the best way to deliver content that was purchased by users through my app (iOS).
Sorry for the long post, but I want to be as clear as possible.
My app is an educational tool to help users master specific mathematical ideas. It is really made up of many "mini games", divided into bundles by topic and age group. Each of these games is focused on explaining and teaching one specific mathematical idea. The users can purchase bundles of games using IAP, in which case these games will be unlocked and made accessible.
Googling around, I came across two ways to deliver newly-purchased content to users:
- Have all the "mini games" coded into the app in the first place (as different rooms), and locked by default.
- When a user initiates a purchases, the state of the corresponding rooms change to "unlocked".
- PRO: easy and straightforward.
- CON: I will be adding new mini games regularly, which would mean that I will need to publish a new version of my main app every time I do that.
- CON: Ever increasing app size.
- Code my mini games in some language-independent format (XML/JSON/etc), and write my main app as a "shell" app that can decipher these files, and build the rooms on the fly.
- When a user initiates a purchases, the app will download the corresponding game files from my server.
- PRO: Theoretically, I don't need to ever update my main app again (or at least, update it very infrequently)
- CON: I need to find a way to design my games (which can be very different from one another) in GML:S, serialize them, and figure out the code to deserialize back into valid rooms.
Does anybody else have experience with the above?
Is there a better way that I haven't figured out?
Currently, I'm leaning towards #2. Since GM:S saves games in XML format, I'm trying to reverse engineer this XML, and write some code to read it back and re-construct my game in a separate room. This will save me from doing my own custom serialization. Creating the rooms, and the objects is easy, but reverse-engineering each object's events and actions is not straightforward, and requires lots of trial and error.
I looked for documentation on GM's saved gamed XML syntax, but couldn't find any. I wonder if that info can be shared.
Thanks everyone. GM:S is an awesome tool.