Storing and managing your game’s data is one of the most important, critical services our platform provides. As our services scale to support over 1000 titles and 80 million monthly active users, we are constantly looking for ways to increase storage capacity as well as improve performance. As a result, today we are proud to announce the release of Playfab’s Entity Objects & Files system. Currently, the scope of this system includes the following entity types: player, character, publisher, and title data. In the future we plan to expand the system to support other entity types.
Before we get into the details of how it works, let’s first talk about why we built this system and what problems we wanted to solve:
Support larger, more complex data. This is a common request from you. Today title and player data are limited to storing data in key value pairs of strings that are limited to 100K. With the Entity Objects and Files systems, these limitations are drastically changed. With Entity Objects you can store up to 3 JSON structured objects (higher limits are available depending on your pricing plan), and with Files you can store any size of arbitrary binary data.
Support atomic updates and concurrency control. With the Entity Objects & File system, you can now update multiple objects (and files) in a single operation. In the old data system if updating multiple keys and one failed it was not possible to know which failed, possibly leaving data in an inconsistent state. Now the entire operation will fail, keeping the data consistent.
Significantly improve performance. Changing the way we store data, as well as unifying the access policies we use, increases performance for player and title CRUD operations. Existing Data API methods were built separately for each place where the data is bound (title, player, character). By consolidating all Data API interactions into a single place, all CRUD operations work the same way across the entire service. We unify data across a smaller set of tables and use a common access policy system more efficiently to access the necessary data.
Provide consistency in accessing data. Entity Object & Files APIs introduce new access patterns that are designed to alleviate a lot of the pain points of the current player account and data systems. Currently, you need to use a wide combination of Data API methods to save and view data on various entity types. Each type contains its own separate features and limitations. In the new API scheme, you pass in which Entity (title, player, character) you are requesting to perform the given action on the entity, so a single API supports saving a data value for any Entity Type. Combined with powerful access rules this replicates all existing data behaviors in a much cleaner fashion, as well as adds a number of powerful new access control options. All API methods work across all entity types, current and future.
We can build new features more quickly and efficiently. Another highly requested feature - Groups (aka Guilds) will release shortly, built on top of our Entity Objects system. As well, we can extend features like Segmentation to work on Entity Objects and their data. Eventually, we’d also like to support the ability for you to build your own Custom Entity Types. This new system is just the start of many possibilities.