The gaming player in the world has boomed dramatically, driving the game industry to flourish
According to research by game market research firm Newzoo, the global gaming production value will reach 150 billion US dollars in 2019; the number of people watching e-sports in 2019 will also grow from 395 million in 2018 to 456 million. Plus the popularity of mobile devices, the annual forecast for global mobile game players will reach 2.6 billion in 2021. In such a large-scale industrial development, the problems that game companies have to face are not only stable operation, the global delivery of content, but also the development of innovative content. It also takes a long time to operate and manage a lot. A series of processes from development, testing, listing to promotion.
To let infrastructure deploy rapidly- Elastic Beanstalk
A common development mode for game developers is to run a web server on the computer to develop, and then upload the server code to the cloud when deploying. If you are using this model, AWS Elastic Beanstalk can greatly simplify the process of deploying code to AWS. Elastic Beanstalk is a deployment management service that integrates with other AWS services such as Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing (ELB), and Amazon Relational Database Services (Amazon RDS). You can also upload a zip, war, or git repository of server code to Elastic Beanstalk. If your game requires more features, you can easily connect Elastic Beanstalk extensions to other AWS services without having to rebuild it. The following is an architectural diagram of Elastic Beanstalk for game infrastructure:
Game static data storage, data analysis source – S3
Whether user-generated content, analytics, or game saves, Amazon S3 can be used for game data storage. User Generated Content (UGC) is the best example of uploading data to Amazon S3. A typical UGC has two parts: a digital file (for example, a graphical asset) and a metadata (for example: name, date, author, label, etc.). The usual mode is to store the digital files in Amazon S3 and then store the metadata in the database.
After the player’s data is uploaded to S3, you can create a Data Lake in S3 as a source for future data analysis. If you are able to pre-determine the questions you want to know, you can focus on collecting data that will help you answer those specific questions; if you are unsure, consider tracking any metrics that players can encounter, such as: playing time, which role or item the player like most, the current play status, and the highest level…etc.
Game leaderboards, dynamic game data storage – Amazon Aurora, Amazon Dynamo DB
The biggest bottleneck in online games is often database performance. Typical web-based applications have a lot of reading and a small amount of writing properties such as: blogs, online movies, etc. The game is just the opposite, as the state of the game changes constantly. Reading and writing often access the database, so the database determines the performance of the game. Amazon Aurora is a fully managed, relational database service compatible with MySQL and PostgreSQL. It combined with the simplicity and cost effectiveness of an open source database. If your game is beyond the scope of traditional relational databases such as MySQL or Amazon Aurora, we recommend performing performance evaluations, including tuning parameters and sharding.
In addition, you should consider using NoSQL products (such as Redis or DynamoDB) to reduce some of the workload from MySQL. DynamoDB is a fully managed NoSQL solution from AWS. In addition to auto-scaling and hosted caching, DynamoDB can also manage tasks such as synchronous replication and IO configuration for you. DynamoDB uses the Provisioned Throughput model, where you can specify the number of reads and writes required per second, and the rest will be set by you.
Game message push- Simple Notification Service(SNS)
There are two main types of message push in the game: messages for specific users, such as game invitations or mobile device message notifications, and group messages such as chats or game packages. A common way to send and receive these messages is to use a Socket server with a stateful connection.
If you have a small number of players, so few people can connect to the same server, you can simply send a message between players by selecting a different Socket. However, in most cases, you need to have multiple servers, which means that there is still some way to pass messages between these servers. Passing messages between EC2 server Instances is an example of what Amazon SNS can provide. Suppose you have player 1 on server A and he wants to send a message to player 2 on server C. In this case, server A can view the locally connected player. When it cannot find player 2, server A can forward the message to the SNS, and then the SNS propagates the message to other servers.
Amazon SNS also supports the ability to send notifications directly to the mobile client. Your server code places the message into the corresponding SNS topic based on certain in-game events and then passes the message to the corresponding user’s device.
Game content delivered to the world – Amazon CloudFront
From the perspective of user adhesion, DLC (Downloadable Content) is an important element of modern games, and users expect to continue to introduce new characters, levels and challenges in the months following the release of the game. This model is becoming a major source of revenue for game makers, and the ability to provide this game content quickly and efficiently will have a significant impact on the profitability of the DLC strategy. If you want to distribute content to a large number of clients (for example, game update packages, augmented content, or beta versions), you can use AWS’s CDN service with Amazon S3: Amazon CloudFront to deliver these files to users around the world, Amazon CloudFront through AWS Edge locations deployed around the world allow end users to accelerate access to content and services provided by the company.
The following is an architectural diagram of the services introduced in this e-newsletter: