​让游戏云原生化别再「左右为难」

这篇具有很好参考价值的文章主要介绍了​让游戏云原生化别再「左右为难」。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:云原生游戏社区

当下,游戏行业正在经历云原生架构转型期,不少游戏厂商纷纷投入游戏服容器化改造。在此现象的背后,是云原生技术带来的先进生产力推动着行业向前发展:容器化提升了游戏交付的效率;声明一致性带来游戏开服效率、更新效率、以及可用性的提升;弹性伸缩使得资源可自动化地应对游戏高峰期与波谷期,在保证游戏服务质量的同时提高资源利用率。

2024 年 1 月 18 日,OpenKruiseGame (OKG) 社区与 KubeSphere 联合举办了议题为「用 OKG Dashboard 解锁云原生游戏运维之道」的技术直播。本文将与大家一起回顾分享内容。

OpenKruiseGame:游戏云原生化的理想路径

尽管云原生带来了众多优势,但作为容器编排管理事实标准的 Kubernetes,其原生工作负载并不能很好地支持游戏场景,因此 OpenKruiseGame 在此背景下诞生。

1)OpenKruiseGame 是 CNCF 顶级开源云原生负载 OpenKruise 在游戏领域下的最佳实践抽象,项目由多家一线游戏公司共同贡献维护;

2)内置多云/混合云场景的适配,推出了 Cloud Provider 的模型,便于开发者在多种不同云环境下实现游戏的一致性交付;

3)可以通过无侵入式的声明方式与云上能力,例如:透明无损网络、极致秒级弹性、低成本资源供给、全生命周期可观测性等能力无感打通;

4)将游戏场景下的版本热更新、网络 IP 端口固定、区服管理、自动伸缩等通用能力进行抽象,并通过语义化的配置进行透出,降低学习和二次开发的成本;

5)覆盖 PVP/PVE/H5类/MMORPG 等多种常见的游戏类型的差异化容器需求,白屏化支持复杂游戏架构的游戏服编排能力。

云原生游戏,游戏,云原生,OpenKruiseGame

下面来介绍不同类型的游戏如何通过 OpenKruiseGame 完成云原生改造。

PvP 游戏最佳实践

会话类(session based)游戏,是指在有限的时间内,将玩家汇聚到特定游戏场景下的游戏类型。在通常意义下,会话等同对局,一局结束后,玩家间的游戏关系也在此结束,该会话也同时结束。因此,在业界也会将会话类游戏通俗的理解为“开房间游戏”,一个房间承载了对应的游戏会话。这类游戏往往存在着以下特点:

1)游戏时间非连续,存在明显的起停时间节点。

2)会话中至少存在 2 个及以上的玩家,相互战斗、交互。

3)常见于 MOBA、FPS 类游戏,对时延要求较高。

4)业务波峰与波谷时,对局数量差距明显。因此,一个理想的 PvP 游戏的云原生架构应具有以下能力:

  • 提供网络直连功能,为每个房间提供独立的公网访问地址,玩家客户端可直接访问。
  • 提供游戏匹配功能,为玩家找到合适的队友与对手组成会话对局,并为其分配合适的游戏房间。
  • 提供状态管理功能,自动化管理游戏房间的业务状态与生命周期。
  • 提供弹性伸缩功能,根据业务波峰与波谷自动申请和释放基础设施资源,控制成本。
  • 可高效地进行游戏交付及运维管理,自动化水平高。

有关 PvP 游戏最佳实践阅读 OpenKruiseGame 官方文档:

https://openkruise.io/zh/kruisegame/best-practices/session-based-game

PvE 游戏最佳实践

与 PvP 会话类游戏不同,PvE 游戏的特点如下:

  • 单个区服运行时间较长,应尽量避免停服操作,利于玩家游戏体验。
  • 开服时(或)存在配置差异。
  • 单区服容器中(或)存在多进程,区服服务质量需由用户定义。
  • 随着时间推移,各区服状态存在差异,需定向管理,如更改资源规格、镜像版本、定向合服等。

该类游戏在落地 Kubernetes 通常遇到左右为难的困境:

若使用 Kubernetes 原生 workload,则无法进行游戏服精细化管理,具体地:

    • 若使用 Deployment 管理:
    • 生成的 pod 没有类似序号的状态标识,导致:1)无法基于序号进行有状态的服务发现了;2)无法区别游戏服之间状态差异性;3)异常重启时状态丢失,配置/存储等无法自动重定向。
    • 若使用 StatefulSet 管理:
    • 生成的 pod 虽然有序号作为状态标识,但是:1)只能从序号大到小进行更新或删除,无法定向管理游戏服;2)无法感知游戏服之间的状态差异特性。

若不使用 Kubernetes 原生 workload,则无法利用上 K8s 的编排能力:

    • 若使用脚本程序批量开服:
    • 属于面向过程的方式,参数无法落盘,出错率高。
    • 若使用 gitops 管理:
    • 区服数量较多时需要维护大量有着相同字段的 yaml 文件,有时甚至超过文件长度限制;批量发布时也十分复杂。
    • 若通过自建 PaaS 平台管理:
    • 需要引入大量开发工作,且与业务属性耦合较重,导致后续迭代复杂

有关 PvE 游戏最佳实践阅读 OpenKruiseGame 官方文档:

https://openkruise.io/zh/kruisegame/best-practices/pve-game

云原生游戏交付与运维管理最佳实践

对于游戏应用来说,一个云原生的交付流程应该如此:

