Using Google App Engine to Perform World Updates vs an Authoritative Server
- by Error 454
I am considering different game server architectures that use GAE. The types of games I am considering are turn-based where the world status would need to be updated about once per minute.
I am looking for an answer that persuades me to either perform the world update on the google servers OR an authoritative server that syncs with the datastore. The main goal here would be to minimize GAE daily quotas.
For some rough numbers, I am assuming 10,000 entities requiring updates. Each entity update would require:
Reading 5 private entity variables (fetched from datastore)
Fetching as many as 20 static variables (from datastore or persisted in server memory)
Writing 5 entity variables
Clients of the game would authenticate and set state directly against GAE as well as pull the latest world state from GAE.
Running the update on GAE would consist of a cron job launched every minute. This would update all of the entities and save the results to the datastore. This would be more CPU intensive for GAE.
Running the update on an authoritative server would consist of fetching entity data from the GAE datastore, calculating the new entity states and pushing the new state variables back to the datastore. This would be more bandwidth intensive for the datastore.