缩短 WebGL 加载时间,加快产品上市速度

Marxent 如何与 Unity 的专业服务团队合作以优化应用程序性能。

Marxent:Unity 专业服务案例分析

您如何整合两个复杂软件程序和多种浏览器技术以协同工作,从而实现最佳用户体验?Marxent 增强了其世界级开发人员团队,以优化用于网络的 360° 3D 室内设计工具,使得客户和销售人员能够创建和修改丰富的可视化内容。他们通过利用 Unity 专业服务将更优秀的产品推向市场。

Beck 和 Barry Besecker 于 2011 年创办了 Marxent,通过利用新兴的 3D 技术帮助零售商(特别是家具和家居装饰零售商)增加销售额并减少退货。最初,他俩构建了一次性 AR 和 VR 应用,但随着性能需求的增加和集成内容管理工作越来越必要,他们很快从 OpenGL 切换到 Unity 实时引擎。这使他们能够将 Marxent® 3D 云平台推向行业的最前沿。现在,他们已成为全渠道 3D 设计和可视化领域的全球领导者。

项目

交互式的快速可视化功能提升室内设计销售额并减少退货

目标是

优化应用在各种浏览器环境中的加载时间

平台

WebGL、iOS、Android

团队成员

80

地点

Miamisburg, OH – Austin Landing

Unity 的实时引擎是一个不可或缺的组成部分

Marxent 的 3D Room Designer 是一款基于浏览器的室内设计工具,客户和销售人员可用它在丰富的 3D 环境中混合搭配家具、颜色、墙面处理和尺寸。它简单且响应式的界面使买家能够直观地配置设计项目并为其定价。Unity 实时引擎是一个不可或缺的重要组件。

当 Marxent 演示 3D Room Designer 的最新 WebGL 实现方案时,一位新客户提到加载时间长这一问题。虽然 Marxent 工程师最近进行了重大的全面优化,但导致这个特定问题的原因并不明显。尽管如此,他们还是致力于解决这个问题,这将有助于客户为最终用户提供更佳的体验,并最终提高销售额。

他们不太了解 Unity 实时引擎的内部细节以及渲染程序如何使用某些特殊代码格式(如 WebAssembly)进行渲染。于是,Marxent 与 Unity 专业服务部门联系,帮助调查和解决所发生的问题。通过调查 Unity 代码、Marxent 代码以及 .dll 和框架的构造方式,了解影响启动和加载时间的因素,尤其是在 WebGL 平台上。

结果:

  • 通过更快速、更简化的 3D 程序改善了客户体验
  • 增强了 Unity 平台的内部专业知识水平
  • 两家世界级软件公司间达成更强大、更具协作性的合作伙伴关系

目标:减少加载时间

3D Room Designer 的前端是内置的本机 HTML 和 JavaScript,通过外部 JavaScript 调用来与 Unity WebGL Player 通信。它由所有 Marxent® 3D Cloud 应用程序共享的一组托管库(由 Marxent 编写)提供支持。

在 Marxent 开发人员解释项目体系结构、系统、部署过程、设置和库后,Marxent 和 Unity 团队致力于减少 WebGL 应用的播放器数据和代码库的大小,并优化应用流程。更确切地说,这包括:

  • 实施 WebAssembly
  • 从播放器版本中删除不需要的资源,同时优化较大型必需资产的大小
  • 删除不需要的 Unity 软件包(模块)
  • 通过改进剥离过程和消除部分托管代码库来优化托管代码大小
  • 尽量减小着色器编译时间和第一场景前期加载时间
  • 消除其他 CPU 瓶颈问题

在该应用性能优化 (APO) 项目中,主要工作是使应用与 WebAssembly 保持一致。WebAssembly 是万维网联盟 (W3C) 开发的代码的快速执行文本格式,用于为 JavaScript 提供补充。Marxent 的产品开发负责人 Vince Kilian 指出:“WebAssembly 集成是我们在 Unity 2018.3 版本中推出的最重要功能之一。”

个体可以实现的差异化优势

Unity 的一位主要支持工程师在客户团队现场工作了一周的时间。Marxent 首席技术官兼联合创始人 Barry Besecker 说:“他的专业技术知识的深度和广度都十分出色,但可能更重要的是,他能够与我们的团队很好地合作。得益于这样优秀的人员,整个合作过程非常完美。”除了作为熟练的故障排除人员和经验丰富的企业级 Unity 平台运营人员,他还充当通信中心角色,与 Unity 的其他开发人员和工程师联系,而后者可以为解决方案做出贡献。特别是,他经常在工作会议期间直接与 Unity 的 WebGL 专家沟通,以帮助集思广益和解决棘手问题。

通常,他负责提供有关如何使用 Unity 的“黑匣”的实用指导,同时保护 Unity 的知识产权。Kilian 表示:“有时,你必须了解关于系统构造方式的特定知识,才能在深层次上诊断问题。Unity 使用了一些复杂的嵌套语句,而且有些堆栈跟踪真的很难!对我们来说,拥有这种专业知识和洞察力是非常重要的。“

高效合作

在 APO 之后,Marxent 向其客户告知,前端加载问题已快速得到解决,并且可以迅速实现。Besecker 说道:“如果发生问题,我们会很快收到客户的意见。假如这样,我们提供在测试环境中使用原型的新客户端,因此很容易向他们演示所做的改进。”总的来说,Marxent 估计加载速度将提高 30%,他们觉得改进非常明显。

凭借这一经验,Marxent 目前正在编制 Development Assistance 的工作声明,以提高着色器系统(Unity 2018.3 中引入的着色器管线和渲染系统管线)的可扩展性。

展望未来,Marxent 预计将受益于 Unity 对增强动态环境和用户生成环境和对象的承诺。 “我在开发者大会上看到了 Unity 相关项目,屏幕上显示了数百万个实例,并且调用数量已大幅减少,这是巨大的进步。但这是对大量相关从业者而言。Marxent 并不需要同时渲染数以千计的沙发!”Kilian 如是说。

但是,他们帮助销售数千张沙发。在全球范围内,Marxent 正引领 AR/VR 商业工具的开发,以及通过两种方式开展的“专业服务”合作:产品经过优化,并且 Unity 获得关于增强和构建自己产品和路线图的深入见解。例如,与 Marxent 合作强化了 Memory Profiler 作为一般诊断工具的重要性,以及实时照明在动态零售应用的着色器系统中的重要性。

“我们确实没有考虑过其他供应商,而是直接选择了 Unity。Unity 验证了我们引以为傲的技术和研发,而且我们深信 Unity 将帮助我们正确地优化应用。坦率地说,他们能够提供专家人员来参与项目。”

Barry Besecker, CTO and Co-Founder, Marxent

We use cookies to ensure that we give you the best experience on our website. Click here for more information.