Last Day Rulers Survival Gamelift test
Partner 的Value:
在Gamelift业务的测试过程中,云网安信(北京)科技有限公司提供一名驻场SA以帮助客户解决遇到的测试方面的问题;提供相关AWS产品的培训,在本次测试中,我司主要工作内容包括:
- 协助用户完成业务基础环境设计
- 实现用户游戏业务运行的VPC环境以及各产品的兼容
- 通过网络分隔、安全组、设置安全策略等技术对网络环境的安全加固
- 用CloudFront技术优化外部网络访问
- 协助完成GameLift架构集成及改造
- 实现将用户游戏业务代码与GameLift SDK进行集成
- 根据用户业务需求对应用程序架构进行调整,改变session返回方式
- 协助完成GameLift各项测试
- 游戏启动和关闭测试
- 玩家匹配测试
- 负载测试
- 失败恢复测试
- 游戏session管理测试
- 日志和监控测试
解决方案架构/架构图
架构图:
图示:基于AWS的架构示意图
-
- AWS架构说明
此架构设计的目的在于通过AWS遍布全球的基础设施,在最接近用户的区域部署游戏测试业务,整个架构主要说明如下:
- CloudFront: 利用CDN的外部网络优化服务,我们在边缘节点上部署测试项目,加速测试地区玩家的访问和数据传输过程的安全性。
- API Gatway: 用户的请求通过CDN首先被送到API Gateway,它能够根据我们制定的策略将请求数据进行过滤并发送到Lambda中,这样增强了业务环境的安全性和高可用性。
- Lambda:我们通过事件驱动型函数,用来托管游戏测试环境中的核心服务,响应从API Gateway发送过来的请求数据并调用后端的GameLift API,例如玩家身份验证、排名计算、session创建等。除此之外,我们在Lambda 中设置预置并发数,并根据实际测试环节进行调整。
- Gamelift: 对于游戏部分,我们通过使用Gamelift来托管游戏服务器。我们的架构思路是Clients通过Game services调用Gamelift提供的SDK去向GameLift发出请求,Gamelift可以访问Game server(fleet)去获取session状态并返回Game services。我们还在Gamelift中设置自动扩展的游戏服务器托管服务,确保在玩家数量激增时也能提供稳定的游戏性能和高可用性。
- EC2 Instances (Application): 这些是托管应用程序的虚拟服务器实例。我们采用的是普通的t4g服务器,处理来自用户的请求或是game services的请求,响应所需的游戏内容。
- ElastiCache (Redis): ElastiCache 提供内存缓存服务,我们用它进行加速游戏数据访问,包括玩家数据和游戏状态数据。减轻数据库负载并提高性能。使用Redis作为缓存可以显著减少对数据库的请求,从而提高应用的响应速度。
- RDS (Relational Database Service): 这是一个托管的关系型数据库服务,我们用于存储玩家数据、游戏配置和其他关键数据。
- Document DB:我们用Document DB来存储游戏中日志的数据,例如游戏中的玩家对局数据、玩家配置文件、session日志文档等。
- 日志记录:我们根据Gamelift以及其他产品的事件日志和指标进行故障排查和性能分析,以便我们操作过程的随时调整。
- 2. GameLift测试说明
1、如何把客户游戏业务和gamelift 的sdk 做集成实现联动
根据提供的GameLift SDK将客户的虚幻引擎和兼容C++开发语言的gamelift 进行集成。在游戏启动时,初始化 GameLift SDK。在Fleet部署游戏集群并通过queue去设置优化session创建的配置,确保玩家被匹配到适当的游戏会话中,以实现多人游戏。并且将本地DS server(基地服)与Game server 通过SDK进行游戏业务集成,实现基地和战斗房间的切换。
2、Gamelift 测试场景以及分别是怎样的测试方式
1、游戏启动和关闭测试: 我们通过运行游戏时事件日志的检查确保游戏能够正确启动和关闭游戏服务器实例,并且游戏状态能够得到正确的保持和恢复。
2、玩家匹配测试: 我们协助客户邀请少量玩家进行功能模块测试。测试玩家匹配功能,包括匹配速度、匹配准确性和匹配队列的管理。确保玩家能够顺利加入游戏会话。
3、负载测试: 我们协助客户,用他们的脚本去模拟大量并发玩家连接到游戏服务器实例,以确保游戏服务器可以扩展以应对高负载。
4、失败恢复测试: 当游戏服务器实例崩溃或失败时,我们测试GameLift 是否能够自动替换它们,并确保玩家能够继续游戏。
5、游戏session管理测试: 我们进行测试游戏会话的创建、终止和管理,以确保session可以按需创建和销毁。
6、日志和监控测试: 确保能够获取有关游戏服务器实例性能和状态的适当日志和监控数据。主要是我们测试clients启动game session和创建game session的场景下
3、业务要对Gamelift 做的改造
通过将业务和Gamelift SDK的集成改变之前暴露实际端口和IP地址给玩家接入对局的方式,优化成依靠Lambda进行API调用,增强安全性、降低高并发率;在Game services阶段实现玩家身份验证系统,以确保只有合法的玩家可以进入游戏,使用加密来保护游戏通信和玩家数据,以防止数据泄露。在关键游戏逻辑中验证玩家的输入和操作,以检测和阻止作弊行为,如外挂程序。
,确保能够获取游戏服务器实例性能和状态的日志以及游戏监控数据。