After the disappointing experience of working on a gigantic iOS version of the Tonic Tutor web application that was ultimately rejected and abandoned, I pivoted towards standalone versions of the games that were targeted at individual students and families. Since 2017, when I've had time available, I've worked on creating 16 individual apps that are currently available for sale in the Apple app store.
Like the CreateJS versions of the games available on the web application, there are a lot of shared elements that are common to all of the games, so I spent some time at the start of the project identifying all of the code and assets that would be shared. I made a framework with all of those reusable classes and assets that I could drop in to each new game that I started developing. When I make an update to the framework, it updates the code in all of the games, which is extremely convenient. Once you start dealing with more than a few apps, changing a single line of code becomes a lot of work if you have to go through multiple files to change it in multiple places. It also increases the potential for missing one instance, leaving outdated code. I've learned to think strategically when I'm planning out the structure of a project. It makes managing a codebase much less cumbersome as it grows if you remain mindful of the work you're creating for yourself in the future if you neglect to continually monitor and adjust for structural issues.
Each game has custom settings displayed on the initial app view that users can use to adjust the game's settings, all of which are saved as defaults so the app remembers the settings even when the app is closed. Unlike the web application where teachers have fine-grained control over the settings, most of the settings on these apps are determined by the level a user selects to initiate the game. While I considered linking the games in some way to the web application, I decided to keep them entirely separate. The layouts were built programmatically using Cartography, and I used RealmSwift, a mobile database, to store the game results for each game a user plays locally on their device. I used Carthage to manage updates to those frameworks
I've made several updates to the apps over the years, fixing bugs and adding functionality, so I've become familiar with the process of uploading and submitting apps to Apple. I've also had experience entering information for each app into App Store Connect, creating marketing assets for each game that are displayed in the App store.