【社区分享 - 游戏篇】AWS云科技助力游戏内容开发 - 游戏项目构建篇 & 运行篇 & 增长篇
概述
该公开课持续8周,每周分享内容如下:
参考链接如下:
直播的PPT
截图如下:
视频回放链接如下:https://live.csdn.net/room/csdnstudent/jBmK1QoW?spm=1001.2014.3001.5501
游戏构建篇
12月1号:云端游戏的亚马逊主张
简要介绍了AWS云科技如何为游戏提供了一整套的解决方案,如何助力游戏开发(Amazon Nimble Studio
,NICE DCV
远程办公),如何助力游戏运维和增值服务(Amazon GameSparks
,AWS GameKit
)
12月1号:探索云上游戏开发新思路 - 亚马逊云科技助力游戏开发者重塑游戏内容创作
这次分享的主题是 《探索云上游戏开发新思路 - 亚马逊云科技助力游戏开发者重塑游戏内容创作》,简要介绍了AWS云科技如何为游戏提供了一整套的解决方案,如何助力游戏开发(Amazon Nimble Studio,NICE DCV远程办公),如何助力游戏运维和增值服务(Amazon GameSparks,AWS GameKit)。
主要介绍了如何利用
Amazon Game
系列服务加速游戏开发:利用Gamelift
弹性伸缩服务器提供的SDK进行快速的游戏开发,以及介绍了GameSpark
和GameKit
如何帮助我们进行游戏构建:
- 1)
Gamelift
是一个弹性伸缩的服务器,支持全球化部署,玩家会选择最近的服务器进行接入- 2)
GameSparks
是Serverless的托管服务,方便游戏服务器端的开发;- 3)
GameKit
是Unreal Engine
的游戏引擎插件,可以部署和管理亚马逊云上的资源;
12月8号:基于Amazon GameLift的Steam游戏开发实践
今天主要介绍了如何利用Gamelift进行快速的游戏开发,以及介绍了GameSpark和GameKit如何帮助我们进行游戏构建:
- 1)Gamelift是一个弹性伸缩的服务器,支持全球化部署,玩家会选择最近的服务器进行接入
- 2)GameSparks是Serverless的托管服务,方便游戏服务器端的开发;
- 3)GameKit是Unreal Engine的游戏引擎插件,可以部署和管理亚马逊云上的资源;
12月8号:利用 Amazon Game 系列(Gamelift,GameSparks,GameKit)服务加速游戏开发
12月15号:O3DE开源游戏引擎
- 先是介绍了游戏引擎是什么?传统的游戏引擎包括哪几个部分(参考
Jason Gregory
的游戏引擎架构一书,现在的游戏引擎架构包含如下多个模块:游戏专用子系统,前端,视觉效果,场景图/删除优化,碰撞与物理,渲染器,资源管理器等) - 接着介绍了
O3DE
这个3A开源游戏引擎平台的内部各个模块:O3DE
中每个模块叫做GEM
,是一个可复用的软件包,并着重介绍了O3DE
中多线程渲染引擎Atom
、游戏逻辑编写支持的脚本语言,基于数据驱动的动画(Motion Matching
)技术,网络通信优化等。该平台可用于实现跨平台游戏,数字孪生,元宇宙的VR/AR体验,并且有很多杰出的合作伙伴参与开源社区建设。 - 接着介绍了
O3DE
的应用场景:比如制造业中的数字孪生,汽车行业的仿真计算,以及智慧城市中的场景构建等,并且O3DE还可以通过Gem
支持ROS2
的系统模拟。接着介绍了亚马逊云科技中的SimSpace Weaver
,它支持在亚马逊云上构建、运行和管理大规模的仿真计算服务,它可以应用在现实世界的模拟、生产制造环境的模拟和多人在线娱乐的体验中。 - 最后总结了
O3DE
是一个开放的游戏引擎标准,以后各公司可以基于该标准建立一个开放版本的元宇宙。
12月15号:AIGC加速游戏内容创意
- 首先介绍了中国游戏的转型阶段:资源驱动(愤怒的小鸟,生化危机)
->
投资驱动(王者荣耀)->
创新驱动(原神),接着介绍了游戏项目研发过程中的瓶颈主要包括时间瓶颈(质量控制、运营优化、社区维护)和边际收益的瓶颈(内容量产、市场投放),可以通过优化产业结构来优化这两个瓶颈。 AIGC
游戏开发正好可以简化游戏策划与美术设计师之间的概念传递过程,设计师的设计内容的发散过程。
但是AIGC
的游戏开发并不适用于所有的游戏开发场景,主要还是设计效果无法收敛,工作室中美工无法高并发访问NovelAI
游戏盒子,存在数据隐私问题,因此介绍了亚马逊云科技如何解决这几个场景的痛点,并以StableDiffusion-webUI
为例介绍了基于AIGC
游戏开发的系统架构。
12月22号:利用DynamoDB构建适合高并发游戏场景的NoSQL数据模型
- 首先介绍了
DynamoDB
数据库的发展过程,NoSQL
的作用是对计算的优化(SQL
是对存储的优化)。DynamoDB
支持弹性扩容,在峰值时能够提高整个系统的吞吐量。 - 接着介绍了
NoSQL
的基本属性(分区键/排序键)以及NoSQL
建模:在1:1
建模中,使用分区键作为主键对游戏玩家数据进行存储;在1:M
建模中,使用分区键(用户名)和排序键(日期)作为主键对玩家会话历史数据进行存储; - 接着以大逃杀游戏作为例子,使用
DynamoDB
对游戏玩家数据进行建模,建模过程使用Python脚本语言实现,还有就是在设置访问方式时创建稀疏二级索引和添加倒排索引(通过用户id查找相关的游戏),教程见官网 https://aws.amazon.com/cn/getting-started/hands-on/data-modeling-gaming-app-with-dynamodb/2/。
12月22号:用亚马逊云科技数据库开启游戏新世界
- 先是抛出了一个问题:哪些数据库适用于游戏开发(
Aurora
,RDS
,DynamoDB
,MemoryDB
)?答:关系型数据库适用的场景:注册、付费等数据一致性强且需要持久化的服务、老游戏代码的运维,而Amazon RDS
提供了丰富的关系型数据库的选择(MySQL
,MariaDB
,Aurora
,SQL Server...
),关于Aurora
关系型数据库建议拜读论文(https://tanxinyu.work/aurora-thesis/,https://dl.acm.org/doi/abs/10.1145/3035918.3056101) - 接着指出了关系型数据库的劣势:表结构不易扩展,维护数据一致性导致读写延迟大,难以横向扩展数据库,难以应对极高并发的查询;接着引出了键值对/文档型/内存等
NoSQL
数据库,而亚马逊云科技中的DynamoDB
是NoSQL数据库的实现,比如它降低了仅有3名服务器开发人员(管理着两千台EC2
服务器)的SuperCell公司的运维成本(自动扩展轻松应对400万人同时在线的峰值)。 - 接着介绍了基于亚马逊云科技的
ElasticCache
构建的Redis
平台,它比Redis
更好维护,无需配置Redis
集群或哨兵的形式就可以支持零停机在线平衡的收缩和扩展,而如果有数据持久化的需求,可以通过MemoryDB
分布式内存数据库。 - 接着介绍了
Amazon
在全国25个地理区域内运营了81个可用区,搭建了相应基础设施,能够解决数据库的全球同步问题:比如Aurora
、DynamoDB
、DocumentDB
以及ElastiCache for Redis
中支持本地写入和全球复制,利用卫星相关的时间戳保持数据一致性等优点,可以利用PITR
实现数据备份以及数据的丢失恢复。
游戏运行篇
12月29号:可靠运行 - GameTech运行技术
- 首先介绍了传统的游戏在运行之前需要先在机房中部署,运营人员如更好地让这些服务器的资源发挥到极致是他们关心的,因此为了降低一款游戏运行的成本,服务器应该具备弹性伸缩的能力。
- 在采购
Amazon
服务器时,并没有一个完整的标准(内存,CPU要多少)告诉你选择哪款服务器更加合适,运行的成本更低,比如以网易互娱为例子,使用C5
系列的服务器相比于C4
服务器节约更高的成本。网易互娱所开发的伸缩策略调度的平台架构,能够保证服务器的开关是和用户量的上升和减少同步的。但是对于小型游戏团队却不具有这项架构设计的能力,因此Amazon
云科技提供了GameLift
实现弹性的游戏服的扩展(服务注册和发现),帮我们在云端托管游戏服务,我们只需要专注于游戏逻辑即可。 Amazon
在云端中提供了多种类型的数据库(大部分游戏核心部分需要使用Nosql
数据库,而非核心部分使用sql数据库),用户只需要选择适合自己游戏的一款数据库即可(MemeoryDB for Redis
,DocumentDB for MongoDB
)。Amazon
通过这些弹性组件,开发了自己的一款游戏:新世界https://baike.baidu.com/item/新世界/57227249?fr=aladdin
12月29号:MOBA游戏云上实践探索
MOBA
是多人战斗竞技类游戏,它常见的挑战主要涉及到资源调度、网络要求、以及大量的实时计算。接着将MOBA
游戏架构划分成大厅服和对战服,介绍了大厅服如何在机型上(可以使用ARM
也可以使用Intel
的服务器),在数据库(Aurora
,DynamoDB
,MemoryDB
)上进行选择,如何利用GameLift
实现对战服的全球扩区域优化,使用Flexmatch
消息队列实现异步处理请求。- 接着介绍了
Amazon
如何实现游戏在全球实现低延时访问以及玩家匹配:waveLength
,outposts
和Local Zones
。
1月05号:无服务器游戏后端解决方案
- 首先介绍了游戏后端服务包括如下3个部分:游戏服务器托管,机器学习和数据分析服务。而关于游戏服务器的管理主要分为自己搭建或者是使用托管服务,其中基于
Amazon
云科技的服务器托管服务包括事件驱动的Serverless
(无状态化,微服务),以及会话管理Gamelift
(比如在对战服中使用GameSession
连接)的解决方案。 - 接着着重讲解了事件驱动
Serverless
的托管服务:- 先是介绍了
Serverless
的托管服务的网络模式分成三种模式:P2P
(早期的CS游戏)、分布式服务器、和Serverless
服务器模式(通过api
去调用云端的服务器去运行程序,好处是以后的运维只需要调用api
即可,而不需要去直接去操作Docker
容器)。接着介绍了传统的卡牌对战的后端架构(DNS
网关,CDN
,服务器网关等)以及如何将其改造成Serverless
架构。 - 接着介绍了
Serverless
的好处是将大量的运维工作转移到AWS
,帮助开发者专注于业务逻辑,天然形成DevOps
的开发模式。 - 接着介绍了对于一些事件驱动类型的游戏服务,如何改造成
Serverless
托管服务的模式,这里列举了实际开发过程中有效的架构模式:大厅登录,玩家匹配,游戏对战,服务器日志管理(如何进行数据分析)。 - 接着介绍了
Serverless
面临的挑战是需要将有状态和无状态的服务进行分离,Serverless
架构应该避免事务性操作,因此在无状态改造上难点较大(参考有状态服务和无状态服务(无状态服务即无需获取上下文请求无关,如果无状态服务要实现事务可以通过session
或者cookies
实现))。 - 接着介绍了
Serverless
托管服务是如何运维部署的:在开发测试环境中,开发团队向GitHub
上提交代码,Github
再将代码push
到Amazon S3
服务器上,测试/运维团队通过api
的方式来获取项目,并将其部署到S3
服务器上。 - 而在生产环境阶段,运维团队将代码提交到
github
,通过AWS CDK
来运维控制AWS服务器;在debug
阶段,则可以使用Amazon CloudWatch
去debug代码;使用AWS压测框架进行不同场景的快速压力测试;
- 先是介绍了
- 接着着重讲解了会话管理的
Gamelift
托管服务(并非单点服务,支持不同的弹性收缩策略;就近进行玩家的会话匹配等):- 游戏逻辑,比如玩家建立连接的逻辑如下:先将脚本上传到
Gamelift
中,Gamelift
(Amazon帮我们实现的服务器架构,类似Euraka
,实现服务注册和发现)会对各个服务器进行全局管理,会通过心跳检测判断哪个服务器存活并保存在服务注册表中,将请求交给指定服务器进行处理之后,再将相应的请求响应结果通过GameLift
返回给客户端
- 游戏逻辑,比如玩家建立连接的逻辑如下:先将脚本上传到
- 接着以玩家游戏匹配,游戏进行和游戏结束为例子简单介绍
Gamelift
和Serverless
服务如何组合。
1月12号:如何在全球范围内抵御DDoS攻击
- 首先介绍了什么是拒绝服务攻击(
DoS
),什么是分布式拒绝服务攻击(DDoS
):DDoS
包括7种攻击类型,比如TCP
泛洪攻击(TCP连接数大于表的最大连接数),DNS
泛洪攻击,HTTP GET
泛洪等,正常的服务器无法抗住这么大流量的DDoS
攻击。 - 接着简单介绍了亚马逊云科技如何抵御
DDoS
攻击:设计一个可伸缩扩展的架构,比如通过部署多个CDN
边缘节点来抵挡DDoS
的攻击,攻击者并不能知道亚马逊云科技区域里面的实际IP
(通过ELB
实现负载均衡,服务器IP
并没有暴露到公网中),因此攻击者无法集中攻击某个CDN
边缘节点。 - 接着介绍了
Shield
标准盾(免费)和高级盾(让专家帮忙写一些NLB规则,应用在边缘节点上,可以把恶意的流量过滤掉),接着介绍了如何在AWS链路上对恶意流量进行清洗,如何使用WAF
(web防火墙)去防止CC攻击(包括设置限流规则,以及IP黑名单/白名单)。 - 接着介绍了
Shield
高级盾的一些功能:始终在线监控和检测;AWS
账单保护(AWS
承担DDoS
攻击中的服务器扩展费用);先进的L3/4
和L7
DDoS
保护;全天候访问DDos
响应小组;攻击通知和报告。
游戏增长篇
1月12号:构建无服务器的游戏数据分析管线
- 首先介绍了游戏中关于数据分析的需求,包括开发更有吸引力的游戏(比如在玩家死亡时设置一个事件监听,可以通过分析优化这个关卡,提高玩家的游戏体验)、更具经济效益、作弊和恶意行为检测、性能监测和错误报告。
- 接着介绍了数据分析在游戏中面临的挑战:数据量大,数据的采集需要结合业务,游戏开发公司缺少专门的数据分析团队。
- 接着介绍
Game
数据分析管线解决方案:通过事件驱动的无服务器api
请求方式,获取实时的Stream
数据,AWS会帮我们对数据进行实时分析,并将预处理结果写在WAS E3
数据湖中。如果想获得更高级的数据处理结果,支持运维团队,数据工程师和数据分析师使用Athena
交互式编写高级的sql
语句,去处理已经经过预处理后的E3
数据或者Glue原始数据,然后使用QuickSight
仪表盘来可视化结果。 - 接着着重介绍了
Game
数据分析管线解决方案中数据摄入,Clue
数据日志,Glue ETL
任务以及交互式查询分析几个部分。关于一整套Game
数据分析管线解决方案的部署手册(包括部署脚本)参考官网https://aws.amazon.com/cn/solutions/implementations/game-analytics-pipeline/,
做了Demo
演示:包括数据源建立,使用Athena
进行数据分析,使用QuickSight
进行数据可视化(视频回放链接如下 https://live.csdn.net/room/csdnstudent/pSKSGBEZ)。
2月2号:助力游戏出海IOS精准获量,抢占玩家新阵地
- 量江湖是国内专门聚焦于
Apple Ad Search
官方提供的广告营销服务,其团队持有Apple
官方认证资质。量江湖平台已为BAT项目,小红书、出海游戏等提供市场投放与预测,智能竞价等优质服务(该平台需要自动抓取成百上千项目的评论、下载量、简介等信息)。 - 接着介绍了量江湖中基于亚马逊云科技的数据湖方案,并列举了架构代码化的优势,接着介绍了使用
Amazon
全托管Serverless
的优势(该公司的运维人员只有2人)。
2月2号:为游戏插上人工智能的翅膀
- 首先简单介绍了行者AI公司,接着介绍了游戏的全生命周期(游戏机器人,游戏数值,游戏数据,游戏安全)
- 接着介绍了
AI
机器人的应用场景:休闲游戏,SLG游戏,竞技类游戏、棋牌类游戏。 - 行者AI以三消游戏为例子,将通过AI游戏机器人对关卡进行自动化测试,实现关卡难度的优化,节约版本发布的时间成本。接着介绍了行者AI的技术架构,包括对战分析平台,行者
Unity SDK
,RL
算法库,并且使用Amazon SageMaker
进行分布式训练(节约计算资源)。