MCV is back in Copenhagen and Unity is giving us an exclusive look at what’s coming up at its Unite LA conference in just a couple of weeks.
The last time we met Unity’s engine team, the conversation was all about runtime performance. Unity unveiled its new C# Job System, its Entity Component System (ECS) and its Burst Compiler, all with the ambition of realising a new core principle for the company: ‘performance by default’.
While the realisation of that ideal is ongoing, runtime performance alone isn’t the end-all-and-be-all of trying to make Unity the best game engine around. Instead we’re here today to talk about improving the capabilities of the tool itself with Brett Bibby, VP of engineering, leading the way.
“Game developers are tech companies by necessity not desire,” Bibby states. It’s a powerful argument, and one that’s easy to overlook amid the endless technical complexities of modern games development. But if you could make a game, say as easily as I’m typing this article, then what game developer would pass that up?
For now the reality is somewhat different, but that doesn’t mean Unity isn’t dead set on improving the workflow of developers, revolutionising it even. And Bibby is the man driving that change forwards. Well him and a veritable army of some 600 engineers.
Runtime performance is great and it’s certainly the sexier side of any given engine. Show the masses an incredible world, with an amazing render pipeline, lots of great effects, and all running on accessible hardware, and you’ve got one hell of a demo.
And Unity does those kind of demos, of course. Look at last year’s Book of the Dead for instance. But what Unity is showing us today is designed to wow developers more than consumers, it’s an out-and-out demonstration of what the company’s new editing tools can achieve on a truly mind-boggling scale. But let’s wind back a little first.
“At their core games need some kind of level editor. And if you go back historically, Unity provided a good solution at a time when people often used their art tools along with extensions and exporters, which wasn’t a great experience,” Bibby explains.
“As the complexity of content and experiences has increased, so has the need for more holistic and sophisticated tools, and people need not only to achieve that complexity but it needs to be accessible too. And that means that it’s not just throw the content in and position it around, and then switch to your code tool, but you actually need to do rich things inside that editor.
“But it’s always been a kind of programmers tool. It was a level design tool, but it wasn’t really a level editing tool. It wasn’t like [Valve’s] Hammer editor, or any of the old tools you used to use.”
And that programmer-centric tool is becoming an ever bigger problem he explains.
“[Teams] have gone from all programmers, to split 50/50 programmers and content creators, to now today, it’s like one to even ten, so you’ve got all these content-related people and far fewer programming people. So how do teams collaborate together to build something amazing?” Bibby asks. ”What is the campfire that everyone can gather around, to take them from idea to release, what is that thing that enables people to go from zero to hero? That for me is the starting point of what problem Unity is trying to solve.”
A LEG TO STAND ON
To efficiently build and maintain hugely complex game worlds, content-centric teams of developers need a three-legged stool to sit upon. Yes, it must provide great run-time performance as we’ve discussed, but the worktime environment must be just as performant, to allow developers to work upon these hugely complex worlds, and it must offer the kind of data hierarchies needed to manage such a huge number of interrelated objects. Without all three, the stool falls.
“As Unity exceeds all of your requirements technically, as we eliminate those roadblocks, we then let everyone else in, to be more creative,” Bibby extols. “We’re doing massive amounts on the performance and technology front, so we hope our programming community doesn’t feel like we’re ignoring them at all.
“But what we’re doing now is giving a bear hug to creators, and we consider programmers to be creators as well as content people, that’s really the message we’re about now – welcoming creators, because the world is a better place with more creators in it.”
So the company is doubling-down on “anything related to performance, efficiency, effectiveness, getting to the gameplay and then rapid iteration,” Bibby tells us, adding: “Scale is another theme that Unity is all about in this way, we have to allow people to leverage their content creation skills, we’ve got to allow people to work in teams, we’ve got to allow massive numbers of objects – and that’s what Martin has been driving for Unite LA.”
Martin Vestergaard Kümmel is technical art director at Unity and the man behind a startling demo that we’re the first to see. Kümmel announces: “This is the demo for Unite LA.”
The scene is a massive cityscape, modelled upon the now demolished Walled City in Kowloon, Hong Kong, to which Kümmel has added a distinct cyberpunk twist. Gigantic tower blocks loom above us, each one studded with balconies, satellite dishes and air conditioning units.
Kümmel estimates that there are well over 10m objects in the scene, though it may be much higher. “The count is just napkin math,” he smiles. “This thing here is an individual object,” he says selecting an air conditioning unit, “and that satellite disc has four different LODs [levels of detail], so it’s actually four objects.
“And this is all running in the editor,” he exclaims. And it’s running very smoothly too, we might add. “It’s doing a lot of other stuff as well, and we don’t even have LOD for the cars yet, so they’re brute force rendering right now.”
It’s running on Kümmel’s pretty-typical desktop workstation and drops into play mode without any noticeable stutter.
“Not only is entering play mode instant, but when you close the scene and open it from scratch, it’s practically instant to load, you can move the camera straight away and everything streams in.
“It’s streaming in now out of the new streaming system. The air conditioners, the satellite dishes and these large buildings, and we’re going to have tens of thousands of vehicles flying about. We have a traffic system, and we’re going to set up proper lanes. There will be crazy amounts of traffic. Hopefully a sort of Fifth Element thing. Plus we’ll have volumetric lighting and beautiful lighting.”
Even without those aspects in place, it’s still a deeply-impressive example of the power of Unity’s new editor technology – and a huge leap forward. Kümmel pauses the demo and dives into the menus to explain.
“Typically in Unity it would not really run that well because [objects] were not stored in an efficient format, so right now you have the entire world here, and basically I have a collapsed group for each city section.” He selects one of the many buildings and then one of the air conditioners on its side. “I open that, and unfold that with the classic Unity game object representation. That one AC unit, you want to move that up, and then collapse that into the streaming ready representation of the city scene.
“Now you’ve got this workflow. This is a big city, but it could be an incredibly dense narrative environment, an interior with all the objects that would be in the real world. The point is not that it’s a big city, we’re environment artists and this was just something we could do in a reasonable amount of time.
“The demo was assembled by just two people working part-time on it,” Kümmel reveals. “It’s just me and Janus [Kirkegaard, environment artist at Unity]. With a relatively small amount of effort going in from the art side.”
And that’s why this demo is a great example of the third leg of our run-time, editor, workflow stool.
“The idea is we’re using nested prefabs to tier down all the content,” Kümmel adds.
The Unity faithful has long desired nested prefabs and Unity has long promised them. To boil it down, prefabs let you take an object or asset, with all its properties, and use it repeatedly throughout your game. Make an edit to the prefab and these ripple out to every example in the game, allowing you control across massive hierarchies of objects.
Nested prefabs simply let you place one prefab inside another, but the possibilities that offers for creating complex scenes are hugely significant.
“We just started off with really basic assets, and as assets were finished and dropped in, everything came together,” Kümmel explains. “It wasn’t a very structured workflow, but you can easily setup a dependency hierarchy and a nesting hierarchy. That allows many people to contribute [to the project] without actually having to touch the scene, or obstruct each others workflow. They can just drop in the air conditioner model and it trickles down.”
Kümmel shows us one of various slabs that make up all the tower blocks, a nested prefab containing numerous other prefabs: “That’s what really enables two people to build this kind of thing, because they can do this incredible amount of reuse and have really fast workflows.”
Bibby contributes: “There’s a great analogy here. If you update a pixel on a texture it will obviously appear everywhere, the same if you updated a mesh, but what Martin [Kümmel] is driving at is it’s all about the metadata that you imbue on the stuff, and there’s no way to do that. [Now you’re] able to change that metadata in one place and have that flow through.”
And it’s that which lets you more effectively control huge hierarchies across your entire game.
Kümmel adds to the point: “You want to structure it in a way where you have a lot of inheritance between those objects, properties and settings, things spread through hierarchies and dependencies, in a good way.
“Otherwise when you get so many variables you have a huge maintenance task at hand. When you have that much content, you also have to keep that content alive day-to-day with code changes and whatever – everything gets dirty and needs to be cleaned up. So inheritances are at the core of what we’re doing now with nested prefabs.
“It’s one thing to nest things inside other things, and that’s practical from a very low level point of view, but the bigger picture is maintaining permutation in a game project, making sure you have deep inheritance, so you have global control over as much as possible. And only permutate the settings you actually need to change, while the rest are inherited.”
The team behind the demo is just one of an increasing number of internal production teams within Unity.
Co-founder and CTO Joachim Ante explains the need for such teams: “It’s difficult to get feedback from customers if the basics of the workflow aren’t there yet. So it’s super useful having internal production teams making sure there’s a really solid foundation. This demo is using our nested prefabs, which is in 2018.3. So we started when it was in alpha and that means we gave [the team] a lot of feedback from pushing that system like crazy, and making sure all the production workflows are really good. And then customers pull it in all kinds of directions. We see what they say, and react to it.”
Bibby adds: “Our goal is to be as aligned with our customers as possible,” he starts before commenting on the competition: “Hats off to Epic. They make games and then they make that technology available to others, which is great.” But he adds that if you’re not making something in a similar vein to Epic, “you’ve got to bend it quite a bit to your will.”
For a core PC and console developer that point is more arguable, though with Unity creating everything from the most lightweight browser games, to VR experiences, to real-time linear productions, it’s easy to see where Bibby is coming from here.
“We’ve been really trying to enable everybody to create stuff,” he says. “So we have to have a more central viewpoint and way of thinking in order to support everyone, but we also have to be performant. That’s really the trick: how do you reach all the different use cases in the best way possible but also be one solution?”
That’s a much bigger question of course, but internal production teams are key to the product’s ongoing success. With two very different kinds of teams working within the company.
“One is very explorative, pushing boundaries, just exploring storytelling, new visuals, new ways to be creative with the tool,” Kümmel explains, referring to the Unity Demo Team, creators of Book of the Dead and originally based out of Stockholm. “And then we are more down and dirty, dogfooding the basic features, making sure that they work and are performant, making sure that they scale.
“The Stockholm team is about exploration, while the internal production teams are about being prescriptive – how do you actually make this work and still achieve that result in a real-world production scenario? Maybe not every possible combination, but all the most likely ones.”
Which brings us to the question: which are the the most likely ones and how does a company known for providing a tool with such a breadth of usage decide where and when to concentrate its efforts? We ask whether Unity ever says no when a new platform or opportunity rolls around?
Ante is adamant: “We’ve said no to a lot of things. Of course we have. How can you do anything without saying no?” he states, explaining: “If you say yes to everything, you’re not actually saying yes to anything. You only have a limited number of things you can say yes to.
“We’ve set ourselves very specific types of games that we want to focus on across the company,” he says. “The way we’re going to approach it is in having themes every year. Next year, something like RPGs for mobile games, first and third-person shooters for PC and consoles, and for the tiny games just simple 2D.
“And then the year after we’ll figure out what then is the most important thing. The whole point of these things is we want to change them, I would imagine that once we’re done with it, we’ve actually solved the problems, and then it’s time to solve other genres.”
HIGHWAY TO LA
Bibby comes in to remind us again that the whole process must be customer-centric, it must not just serve the needs of their users, but also engage them in the process.
“That’s the key, making sure we’re as aligned as possible to our customers, some want tiny, some want broad reach and some are looking for the pinnacle of the experience. Those are the three buckets, but within that are game genres, where people might play them, and how you might produce them.
“We can look for the best customers, the best examples in each of those areas per genre and we work with them and partner with them. We can bring them into [our company’s] Slack channels and we can make sure we understand their use cases really, really well.
“One of the nice things is because we have so many users, making so many different things, we’re aware of all the pain from all the creators. We’ll meet customers wherever they want to meet us. Every single bug that’s reported we still look at, we look at 100 per cent of that. If users are willing to give us energy, then we’re always willing to listen.”
And it’s those users that remain key to Unity’s success, as Bibby explains with a comment which could be taken as an attempt to clearly differentiate Unity and its main competition: “We’re only successful if our customers are successful, which I love, we have no other source of revenue apart from successful customers.”
And in just a week now the company will again be listening and talking with its users as Unite LA kicks off on the 23rd of October. We recommend you watch the keynote.