游戏引擎数据库——Game Engines Database

不久前游戏引擎开发商Unity宣布根据安装量收取费用,这引起了强烈反对,后来不得不接受用户反馈对其收费方式进行了修改。 「Game Engines Database」是游戏引擎搜索网站,如果你已抛弃 Unity 但想知道下一步迁移到哪个游戏引擎比较好的开发人员,可以试试。

Game Engines Database

https://enginesdatabase.com/

包括Murder Engine、Narrat Engine、Defald、Godot、Unreal Engine、GameMaker等各种各样的游戏引擎都被游戏引擎数据库中收录。 目前,您可以找到 137 种不同的游戏引擎。

单击每个引擎的名称,官方链接和源代码链接(如果可用),简单的引擎说明,文件大小,许可证,版本和发布日期,开发平台,对应平台,编程语言,类型都一目了然。

在“Engine name”中输入游戏引擎的名字或者“Software license(软件许可证)”等类型进行检索。例如是许可证的话,可以用“Any(任何)”“Open Source(开源)”“Source Available(可用源)”“Proprietary(专有)”来缩小范围。

定价模式范围包括“完全免费(Completely Free)”、“部分免费(Partially Free)”、“订阅(Subscription)”、“付费(Paid)”

文件大小为范围包括“Small(~200MB)”“Medium(200MB~2GB)”“Large(2GB~)”

开发平台范围包括“Windows”,“Mac”,“Linux”,“Android”,“Web”

支持的平台范围包括Windows,Mac,Linux,iOS,Android,Web,Xbox,PlayStation,Nintendo Switch,Gameboy和NES。

编程语言范围包括 “C++”, “C”, “C#”, “Python”, “Go”, “Lua”, “Rust”, “Pascal”, “Wren”, “F#”, “Kotlin”, “Java”, “Javascript”, “Typescript”, “Dart”, “Ruby”, “Zig”, “Haxe”, “BASIC”, “Ink”, “Fennel”,“Squirrel”,“Janet”,“Moonscript”,“CoffeeScript”

游戏引擎类型范围包括2D、3D、Agnostic(未知)、RPG、Adventure(冒险)、Interactive Fiction(互动小说)、Visual Novel(视觉小说)、Action(动作)、Point&Click(点击)、Puzzle(益智)。

功能范围包括“Own Script Language(自己的脚本语言)”、“Visual Programming(可视编程)”、“Education(教育)”、“AR/VR”、“ECS”、“Editor(编辑器)”、“Own Metaverse(自己的元宇宙)”、“Fantasy Console(幻想控制台)”。

也可以提议收录此处未列出的游戏引擎。

为什么游戏行业喜欢用 PolarDB

游戏行业痛点

在我看来, 不同行业对数据库使用有巨大的差别. 比如游戏行业没有复杂的事务交易场景, 他有一个非常大的blob 字段用于存储角色的装备信息, 那么大Blob 字段的更新就会成为数据库的瓶颈, 比如在线教育行业需要有抢课的需求, 因此会有热点行更新的场景, 对热点行如何处理会成为数据库的瓶颈, 比如SaaS 行业, 每一个客户有一个Database, 因此会有非常多的Table, 那么数据库就需要对多表有很好的支持能力.

游戏行业和其他行业对数据库的使用要求是不一样的.

所以在支撑了大量游戏业务之后, 我理解游戏行业在使用自建MySQL 的时候有3个比较大的痛点

  1. 对备份恢复的需求
  2. 对写入性能的要求
  3. 对跨region 容灾的需求

接下来会分别讲述这三个痛点PolarDB 是如何解决的.

备份恢复

笔者和大量游戏开发者沟通中, 游戏行业对备份恢复的需求是极其强烈的. 比如在电商行业, 是不可能存在将整个数据库实例进行回滚到一天之前的数据, 这样所有的用户的购买交易信息都丢失了.

