Metaverse
系列相关材料第二篇,Software Engineering Daily 对 Claus Moberg 的访谈。
简介
Roblox 是整个游戏行业的一个微缩版(啥游戏都有),以 9-13 岁孩子为主,在美国和欧洲英语系国家,超过 50% 的 9-13 岁孩子玩 Roblox。
Roblox 在14年前 (2006) 一开始时是用来让孩子在虚拟环境下做物理实验用的,后来做了 Roblox Studio 允许用户自制,一直不温不火到 2015 年开始爆发性增长,目前月活超过1亿。
Roblox Studio 类似 Unity, lua 在脚本沙盒里写逻辑,在编辑器里编地形和模型角色。
与其他编辑器从空白开始新项目不同,Roblox 提供所有的默认值,合适的重力,默认角色行为脚本,良好的物理支持。
Roblox 是完全的用户生成内容,平台做好了兼容移动 (最老支持 iPhone 4S),PC 和主机 (最老支持 XBox 1) 的支持。
完全的自制引擎,流式 3D 体验,服务端真 3D,C++ 实现,客户端只用考虑渲染优化,数据层一致性。Unity / Unreal 需要提前下载资源,而 Roblox 是连上服务器后才按重要性下载 (类似 h5)
物理
物理引擎:客户端主导,有交互发生时服务器逻辑再介入
In Roblox, we have a really complex set of code that basically says, “Well, if there’s no other players near you, obviously we can have physics owned locally on your client.” Then as other players and other dynamic interactions come closer and closer to you, this essentially physics ownership codebase kicks in and tries to determine the optimal placement of stuff either in the cloud or on your local client and which version of the world takes precedence.
技术原则
在一开始就叫自己的机房 RCC Roblox compute cloud 那时候还没有云计算这个说法,然后一直都自建数据中心。然后有了一个抽象层用于隔离内外部的底层区别。
技术指导原则:确保技术投入的合理性,以免陷入技术负债。简单说就是不要上技术杠杆。
“Make sure you doing the engineering investment necessary to avoid any sort of unnecessary technical debt.”
一份重要的内部记录用于确保服务不断地被从 monolith(巨大单一源) 外迁,解耦并使得每个小组对自己的服务负责。
重要原则:roblox 是一个平台,游戏行业里唯一的,做的时候无需考虑何时,甚至是是否需要交付的(这样一个项目)
the Roblox operating principle from an engineering perspective is, “Look, we’re a platform. We’re very unique in the game industry and that nothing we are building today has to ship tomorrow.”
没有交付周期,随便任何人都可以随时出去度假 6 个月。因为游戏都是用户做的。所以对于平台来讲无比重要的事情从来不是时间期限而是做正确的事。所以没有技术负债非常重要。设定目标并不断迭代,持续发布。如果短期目标偏离了终极目标,或造成技术负债,那宁肯不发布。
工程细节
游戏相关的都是 C++,Web 相关的用 .Net,有的功能用 go/python 也 ok。
对于不同的平台直接让 C++ 跑在对应的硬件上就行了 可以干掉中间层 (metal on iOS, Vulcan on android)
之前不少用 WebView 实现的应用信息平台界面全部换成游戏引擎渲染,应用端极小,登录后下载各种信息,全部用一致的方式交互。结果是 2D 交互再复杂也足够流畅。
而且看着所有别的公司都在为不同平台的不同 UI 折腾得要死简直爽飞了。
组织
组织扁平化,600雇员,80% 是研发,分成30个组左右。整个软件大体上由两块组成:一边是为17岁少年创造内容服务的各种工具链;另一边是为全世界的玩家连上来的体验服务。他负责的 5 个团队里,一个是玩家社交,一个团队负责游戏发现(Roblox 的内置类似 Steam Store)一个 Universal Lab Team 用 Lua 把所有的东西整合到一起(吃自己3D引擎的狗粮)未来规模再大都会保持每个小组 10-30 个人,有自己的完整配套,类似一个单独的创业公司。
经济模型
开发者创造内容,培养玩家群体,卖数字资产,比如游戏内特定的 VIP 区域。
玩家用美元买 Robux,然后买游戏内容,各种服务。只有卖出东西的开发者才能用赚到的 Robux 通过 DevEx 换钱,费率高于苹果的 30% 但可以在所有平台上玩
行业趋势
20年前 100% 本地,而现在大量计算发生在其他地方。在未来,良好的游戏体验是由基础设施保证的,客户端无关性会加强。
This is something that’s been part of Roblox’s vision for, again, literally 12 to 14 years at this point. The idea that we need an architecture that basically produces the best possible experience for every player regardless of the actual client-side hardware that’s running that experience.
不可能是完全的流式处理。完全的服务器化,延迟和响应始终是体验的障碍。
VR 沉浸式体验的落地 (how far and how soon do we get to full immersion)
附:
- Source: Roblox Engineering with Claus Moberg
- Transcript: PDF
(全文完)