DOTS 实现在移动设备上运行充满未来感的“特大城市”

Nordeus - Unity开发者案例分析

What inspires wow-factor demos like Megacity at Unity community events? Are they just eye-candy or are there real benefits for Unity developers? Belgrade-based Nordeus has been a featured studio at many Unite developer conferences, demoing work drawn from their hit games. But their cutting-edge clips aren’t about showing off – they’re about demonstrating new Unity capabilities that will dramatically change what you can achieve both creatively and programmatically.

项目

定期演示我们的“默认性能” / DOTS 计划的最新进展

目标是

为所有 Unity 开发者带来多线程代码性能的提升

平台

安卓、iOS、个人电脑

团队成员

特大城市 3 名、战场演示 20 名

地点

塞尔维亚,贝尔格莱德

面向数据的DOTS编码使Megacity迅速登陆移动平台

随着 CPU 核心数不断增加,高性能多线程已成为所有现代计算引擎的基本功能。数据导向型技术堆栈 (Data-Oriented Technology Stack, DOTS) 是 Unity 的多核多线程解决方案,它是实体组件系统 (Entity Component System, ECS)C# 作业系统 (C# Job System) 以及突发编译器 (Burst Compiler) 的总称。

Nordeus 演示了其优势以及轻量级渲染管线 (Lightweight Render Pipeline, LWRP) 和嵌套预制件 (Nested Prefabs) 等其他 Unity 功能,从洛杉矶到柏林,观者无不惊叹。

成果如下:

  • 易于编写的高效多线程代码
  • 针对移动端等低性能平台优化的渲染性能
  • QA 速度更快,集成错误显著减少
在黑客马拉松上连接 DOTS

一支极具创意的国际团队

Founded in 2010 by ex-Microsoft engineers Branko Milutinovic, Milan Jovovic, and Ivan Stojisavljevic, Nordeus first published Top Eleven – Be a Soccer Manager (“Football” outside the US), a freemium team-management game. It was enormously successful on Facebook, becoming profitable in three weeks, and was ported to Android and iOS in 2011. Since then, the company has published Golden Boot on iOS and Android, has Heroic: Magic Duel in soft launch, and numerous other games in development stages.

Nordeus has drawn talent from 22 countries to its headquarters in Belgrade, a locale extraordinarily rich in culture and history. They’re routinely cited as a top workplace in Europe and are known as generous contributors to a number of philanthropic organizations.

Two of their top software engineers are Belgrade locals: Jozef Oros and Srdja Stetic-Kozic, who work in the Nordeus Central Tech team with eight others. They are responsible for fostering the tools and techniques used in all Nordeus games, and as Srdja notes, “All of our games are made in Unity.”

在黑客马拉松上连接 DOTS

“在听说 DOTS 后,我们马上与 Unity 取得了联系,试用一下,看看我们是否可以合作,”Jozef 说道。“我们希望为玩家提供最佳的用户体验,而流畅的游戏过程则是重中之重。当然,我们对可以提高游戏运行速度的任何事情都非常感兴趣。”

合作开始于 Unity 和 Nordeus 首席技术官在贝尔格莱德召开的一场会议。Nordeus 热忱欢迎 Unity 帮助其了解新技术,而 Unity 想要一款真实的应用程序来测试 DOTS 的极限。Srdja 补充道,“我们还希望通过 Joachim Ante(Unity 联合创始人)展示一些又酷又华丽的东西。因此,在奥斯汀 Unite 大会(2017 年)上,我们想‘让我们在《Heroic: Magic Duel》进行一场战斗,将其扩大到 10 万个单位,然后把他们全部炸上天!’我们对此激动不已。”

Jozef 和 Srdja 是 Nordeus 的第一批 DOTS 用户。 他们将约 90% 的时间用于编写游戏系统,特别是渲染系统、单位移动系统和逻辑系统。Jozef 说道,“Unity 的 DOTS 让我们可以做出一些非常酷的大范围爆炸魔法,我们知道这些特效肯定会令观众叹为观止。”

该团队在两个月内为奥斯汀 Unite 大会完成了Nordeus 战场演示,在前四周集中进行程序编写和原型设计。他们在哥本哈根与 Unity 团队共度了一周时光,在一个房间中展开黑客马拉松式的工作。 “与 Joe 和他的团队一起工作是一次非常棒的经历。我们学到了有关 ECS、C# 作业系统、突发编译器以及面向数据编程等方面的大量第一手知识,”Jozef 补充道。

与面向对象编程说再见