但是, 在游戏行业中, 这种场景确实存在的, 比如在发版的时候, 游戏行业是有可能发版失败, 这个在其他行业出现概率非常低, 如果发版失败, 那么整个实例就需要回滚到版本之前. 因此每次发版的时候都需要对数据库实例进行备份. 因此当我们玩游戏的时候, 看到大版本需要停服更新, 那么就有可能是因为后台需要备份数据等等一系列操作了.

还有一种场景, 当发生因为外挂, 漏洞, 参数配置错误等等场景下, 这种紧急情况游戏就需要回滚到出问题前的版本, 这样就需要对整个实例进行回滚.

官方MySQL 由于是单机架构, 那么常见的备份方法是通过Xtrabackup 工具, 将数据备份到本地以后, 如果本地空间不够, 就需要上传到OSS 等远端存储中. 通常通过Xtrabackup 备份工具都需要1h 左右, 如果需要将数据上传到远端那么时间就更长了.

PolarDB 是天然的计存分离的架构, 那么备份的时候通过底下分布式存储的快照能力, 备份可以不超过30s, 将备份时间大大缩短了.

核心思路是采用Redirect-on-Write 机制, 每次创建快照并没有真正Copy数据, 只有建立快照索引, 当数据块后期有修改(Write)时才把历史版本保留给Snapshot, 然后生成新的数据块, 被原数据引用(Redirect).

另外一种场景是, 在游戏行业中, 有可能某一个玩家的装备被盗号了, 那么玩家就会找游戏的运营人员投诉, 运营人员会找到游戏运维人员, 帮忙查询玩家的历史数据.

笔者之前就遇到某著名游戏多个玩家被盗号, 然后运维人员经常需要通过PolarDB 按时间的还原的能力恢复出某多个不同时间点的实例, 用来查询这个玩家的具体装备信息, 同时由于玩家对盗号的时间也不准确, 经常有时候需要还原出多个实例才可以.

针对这样的场景, PolarDB 推出了Flashback Query, 就可以在当前实例查询出任意时间点的历史数据. 具体原理见文章 Flashback Query

整体而言, PolarDB 建立了一套非常完善的备份恢复能力, 从库=>表=>行三个维度满足的游戏行业对备份恢复的需求.

写入性能

游戏行业使用数据库的方式也与其他行业有较大区别, 是一种非常弱Schema 的使用方式, 其他行业通常对业务经常抽象, 建立表结构, 每个字段尽可能小, 不建议有大字段, 有大字段尽可能进行拆封等等.但是在游戏行业中, 由于需要满足游戏快速迭代发展的需求, 玩家的装备信息结构非常复杂, 因此常见的做法是将玩家装备等级信息保存在一个大的blob字段中, 这个blob字段通过proto_buf 或者 json 进行编解码, 每次在获得装备或者升级以后, 就进行整个字段更新, 在游戏开服初期玩家数据长度较短, 而随着游戏版本更新版本, 游戏剧情, 运营活动的增多, 相对于游戏开服初期的数KB, blob字段的长度可能会膨胀到数百KB, 甚至达到MB级别, 因此可能只是获得一个装备, 就需要向数据库写入数百KB 大小的数据, 这样的写放大其实非常不合理.目前也有像MongoDB 这样的文档数据库, 让用户写入的时候仅仅更新某个字段, 从而减少写放大. 但是这样影响了用户的使用习惯, 需要用户在业务逻辑上进行修改, 这是快速发展的游戏行业所不能接受的, 所以笔者看到尽管有客户因为写入问题转向了MongoDB, 但是其实不多.PolarDB 针对这样的情况尽可能满足用户的使用习惯, 在数据库内核层面优化数据库的写入能力. 通过 partition redo log, redo log cache, undo log readahead, early lock release, no blob latch 等等能力将写入能力充分优化. 具体原理可以参考我们内核月报 和之前的文章PolarDB-cloudjump针对游戏场景, 我们修改了 sysbench 工具, 模拟游戏行业中大Blob 更新的workload, 放在 game-sysbench 工具中, 后续我们还会将更多行业比如Saas, 电商等等行业的workload 放在这个工具中.

