Skip to content

MMORPG architecture - instance architecture

0

Hi everyone, its my first question here so sorry if its the wrong place to do so.

On my Solution architecture MBA, Im making an architecture for a MMORPG, using Amazon New World architecture as a "guide" The idea so far is to create a design with an EC2 instance of C5.x2large as a "point of connection" server for the players connected to 5 EC2 C5.x4large as the gaming servers, all of this so far without autoscaling (all instances are going be available, as Im afraid that the idea of creating a new instance for the gaming servers would take too long and create latency for the players). Im wondering if there is a way to have less time while deploying an instance so I can have the gaming servers in an ASG, and thiking of creating a couple more of x2large instances with load balancing in order to have the connection point always available (they can also be in an ASG as well I think.

Do you guys have anything to say about this architecture? is there anything that I'm not aware that can be improved (I dont want to use gamelift in this part of the architecture, I'm thinking of using it for matchmaking for raid and special quests)

So far I have a pretty crap architering drawing.architeture design

1 Answer
1
Accepted Answer
  1. Consider using Auto Scaling Groups (ASGs) for both connection servers and game servers, with strategies like maintaining warm instances, using pre-baked AMIs, and leveraging predictive/scheduled scaling to mitigate launch time concerns.

  2. Implement load balancing for connection servers using services like Network Load Balancer (NLB) or Application Load Balancer (ALB) to ensure high availability and load distribution.

  3. Explore game server clustering to dynamically provision and deprovision game servers based on demand.

  4. Leverage Content Delivery Network (CDN) like Amazon CloudFront to distribute static game assets and reduce load on game servers.

  5. Incorporate appropriate databases (e.g., Amazon RDS, DynamoDB) and caching (Amazon ElastiCache) solutions based on data storage and caching requirements.

  6. Implement robust monitoring, logging, and security measures using services like Amazon CloudWatch, AWS CloudTrail, Amazon VPC, Security Groups, and Network ACLs.

  7. Consider integrating additional game services like matchmaking, leaderboards, and achievements using services like Amazon GameSparks or AWS Lambda.

EXPERT
answered 2 years ago
EXPERT
reviewed 2 years ago
  • Hi Giovanni, thx a lot!

    My Idea so far after some research on the 1st part of the answer you gave, I agree with you and will work on it as you said (I really liked the idea!)

    S3 will be used to host the mainpage of the game and the information that appears in the client 1st screen, it will use CloudFront to distribute patches, updates, and so on (I was already thinking on that)

    For Databases, I was thinking of using Aurora for the User database (personal information and data that may be used as transactional DB (user data, payments, upgrade subscriton, paid content and so on). DynamoDB as the Ingame database for the avatars, since it can have several RWs in miliseconds, it would be awesome to use it to save the avatar's state, location, level and so on. I was also thinking of using Redis to scoreboard in the game)

    Lambda will be use for some offgame characteriscts like avatar creating, thinking of using it with SQS to have some chat moderator (every message in the chat would go to the SQS which would send to Lambda to check for offensive words and then return to the game and be shown with ***** for offensive words, something like it)

    The Cluster part on the 3rd topic you mentioned is something that I need to do a deeper dive

  • another question (not sure if you guys get notification for it.

    what would be the best way to handle it (based on latency, value, and if it would work as well)

    game_client ---> ALB ---> conection server ---> NLB ---> game server

    or

    game_client ---> NLB ---> conection server ---> NLB ---> game server I imagine that the client in the user PC would connect using TCP to the connection server, instead of HTTPS, or it can work both ways?

  • No Notifications unfortunately...

    Use Option 2 if your game relies on TCP connections for real-time interactions. It simplifies the architecture by minimizing protocol translation and potential latency. Use Option 1 if you need the ALB’s advanced routing features and your connection server communicates with the game server over HTTP/HTTPS.

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.