改用面向数据编程是一个巨大的改变,开始可能会令人望而生畏。但是,据 Srdja 说,“DOTS 是一种截然不同的思路,一两周后,我们一下茅塞顿开,写出了比以前好得多的代码。而 ECS 让我们可以非常轻松地集合旧代码。”

C# 作业系统是 DOTS 的一个组成部分,它可以编写线程安全的代码、管理资源竞争(线程以意料外的顺序运行,导致意外结果)以及优化上下文切换,达到近乎 100% 的多核使用率。另一个组件是突发编译器,这是一种基于 LLVM 的数学感知编译器技术,可以处理 C# 作业,生成针对目标平台的特定功能优化的高效机器代码。

Joachim Ante 说道,“我们的突发编译器可深入理解数学和几何,可以执行其他编译器无法做到的数学优化。它会自动矢量化 C# 代码,并为特定目标平台生成矢量化指令。因此,代码运行速度将大大加快。”突发编译器还修补了大量原本需要在 QA 中清除的集成错误。

赢得特大城市之战的胜利

The Battle Demo shown at Unite Austin used components from Heroic: Magic Duel. The Nordeus team applied its DOTS expertise primarily on dynamic gameplay elements, with huge numbers of animated units on a limited-size terrain.

This paved the way for its next challenge, as Nordeus took on Megacity, which is a big, open world with 4.5 million objects that need to be rendered, culled, and loaded, 5,000 flying cars needing to be simulated, and 100,000 audio sources that had to be played simultaneously. And all of this needs to work on mobile as well as PC. Jozef said, “For Megacity, Unity’s DOTS was used for everything, like new rendering and animation techniques, UI systems, and even audio. We can use all of this in our existing games, as well as those in development.”

LWRP 助力在移动设备上呈现一整座大都市

Joachim Ante在Unite LA 2018上的主旨演讲包括来自Megacity的非常复杂的现场演示。 该演示包含450万个网格渲染器、5,000辆动态车辆和200,000个独特的构建对象。 这些车辆在基于样条线的行车道上飞行,从不会撞车,并且有100,000个独特的音频源,包括霓虹灯、空调风机和产生独特声音的汽车,可形成丰富、逼真的音响效果。 在智能手机上全都顺畅运行。

“对于Megacity演示,我们想要以极快的帧率在移动设备上展示我们复杂的图形。 我们使用了LWRP和一些自定义着色器,使其尽可能像PC版本”,Jozef. Srdja 补充道,“假设您正在开发一款旨在突破PC极限的游戏,稍后您决定将其移植到移动设备上。在这种情况下,由于移动平台的性能限制,您通常不得不重新设计游戏的大部分内容。 在使用Megacity时不是这样。 DOTS让我们能够使用在PC上运行游戏逻辑和渲染的完全相同的代码,并将其无缝缩减来适应移动平台。”

Unity轻量级渲染管线通过利用光照和着色进行权衡来优化移动设备上的实时性能。 它按对象使用一个实时阴影光源和光照剔除在单个通道中执行单通道前向渲染(所有光照均着色),从而最大程度减少绘制调用。

嵌套预制件、深入了解 DOTS

“在特大城市演示中,我们首次使用全新的 Unity 预制件嵌套系统,该系统受到我们艺术家的一致好评,”Jozef 说道。例如,使用预制件嵌套,一座大型建筑物可以由许多房间预制件构成,而房间预制件又可由多个家具预制件构成,诸如此类。开发者可以将预制件分解为多个实体,以提高效率,还可以重复使用各种大小的内容,同时处理不同部分的内容。

Nordeus 有着宏大的产品路线图,完全采用 Unity 和 DOTS 编程方式。正如 Srdja 所说:“如果你正在考虑是否应采用 Unity DOTS,那就大胆去做吧。就算忘掉很多有关面向对象编程的知识也不要紧!”

Srdja Stetic-Kozic, Senior Software Engineer

“DOTS 是一种截然不同的思路,一两周后,我们一下茅塞顿开,写出了比以前好得多的代码。而 ECS 让我们可以轻松集成旧代码。”

Srdja Stetic-Kozic, Senior Software Engineer
Jozef Oros, Software Engineer

“在听说 DOTS 后,我们马上与 Unity 取得了联系,试用一下,看看我们是否可以合作。我们希望为玩家提供最佳的用户体验,而流畅的游戏体验则是重中之重。当然,我们对可以提高游戏运行速度的任何事情都非常感兴趣。”

Jozef Oros, Software Engineer

我们使用 Cookie 来确保为您提供网站的最佳体验。有关更多信息,请访问我们的 Cookie 政策页面

明白了