Roblox技术调研总结

  1. Roblox技术调研总结
    1. Roblox是个啥
    2. Roblox发展背景
    3. Roblox部署与运作模式
    4. Roblox引擎及核心能力
    5. Roblox的物理引擎
    6. 总结
    7. 协议

Roblox技术调研总结

春节前两天,部门还在找新的技术突破口,“云原生”的概念被炒得十分火热,各大厂纷纷投人研究实时云渲染方案,都希望能乘上云发展的顺风车,Roblox的技术调研就是在这样的背景下分给了我。春节过后,大致的调研工作基本就结束了,PPT汇报了不少,一直没有时间自己总结成文档,今天来整一整它。

Roblox是个啥

懒得介绍了,直接飞机票(需要科学上网,不然会被重定向到下面的飞机票):
https://www.roblox.com/

腾讯在2020年也参投了这家公司,还整了个国服(被骂得老惨了),飞机票:
https://roblox.cn/

Roblox发展背景

在开始调研这玩意之前,我连它的名字都没有听过,但是没想到它在国际上的知名度还挺高(嗐,是我孤陋寡闻了)。

既然是发展背景,那我们就站在时间轴上去看看这家公司的发展吧~

我们先来看看创始人吧。创始人Baszucki在1989年开了家公司,名叫Knowledge Revolution,公司定位很明确,做儿童教育的电子展示产品,在此阶段,他们开发了物理模拟的演示应用,有小滑块、滑轮、斜坡、杠杆等等,像极了初高中物理课上老师在黑板上的各种鬼斧神工作图,重点是他们搞的这玩意能动,能做非实物的物理模拟展示,这在当时就一下圈粉无数了。到了1998年,Baszucki的Knowledge Revolution就被MSC Software高价收购了,MSC Software是主营模拟软件的公司,当然2017年MSC Software又被Hexagon AB给收购了,但这走远了。

话说回来,Baszucki卖了Knowledge Revolution后就开始构思Roblox,还是立足于儿童教育,但这次它不仅仅打算只做模拟了,他的核心理念变成了创作分享,他想打造一个儿童创作分享的平台,这个平台要易于上手,能抓住孩子们感兴趣的点。

经历了6年的沉淀,2005年Roblox完成了A轮融资,2006年对外发布了第一个商用版本,包含Roblox Player和简易的Roblox Studio。Roblox Player是一个面向游戏玩家的游戏容器,Roblox Studio是面向游戏开发者的编辑器。2009年获得了D轮融资成功上路,重构升级了Roblox Studio(我估计是重写了:-)),到2012年时已经打响名声了。

初步的基础设施建设基本完全了,Roblox在2013年开始了突破,开始建立社区平台,发布商城,有开发的套件、模型等等,也有游戏作品、人物装扮等等,同时搞了Robux币及相应的交易机制,逐渐建立一个闭环的生态系统。

之后就是开源升级问题,Roblox放弃了Ogre走向自研的渲染器。Ogre是一个很有参考意义的开源引擎,然鹅光靠社区大众维护的力量,导致很多问题社区解决后提供出方案,并没有合入主干,后来者踩到坑后通常通过扒取社区代码再侵入式修改官方代码来解决问题,这导致了每次追随官方版本升级的时候都非常蛋疼。Arseny Kapoulkine这大哥也遇到了这个问题,于是开始了“高速路上换轮胎”。后来这大哥离职了(当然,不是因为这件事情)…可以看看他写的在Roblox的八年

2016-2019年,Roblox高速成长,中间经历了EF两轮的融资,到19年月活跃量已经达到了1亿了。19年和腾讯展开合作,准备进入中国区市场,中文名定为了“罗布乐思”。2020年继续融钱,G轮融了1.5亿刀,腾讯也参与进来了。

后来,疫情期间似乎腾讯一波骚操作,国区的罗布乐思直接被喷惨了哈哈哈哈。

Roblox部署与运作模式

article_roblox_1

Roblox在游戏玩家的端侧提供了Roblox Player应用程序,支持Windows、Android、iOS跨平台,Roblox Player只是一个框架,包含了Roblox引擎。我们可以把Roblox Player理解为一个容器环境,为游戏提供了基础设施,我们想玩Roblox游戏首先需要到它的云侧商城找感兴趣的游戏,然后购买它的多人在线游戏服务器,再把游戏下载到Player里就可以启动游戏了。游戏的渲染业务在端侧执行,物理计算的部分业务在端侧,大部分在在线服务器上执行。我们在Roblox游戏的世界里将扮演一个角色,我们可以通过Player用Robux币在商城购买喜欢的人物装扮部件来装饰我们的角色。

针对开发者,Roblox提供了另一个应用程序Roblox Studio。Roblox Studio是一个游戏模型及场景的编辑器,Roblox Studio中有完整的渲染引擎和物理引擎,可以本地模拟服务器运行。游戏开发者可以通过Studio制作游戏和人物装扮,然后在商城上发布,赚取Robux币。对于开发态,我们还能制作场景、模型、开发包等等编辑态的东西,然后上传到商城赚取Robux币,或者花费Robux币下载别人做好的这些东西,来快速构建我们游戏。

除了我在图里绘制的这些,Roblox还添加了很多游戏性的小tips,比如提供游戏里排名奖牌机制,解锁成就机制等等,降低在Roblox生态下游戏开发的门槛。