游戏开发者提交业务代码至代码仓库,自动触发 CI 流程打包容器镜像,通过 ArgoCD 自动化部署至测试环境中。游戏开发者可以快速测试业务逻辑是否符合预期,无需运维同事介入,保证与生产环境一致性的同时也提高了研发效率。
而在正式/灰度的环境下,运维工程师维护游戏应用部署仓库,提交编排的游戏服 Yaml,即可完成游戏服开服、更新等动作。部署后,可通过 KubeSphere OKG Dashboard 来可视化观察集群中所有游戏服的状态,并针对性地进行运维管理。

云原生游戏,游戏,云原生,OpenKruiseGame

游戏应用交付与运维管理最佳实践

KubeSphere OKG Dashboard 是 OpenKruiseGame 基于 KubeSphere 4.0 LuBan 架构提供了游戏服白屏化管理控制台,支持用户基于 KubeSphere 可视化地管理 OpenKruiseGame 涉及的对象,如 GameServerSet 与 GameServer。

当前通过 OKG Dashboard 可以查看当前集群中游戏服整体统计数据、所有游戏服部署集与游戏服的运行情况。此外,还可以定向对游戏服进行更改运维状态等操作。

云原生游戏,游戏,云原生,OpenKruiseGame

查看当前集群中游戏服整体统计数据

云原生游戏,游戏,云原生,OpenKruiseGame

查看所有游戏服部署集的运行情况

云原生游戏,游戏,云原生,OpenKruiseGame

查看所有游戏服的运行情况

参考资料:

[1] OpenKruiseGame 的官方文档

https://openkruise.io/zh/kruisegame/introduction

[2] OpenKruiseGame GitHub 仓库

https://github.com/openkruise/kruise-game

[3] OKG Dashboard

https://kubesphere.com.cn/marketplace/extensions/kruise-game-dashboard/

对于云原生游戏感兴趣的同学可以加入云原生游戏交流群。(钉钉群号:44862615

点击此处,访问 OpenKruiseGame 仓库。文章来源地址https://www.toymoban.com/news/detail-825905.html

到了这里,关于​让游戏云原生化别再「左右为难」的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [JavaScript游戏开发] 绘制Q版地图、键盘上下左右地图场景切换

    第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 本章内容在第一章的基础上进行了升级,因此

    2024年02月12日
    浏览(42)
  • JavaScript游戏开发:绘制Q版地图、键盘上下左右地图场景切换

    [JavaScript游戏开发] 绘制Q版地图、键盘上下左右地图场景切换,前端小游戏,javascript,html小游戏,Q版地图

    2024年02月14日
    浏览(57)
  • 【unity】制作一个角色的初始状态(左右跳二段跳)【2D横板动作游戏】

            hi~ 大家好!欢迎大家来到我的全新unity学习记录系列。现在我想在2d横板游戏中,实现一个角色的初始状态-闲置状态、移动状态、空中状态。并且是利用 状态机 进行实现的。         本系列是跟着视频教程走的,所写也是作者个人的学习记录笔记。如有错误请联系

    2024年02月04日
    浏览(49)
  • 太为难我了,阿里面试了7轮...

    今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这次阿里面试真的太难为我了,可以说是和面试官大战了7个回

    2024年02月01日
    浏览(26)
  • 【动画进阶】神奇的背景,生化危机4日食 Loading 动画还原

    最近,在 Steam 玩一款老游戏(生化危机 4 重置版),其中,每当游戏转场的过程中,都有这么一个有趣的 Loading 动画: 整个效果有点类似于 日食效果 ,中间一圈黑色,向外散发着太阳般的光芒。 本文,我们将尝试使用 CSS,还原这个效果。 整个效果做出来,类似于如下两个

    2024年02月08日
    浏览(45)
  • 阿里面试太为难我了,阿里面试了7轮(拿下P7岗offer)

    今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这次阿里面试真的太难为我了,可以说是和面试官大战了7个回

    2024年02月08日
    浏览(40)
  • 原生JS手写扫雷小游戏

    实现一个完整的扫雷游戏需要一些复杂的逻辑和界面交互。我将为你提供一个简化版的扫雷游戏示例,帮助你入门。请注意,这只是一个基本示例,你可以根据自己的需求进行扩展和改进。 创建游戏板(Grid): 创建一个二维数组来表示游戏板格子,每个格子包含信息如是否

    2024年02月13日
    浏览(35)
  • OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地

    作者:云原生游戏社区 近日,云原生游戏开源社区旗下 OpenKruiseGame(以下简称:OKG)基于 KubeSphere 4.0 LuBan 架构开发的游戏服运维控制台 OKG Dashboard 正式发布!现已上架 KubeSphere Marketplace 云原生应用扩展市场,支持免费使用。 OpenKruiseGame(OKG) 是 CloudNativeGame 社区联合阿里云

    2024年01月24日
    浏览(55)
  • Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

    Unity Ads 是由 Unity Technologies 开发的广告平台,可以用于在移动应用程序中显示广告。它提供了多种广告类型,包括插屏广告、横幅广告、视频广告等。 在本文中,我们将详细介绍如何接入 Unity Ads 广告 SDK。 在使用 Unity Ads 广告 SDK 之前,需要先登录Unity Ads后台。地址: https:/

    2024年02月11日
    浏览(40)
  • Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王)

    近日,Bert-vits2发布了最新的版本2.3-final,意为最终版,修复了一些已知的bug,添加基于 WavLM 的 Discriminator(来源于 StyleTTS2),令人意外的是,因情感控制效果不佳,去除了 CLAP情感模型,换成了相对简单的 BERT 融合语义方式。 事实上,经过2.2版本的测试,CLAP情感模型的效果

    2024年02月04日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包