I am fairly new to game designing and am trying to design game engine architecture for MMOG poker game. My major problem is scalability. Old Legacy code written in python runs everything on single process. Clients and server talks using xml based protocols. Following is old architecture.
admin -> DB (mysql) <-> backend <-> game-engine + login-server <-> client
- backend cluster ( to interact with db)
- Player Server cluster (handles player authentication and events from clients)
- gamelogic server cluster (executes game logic)
- redis-cluster (for caching states of ongoing tables)
- directory-service + routing server(all clusters will talk with it and all communication will be done through it. initially planning to go with single such server and later make it distributed. Something like this. please see section 'Distributed Directory Service' and 'Distributed broker')
I need to build it using Twisted because of client constrains and legacy codebase.
In this architecture I am confused at one point particularly. Suppose I have multiple tables on one game-logic server and it goes down. How can I address this situation without losing game?