Roblox引擎及核心能力

  • 人物:第三人称视角第一人称角色扮演游戏,每个玩家将在Roblox的世界中扮演一个自己装扮的LEGO角色。
  • 光照模型:LEGO的卡通风格光照模型,不可更改及设置。3A作品一般采用PBR基于物理真实的渲染,但对于儿童玩家,LEGO风格更有优势,大家都玩过LEGO积木,把静止的LEGO实物虚拟化并动起来,扮演其中的一个角色,儿童的接受度能更高一些。
  • 渲染管线:内置固定的渲染管线,不可更改及设置
  • 光照效果:LEGO天光、点光源、面光源、聚光灯、光束、光拖尾
  • 阴影效果:柔性阴影,不可更改及设置
  • 粒子效果:爆炸、火焰、烟雾、星光、自定义粒子发射器
  • 动画效果:内建的人物骨骼动画,奔跑、跳跃、游泳;姿势动画,如扛物件
  • 编辑态动画:动画播放器,插件形式的动画编辑器
  • 物理引擎: 物理材质:刚体 物理约束:铰链、滑动棱柱、滑动圆柱、绳索、万向节、杆、弹簧、接合 动力学模拟 碰撞检测器
  • 材质模型: 模型实体:方体、球体、楔形、圆柱体 实体建模:镂空、组合、分离 实体表面处理:平滑、凹凸、接合 实体材质类型(支持实体调色):塑料、平滑塑料、木头、木板、石板、花纹板、水泥、金属、腐蚀的金属、锡箔、草地、冰、水、沙、布料、砖块、花岗岩、大理石、鹅卵石、卵石、玻璃
  • 地形地图: 地图生成器:提供种子值,给定生成规模及场景复杂程度,生成规模决定地图长宽边幅,复杂程度决定单位面积内地形地貌特性的应用数;地形地貌特性,平原、水域、沼泽、丘陵、沙丘、峡谷、山脉、极地、洞穴、熔岩景观 地图编辑器:抬升、降低、增生、侵蚀、平滑、展平、海平面、绘制笔刷
  • 音效效果:内建音效,动画及碰撞声音
  • 生命逻辑:起始点、存档点(重生点)、终止点
  • 脚本能力:Lua
  • 2D能力:UI、Billboard

Roblox的物理引擎

关于Roblox的物理引擎的文章实在是太少了!Roblox不开源,单纯的作为使用者的角度去分析,很难深入到它的实现中去。

这篇文章讲了一点Roblox物理引擎的细节:
https://www.gamasutra.com/view/feature/173977/scaling_a_physics_engine_to_.php?print=1

另外就是通过开发文档,我们能粗略地窥见一点流程:
https://developer.roblox.com/zh-cn/articles/Network-Ownership

article_roblox_2

Roblox的物理引擎在服务器的云侧和游戏玩家的端侧都有部署。Roblox的服务器是上帝视角,有整个游戏场景的所有信息。服务器能知道所有玩家的位置和所有部件组的位置,服务器根据设定及自我判断机制分割并分配物理计算任务,然后将一组部件指派给服务器或某个客户端进行计算,最后回归计算结果到服务器。
这里面的实现难度不小,另外真实的流程至少比图上还要复杂得多。除了gamasutra文章中展示的临界区划分问题与时延补偿问题,还有很多技术细节要解决,比如出现计算结果不同步数据出现误差等情况如何仲裁、端侧突发情况如掉线或网络阻塞的情况如何重新划分指派计算任务等等。奈何没有源码,没有参考的机会。

总结

Roblox用了至少8年的时间投入在它的生态建设上,才有了丰富的教学视频和各种社区讨论,甚至一度没有任何获利,真实的放长线钓大鱼…乐高积木式的画风和建造风格,迎合了儿童的兴趣点,商城解决了供销问题。但是渲染场景单一,仅仅支持乐高形式的角色扮演类游戏,我们难以在这样的基础上实现3A级的大作,毕竟Roblox的定位也不是3A大作。

  • Roblox的主要建设在平台和生态上。渲染能力只是其中的一个组成部分,甚至达不到通用的游戏引擎的标准。它的渲染器是一个深度定制化的产物。
  • 云侧与端侧协同的物理引擎计算是一个值得深度挖掘的技术要点(可以看作是游戏场景分布式物理计算的实现了)。
  • 拓展思考:大到企业,小到团队,往前走之前一定要先做好定位、看好方向,建立核心理念,找到基础点然后开始发力,基础建设差不多后再逐步突破。当然,这一切的前提是要有足够的……钱。生存发展,先生存,才能发展嘛。

协议

本文以上内容遵循CC BY-ND 4.0协议,署名-禁止演绎。

转载请注明出处:https://tis.ac.cn/blog/kongdeyou/technical_research_of_roblox/
并署名:kongdeyou(https://tis.ac.cn/blog/author/kongdeyou/)

原始链接:https://blog.kdyx.net/blog/kongdeyou/technical_research_of_roblox/

版权声明: "CC BY-NC-ND 4.0" 署名-不可商用-禁止演绎 转载请注明原文链接及作者信息,侵权必究。

×

喜欢或有帮助?赞赏下作者呗!