Since I wrote the last blog post 10 weeks ago I’ve made massive progress on the game. To start, I built the foundation of the combat system in the app with 4 ‘effects’: damage, heal, ongoing damage/heal, and level buffs/debuffs. I also settled on 6 skill levels that will be trained through combat and will determine combat ability effectiveness. Those are Health, Strength, Magic, Dexterity, Defense, and Faith. I’d like to consider non-combat skills at some point, but I haven’t worked out how to implement them into the game, so for now I’m shelving the idea. The chart below outlines the combat actions and how they align to the skills, a solid outline means it is already implemented.

You’ll also notice abilities can be learned permanently once you acquire and consume an ability codex. Equipment can also provide abilities, but you can only use those when are wearing the equipment. Generally equipment’s primary function is to provide stat boosts.
After designing and implementing this whole system at the app level, I realized I would need a different approach if I ever wanted to support multiplayer. That led me down a very deep rabbit hole of learning about server side swift (thank you Kodeco for your ebook), database management, and secure APIs.
To start, I built a whole server side application to receive API requests from the app. Then I added Apple ID authentication to create, store, and load user profiles in the database. Finally, I rebuilt the entire combat system on the server side which took the longest by far. This process was an uphill battle in unknown territory, almost every day I was learning new concepts as I waded through error after error in my code.
Now that I’ve finished implementing the battle system, I’m moving into managing the mob drops and user inventory on the server side. With any luck this won’t take more than 4 weeks and I can get back to designing the UI.