Agones:一款基于Kubernetes的开源游戏服务器
杨峰 译 分布式实验室
在分布式系统领域,支持在线弹性扩展,实时多人专属游戏服务器意味着特殊的挑战。随着游戏专业人士创造的各种特殊方案,Kubernetes被整合成跨云和物理机,支持复杂工作流的开源分布式标准。今天,我们很高兴发布开源Agones[1](希腊语“contest”或者“gathering”的意思)项目,支持弹性扩展实时多人专属游戏平台。
按照目前跟游戏业界巨头Ubisoft的合作进展,Agones被定位为自驱动(batteries-included),开源,基于Kubernetes的专属弹性游戏平台项目,用户可以在其上按需灵活调整自己的游戏主机配置。
专属游戏服务器的特性
专属游戏服务器是在内存中保留游戏信息的有状态应用。但是和其它有状态应用(如数据库)不同,他们生命周期很短,一般只需保留几分钟或者几个小时。专属游服也需要直连到运行服务进程的IP和端口,而不是通过负载均衡器,因此这类应用对网络延迟很敏感(复杂均衡器只会增加延迟)。另外所有连到同一台服务器玩家会共享内存状态,因此将他们连到同一台设备最简单。下图是一个典型架构,具体过程如下:
玩家们连接到某种匹配服务,匹配服务(一般通过玩家等级)将玩家匹配分组。
一旦玩家匹配成功,匹配服务通知游戏管理器在服务器集群中提供一个专属游戏进程。
游戏管理器在集群中某台机器上创建专属游戏服务。
游戏管理器给专属游戏服务分配IP地址和服务端口,并返回匹配器。
匹配器将返回的IP地址和端口回传给玩家
玩家们直连到专属服务进程开始游戏。
基于Kubernetes构建开源Agones
Agones通过调用标准Kubernetes功能和API提供的内置功能,可以在Kubernetes集群中提供创建、运行、管理和弹性扩展专属服务进程的能力。这种模式也允许匹配器直接通过Kubernetes API和Agones沟通生成专属游戏服务。
在Kubernetes之上构建Agones还有其它好处:可以很容易在任何地方,例如开发者设备,通过像minikutbe、in-studi集群,on-premises设备或者云环境等平台直接运行游戏负载。Kubernetes也可以简化操作。多人游戏除了专属服务器外,还有后勤服务、账户管理、装备、市场等其他进程支撑。用Kubernetes作为单一平台可以动态运行支撑进程,减少开发团队面对的游戏层面复杂逻辑关系。
最后一点,Agones后台并不只是孤立的游戏开发,其后台可以使用Kubernetes贡献者和大量成熟工具带来的生态系统。Ubisoft在Agones项目中资助了贡献者,将他们顶尖的知识带到了AAA级游戏玩家面前。我们的目的就是尽所能提供提供高质量无缝服务,让玩家只需专注于游戏中。Agones帮助我们在数据中心运行专属游戏服务的灵活性,而且给开发团队提供了更多资源可控性。这种合作为整合Google云平台专业性和我们队游戏行业的专业理解提供了可能性。
——Carl Dionne,开发总监,Online Technology Group,Ubisoft开始
创建游戏服务器
Dockerfile
通过变价Kubernetes Pod配置选线提价游戏服务资源:
gameserver.yaml
通过kubectl命令行或者Kubernetes API提交以上定义:
Agones会按照yaml文件中配置启动游戏服务器,分配一个公有端口,将IP和端口号发回玩家端进行直连。通过嵌入游戏服务器内的SDK代码监控游戏服务器生命周期和状态。可以通过kubectl和Kubernetes API向游戏服务器请求获得各种信息,包括状态、IP和端口等。
下一步
如果想尝试Agones 0.1 alpha版本,可以直接在Kubernetes集群上安装,例如:GKE or minikube;我们也有一个很好的安装文档[4]可以参考。
相关链接:
https://github.com/GoogleCloudPlatform/agones
https://github.com/GoogleCloudPlatform/agones/issues/70
https://github.com/GoogleCloudPlatform/agones/milestone/2
https://github.com/GoogleCloudPlatform/agones/blob/master/docs/installing_agones.md
- Agones:一款基于Kubernetes的开源游戏服务器
- 一款基于ExoPlayer的自定义播放器(已开源)
- 优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件
- 推荐一款基于Java的音视频处理开源项目--JAVE
- 网易的基于Node.js的游戏服务器开源框架:Pomelo
- [持续开源]基于nodejs+ligerui的一款mongodb web 端查询工具(MongoStudio)
- HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务
- 基于Golang打造一款开源的WAF网关
- HTTPCWS 是一款基于HTTP协议的开源中文分词系统。(HTTPCWS is an Chinese Word Segmentation System Based on the HTTP proto
- 一款免费开源的游戏服务器引擎—Scut
- 推荐一款基于Java的音视频处理开源项目--JAVE
- 一款免费开源的游戏服务器引擎—Scut
- 一款基于网易云音乐 UI,使用 Gank.Io 及豆瓣 api 开发的符合 Google Material Design 的 Android 开源项目.
- 基于RN开发的一款视频配音APP(开源)
- 推荐一款基于XNA的开源游戏引擎《Engine Nine》
- 一款基于Java的开源Web应用防火墙 - WebCastellum
- 开源一款基于Qt的串口波形显示上位机 & 以“笔”会友
- 网易开源基于Node.js的游戏服务器框架pomelo
- 推荐一款基于XNA的开源游戏引擎《Engine Nine》
- 推荐一款基于Java的音视频处理开源项目--JAVE