在game_blob_update workload 中, 如果玩家的平均装备信息是 300kb, 我们对比了PolarDB VS aurora VS 自建MySQL 的数据

PolarDB 8.0 相对有最高的QPS 1877.44, 峰值QPS最高可以到2000, CPU bound场景PolarDB的性能大概是Aurora的5.7倍, 是自建 MySQL 本地盘的3倍. IO bound场景PolarDB的性能是Aurora的15倍.

CPU bound场景:

IO bound场景:

跨region 容灾

目前游戏行业纷纷出海, 包含了游戏服和平台服. 用户在自建MySQL/RDS 的场景中, 用户可能需要在另外一个region 建立一个新的实例, 然后通过同步工具或者DTS 进行跨region 备份. 用户需要处理region 错误场景如何进行切换等等.

笔者认为对数据库而言, 稳定性 > 易用性 > 性能.在这个场景中, 用户如果使用云厂商的话, 使用的是云厂商提供的原子能力, 自己通过组装这些原子能力实现容灾的需求, 而PolarDB 针对这样场景提出来PolarDB GlobalDataba 的解决方案, 将跨region 的容灾放在解决方案中, 提供了一个更加易容的解决方案, 从而用户可以关注自身的业务逻辑, 而不需要处理这些容灾的场景.在具体跨region 的同步场景方案中, PolarDB 是通过多通道物理复制能力, 从而保证跨region 的容灾在1s 以内.

原文链接:http://click.aliyun.com/m/1000349865/

本文为阿里云原创内容,未经允许不得转载。

华为云数据库斯享会广州站圆满落幕,共探游戏行业数据库发展之路

10月22日,以“扎根技术,向深向实”为主题的2024华为云数据库斯享会广州站·游戏专场圆满落幕。本次活动特邀游戏行业15家知名客户参与,聚焦云原生数据库在游戏行业的创新应用与成功实践,共同探讨游戏行业数据库发展之路。

华为云广东解决方案部部长杨延朋

华为云广东解决方案部部长杨延朋在致辞中表示,放眼全球,游戏行业发展空间十分广阔,游戏市场收入也在逐年增长。高性能、可扩展、安全的云数据库为游戏的在线稳定运行提供了有力支撑,作为云原生的典范,华为云立足云原生理念,提出云原生数据库Serverless、Regionless、Modeless三大发展方向,打造出极具竞争力的云原生数据库TaurusDB和GeminiDB,致力于为游戏顺利上线和极致玩家体验提供可靠保障。未来,华为云数据库将与客户共同探索更多技术创新,携手推动游戏行业的繁荣发展。

华为云数据库软件总工程师彭立勋

华为云数据库软件总工程师彭立勋分享了《TaurusDB在游戏行业的技术解析与应用》。华为云TaurusDB作为全球领先的云原生数据库,其存算分离与资源解耦、日志即数据库的架构设计,高性能与可扩展性、完全兼容MySQL生态以及智能运维等设计理念,突破了传统MySQL在计算、存储、网络、扩展等方面的瓶颈,实现在同样的业务量场景下,性能、成本有质的改善。

TaurusDB具有跨AZ强一致分布式存储、多场景备份策略与并行恢复、内存热点页面按需回放、只传输日志&大字段压缩、热点行更新优化、ALT应用无损透明等关键技术能力,凭借自身卓越性能,帮助客户解决了游戏业务中“AZ级故障数据易丢失、游戏回档耗时长、主从同步时延高、流量洪峰吞吐瓶颈、热点元素争抢、运维变更业务断连,玩家掉线体验差”等核心痛点问题,为玩家打造了一个更加流畅、高效且愉悦的游戏世界,极大提升游戏客户的使用体验。

华为云数据库专家

