Where to store player data?

Any recommendations on the best place to store player specific data such as saved character level, inventory, completed quests, and settings?

We’re looking at using Gamelift for a UE4 survival game: shards of about 100 players, persistent worlds with backups, saved player data, saved item placements in the world

It seems it’d be easiest to store the saved character data in an array on the Game Mode and cross reference it with the saved character data on the local machine when the player joins. Is there anything that makes this a bad idea? Is there a better practice, like using an AWS database or something?

After a bunch of research, for anyone else with this question, it’s possible to store data in the way described above (containers like arrays on the game mode aka server). However, it’s better practice to store it in a database mainly because the information there is more scalable and secure. Database options include

  • USQLite plugin for UE4
  • Socket IO plugin for UE4 using node JS to communicate with an external database like MongoDB
  • Amazon’s in-house databases
  • many more
    The USQLite plugin creates a database which is actually part of the server build, so no need to fiddle with an intermediary scripting language to communicate with an external database. It’s all in-editor, in blueprints.

If anyone would like to chip in on which solution you prefer and why, I’m sure that info would be helpful to many developers.