Hey there,
I'm creating a game that is in theory very close to Pokemon. Thus, I'm using its example as most readers should be aware of the game already.
I want to store almost all of the logic/data on PlayFab itself. However, I'm running into some design problems and would like advice on which PF feature to use for each game feature.
1. Pokemon
It seems the general idea would be to have a Catalog for the pokemon themsevles, with each item describing a unique pokemon in its custom data, such as base stats, stat gain/level, base skills, possible skills it can learn, etc. Then, each item instance can describe each pokemon instance, e.g. current level, current total xp, current HP, current stats, current skills, nature, shiny/notshiny, etc. I'm hoping to compress this data as much as possible, as I know space is limited in custom data.
2. Skills
The skills themselves will follow rather simple mathematical formulas, so carrying them out as logic isn't a problem for me. However, I'm wondering where I could store this information. Should I just have another catalog and make each item a skill? Then I could store the ItemId of the skill wherever I need to reference it.
3. Battles
I'm thinking of using Cloudscript for all other game functions, and Azure Functions for battles because of the comparitively larger amount of processing required. I believe I'll have to pre-compute the whole battle and send back the record to the client? I don't believe I can have live, choice-based battles, right?
4. Maps
The only map data I require is the ability to have an associated drop table for each "region" of the map, so I can determine what drops or pokemon are encountered by time of day and region. My game will use an energy based system for encounters, instead of plain roaming in the grass.
5. Equipments
The player can equip certain items to each pokemon. I believe this will be a catalog-item system as well.
6. Quests / Rewards
I need some way of being able to give the player story-based quests and keeping track of which quests have been completed/rewarded. Essentially, a way to store game progress.
7. Growth Items
Think of the "fishing rod" in Pokemon. I want to give certain items to my player that will unlock zones and aid in other things (e.g. more movement speed). However, I also want these items to be able to be upgraded, e.g. by feeding game currency. Should I go for another catalog-items system?
8. Player Config
Things like currently selected team, current fashion, etc. Ideally, I'd want a way so this can't be changed during battle.
So far, I've only encountered Catalog Items and Shared Group Data for storing such custom data. I'm not sure what are the extents of storage for Title Data and Player Datas. Are there any "data storage" options available in PlayFab?
If some of this stuff can't be solved inside PlayFab, or would just be plain better if done in a custom service or another azure service (anything easily attachable with PF), please recommend that as well.