华为云数据库专家带来了《华为云数据库游戏解决方案——时间漫游》的精彩分享。游戏行业全区服和分区分服的运营模式,对数据库高性能、弹性伸缩有着强诉求,因此,需要数据库提供极速回档、高性能、高弹性、高可用性和快速合服等核心能力。华为云完全兼容MongoDB协议的在线文档数据库服务DDS和自主创新的云原生多模数据库GeminiDB凭借独特的技术优势,为游戏行业提供了极具竞争力的解决方案。

华为云文档数据库服务DDS,其任意时间点回档功能,确保了数据的高可靠。DDS 不仅支持库表级回档,轻松实现全服游戏数据的“时间倒流”,还支持行级回档能力,能够针对指定玩家进行“精准回溯”。此外,还提供了快照读功能,为用户提供数据一致性视图,让“时间静止”,是游戏行业“时间漫游”问题的最佳解决方案。

华为云GeminiDB采用创新的存算分离架构,提供键值(兼容Redis)引擎接口,拥有1ms的超低时延特性和4:1高压缩比优势,实现了50%的成本降低。基于GeminiDB专为游戏行业“多维业务”场景量身打造的高效解决方案,其中涵盖冷热排行榜归一、防沉迷、推荐/广告平台、开合服以及故障预警等场景。

目前,文档数据库服务DDS和云原生多模数据库GeminiDB已助力途游、迷你创想等多款游戏完成业务升级,为玩家带来了极致的游戏体验。

趣丸科技数据库/中间件负责人苏程辉

趣丸科技数据库/中间件负责人苏程辉带来了《趣丸基于GeminiDB的实践》经验分享。趣丸是一家集中兴趣社交、人工智能、电子竞技等业务于一体的创新型科技企业。TT语音是其核心业务之一,为玩家提供组队开黑、队友匹配等多种娱乐互动服务。以“游戏开黑”为例,其推荐系统需实时从全球玩家中为房间匹配推荐列表,为此,房间需对玩家进行大规模读取访问。

趣丸科技之前采用的是自建数据库,虽然能够兼容Redis大部分接口,具备大容量存储和持久化能力。但常规情况下,性能仅能达到开源Redis的50%-80%,特定场景下可能会更低。

华为云GeminiDB Redis接口,完全兼容Redis,不仅提供了易用的迁移工具和操作指南,还有专家团队贴身支持,大幅降低了迁移成本;同时,GeminiDB Redis接口在线QPS高达1000万,远超自建数据库500万的承载量,性能提升两倍以上;此外,GeminiDB Redis接口还支持分钟级节点扩展,将工作量从天级缩短至分钟级,极大提升了效率。

自趣丸科技将自建数据库迁移到GeminiDB Redis接口后,相关数据库组件的运维效率得到显著提升,不仅解决了自建数据库的性能瓶颈问题及弹性扩展限制问题,还极大提升了整体数据库的性能及可靠性,在优化算力及存储资源的同时,也大幅降低了故障发生风险,缩小了故障影响面。

在开放交流环节,基于客户业务场景,全方位地探讨了云数据库在游戏行业的发展之路。首先聚焦于数据库选型问题,针对MySQL与NoSQL的选择,企业需根据自身对数据库的熟悉程度、业务场景需求以及开发效率等因素进行综合考虑。另外,运维也是个核心考量点,目前云数据库仍面临诸多挑战,如弹性扩展能力、维护停机时间、操作便捷性、可靠性以及问题定位能力等。这些都是企业在选择云数据库时需要仔细权衡的关键因素。

作为新一代数据库解决方案的云数据库,该如何更好地服务于游戏客户,特别是在充值、广告推荐、用户画像构建和身份验证等关键业务领域,已成为游戏行业关注的焦点。同时,随着游戏应用对数据库的要求日益提高,客户对云数据库的性能、功能、开发效率以及测试环境等方面有了更高的诉求。

为持续、高效地支撑客户游戏业务的发展,华为云数据库始终坚持以技术创新和客户需求为核心驱动力,不断推进产品快速发展,助力千行百业数智化转型。未来,华为云将携手更多的客户和伙伴,联合打造更加专业的行业解决方案,为企业数智化进程赋能助力。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。