Unity is the world’s biggest game engine, a near-ubiquitous technology behind experiences as varied as Match 3 messenger games to console FPS titles and a lot more besides. And that breadth of use cases means that Unity is increasingly looking at how it can best support its broad swathe of users.
In recent years we’ve talked in-depth about Unity’s big new features, such as its new render pipelines and its multi-threaded Data-Oriented Technology Stack (DOTS). However, new features, however exciting or useful they may be, are rarely at the top of the list when you ask developers what changes they want to see.
So for 2020 Unity is focusing upon the usability and flexibility of its engine. And that means not only looking at quality-of-life improvements in the current version, but also how the company handles versioning in a tool that is increasingly being used to create complex experiences with multi-year development cycles.
The most obvious change is that the company has changed its release schedule for the first time in years, adjusting the cadence of its Tech Stream releases from three to two a year. As Brett Bibby, VP of engineering, explains to us:
“We’re rebuilding Unity to be lighter and more flexible. A key enabler of this is our Package Manager, which allows us to decouple many features, APIs and updates from our Tech Stream releases. This enables us to deliver a stable, slower changing core along with quicker fixes, and faster delivery of features and enhancements to Unity, needed by the next-generation of productions.”
That will have a knock-on effect on its Long Term Support (LTS) releases: “It ensures that the foundation of our Long Term Support releases are rock solid, and ready for your productions that are shipping right now. We also ensure that LTS to LTS upgrades are as painless as possible, giving developers the best of both worlds: tech releases with the leading edge technology you need to innovate and LTS releases which give you the reach and stability you need in the long term.”
Asking about new features and Unity versions, we reached out to a handful of developers who have recently made incredible games with Unity. What really struck us was how much their use of the tool varied, in terms of the version, features used, and how much they added to the core technology provided. You can read their stories on these pages.
And the company claims to be considering all these varied users with every such change of pace and with every release:
“With every change we make to the engine, we are factoring in the stage the user is in with their work. We want to make sure that the updates we’re delivering are not going to put them in a situation where they are taking two steps forward, and then three steps back.
“We also deeply consider where we can trim the fat, so that again, workflows are operating together in a logical, efficient way. We strive to provide professional yet accessible tools.”
“Every second spent waiting for a download, an update, or a progress bar to complete, is another second not spent on creating.”
A key part of helping produce those tools are Unity’s internal teams, which create the incredible demos, and the proof of concept sandpits, which all help move the platform forward.
“They provide invaluable feedback early on and throughout development to ensure we come up with the best solutions,” says Bibby.
“We have moved towards a production-focused environment, so that we can better understand how our tools and workflows operate together for a wider variety of use cases.”
And whether you’re creating a 2D indie title, a triple-A console game, or working on something totally different, improvements in how well the tool works are equally appreciated.
“Every second spent waiting for a download, an update, or a progress bar to complete, is another second not spent on creating, coding, or animating. We are reducing iteration times, so there’s less time queuing, more time doing. We engage with developers around the globe on a regular basis to understand where we should focus our efforts.”
And with that in mind, has the company’s recent focus on re-engineering its biggest core systems started to show bounty, we wonder? Particularly in terms of games pushing the graphics envelope with the new scriptable, HD render pipelines.
“I think it’s important to state that these are the foundational technologies that help developers solve a challenge. For instance, HDRP is one of many features and workflows that you’d want to use to achieve high-end graphics. Unity is the destination for beautiful games that unlock the creativity and imagination of the community. I’d like to point to some amazing games that came out last year – Outer Wilds, Sayonara Wild Hearts, Disco Elysium, GTFO, Gris, and Void Bastards just to name a few. All Unity games, all with absolutely brilliant art direction.
“And in 2020 you’re going to see even more beautiful uses of our platform – from Temtem’s cel-shaded style, to Ori and the Will of the Wisps’ gorgeous graphics, to Wasteland 3’s beautiful snow and particle effects – I’d say that Unity developers are really pushing the bar for graphics. Additionally, it’s important to emphasize the fact that all of this ties into our philosophy on what game development actually is.
“We see game development technology as something that is the proving ground for the next wave of technology innovators. What we do with our engine for game developers inextricably applies to the development of other real-world experiences – the way cars are designed, the way bridges are built, for example. It’s all about providing a foundation for creators to bring all the pieces of their dreams together in a cohesive, usable and scalable way.”
Madfinger Games: Shadowgun War Games
Madfinger Games is celebrating its 10th anniversary in May, and since the very beginning, we have partnered with Unity to develop our games. We’re currently working together on major aspects of our just launched title, Shadowgun War Games, on things like rendering, performance, matchmaking and dedicated servers. Some of the key Unity tech and services we have implemented for its release, or are planning to use post-release, include: ML Agents: used in training AI teammates to behave like human players; Matchmaker: for players to find the right match for a great gameplay experience; Multiplay: to maximize server uptime and player enjoyment Unity Transport Layer: connecting players to servers with low latency; Vivox: providing low latency communication for players; and Unity Ads: for increasing player engagement Unity helps us with prototyping really fast, which is one of the things I like the most about it.
We currently use Unity 2019.2 and, as clients since the early days, we will carry on using every new version they provide. Take Unity Connected Games, for example – although this new Multiplayer/Network is still under development, the cooperative approach of Unity as a whole makes it a great experience for us. We like to do lots of stuff on our own, so we’re happy that Unity allows us to do just that. One other thing I like is the Unity Hub, which is a nice touch for developers like us who are working on multiple projects with multiple versions at the same time. We’re looking forward to DOTS as we’re mainly working on high-performance projects. We have a strong relationship with Unity. They give us great support, dedicated communication channels and, most importantly, they really listen to our feedback and act upon it. I can’t imagine using anything different because their support helps us innovate and create the games we’ve always wanted to build.
Blu Manchu: Void Bastards
We started using Unity to build Void Bastards as we thought it would be the best tool to prototype in. We had in mind the idea of making a later decision about what engine we might ship the game in, but as you would expect, that decision made itself because the prototype just turned into the shipping game.
Our engine priorities were all about stability and and tools, not bleeding edge features, so we stayed very conservative with Unity versions, only updating our version of Unity a couple of times during the multi-year development and shipping with Unity 2017, even though 2018 was available. Specifically, we started with Unity 5, switched to 2017 about mid way through and shipped with a 2017 LTS release.
Our render pipeline was very standard – we managed to achieve our different look by working within what 2017 provided – custom shaders and some lighting tricks rather than hacking into the renderer. Probably the biggest feature we missed that has since been added to Unity is nested prefabs but, again, we worked around this by scripting our own simple system that was good enough for our purposes. It’s nice to see this feature being property supported by the engine now.
The only real problem we’ve had with the engine was when we bumped into a hard crash associated with asynchronous scene loading.
Because we didn’t have source access our only way to resolve this was to roll back our code changes until we found the one that triggered the crash. That took several weeks of grinding labour that we’d really like to have back.
Overall Unity turned out to be a great choice for our project though. The new, more flexible, Universal Render Pipeline is obviously a great improvement that would have been nice to have for Void Bastards. But our strategy was always to work with the (stable) tools we had rather than take the risk of being exposed to new features that are likely to be less stable.
10 Chambers Collective: GTFO
The launch of GTFO has been the most stable and performant launch in our game development careers (most team members have 15-20+ years as professional game developers), and the game is still only in Early Access! We attribute this very much to Unity; namely the profiler and the “Crashes and Exceptions” backend: We have never had as much control and knowledge about what’s going on as we do today! Unity’s analytics backend is really something – we’ve been told it’s intended mainly for mobile game developers since that is a very data driven space, but we can verify it’s extraordinarily useful for those who make FPS games on PC too!
The Unity engine provides an exceptional ability to create prototypes or any type of quick-and-dirty test of game functions. The short distance from idea to practical test, facilitated by Unity, has without a doubt been instrumental to the creation of many of GTFO’s core features. By using a combination of separate prototyping environments and placeholder systems from the Unity Asset Store, we have created a modular project where systems can easily be replaced when they need to be. During the production of GTFO we’ve always prioritized productivity and workflow. The fact that Unity makes it so easy to create tools that the development team can use internally, has been instrumental in equipping 10 Chambers to sustain GTFO with new content for a long time. GTFO is a testament to the fact that Unity makes it possible for tiny teams to create ambitious and potent games.
Mobius Digital: Outer Wilds
We’re currently using Unity 2017.4, but when we started the project years ago we were all the way back in Unity 4! Outer Wilds is an extremely unconventional game on a lot of levels, so we had to leverage a lot of parts of Unity in unusual ways, and create a lot of tools specifically addressing our design and production needs. One of the scariest moments in our production was the switch from Unity 4 to 5, as support for concave colliders on rigidbodies was dropped by PhysX. Since every object in our game is a rigidbody (from the sun to planets all the way down to marshmallows), this meant we had to re-write physics integration ourselves to get everything working and stable again!
Over the development of Outer Wilds, we created a plethora of tools unlike any found elsewhere. These include scene transform handles that automatically stick objects to surfaces and align them to local gravity fields, a tool to “stamp” foliage and other detail objects across arbitrary surfaces, scripts to bake kitbashed terrain into a cleaned-up and optimized final result, an in-Unity editor for designing and hand-crafting starfields, a tool for creating unique assets for spiraling alien text found throughout the world, and a custom build pipeline that allows us to easily publish to PC, Xbox One, and PlayStation 4. What was great about working with Unity is that we were able to quickly and easily integrate these all into the editor in a way where they were easily usable by the entire team, allowing us to make a large hand-crafted game with a very small team.
Built-in tools like the Profiler and Frame Debugger were vital to getting the game out the door, and were a perfect level of accessibility for a majority of our purposes. Both provided incredibly helpful ways to see what was going on under the hood, allowing us to not only debug our code and solve performance problems, but also to write better code in the first place. A lot of Unity’s other tools were not things we could use with Outer Wilds, as they either assumed that the world geometry wasn’t moving (lightmapping, occlusion baking, etc), assumed that our game took place on flat planes (terrain), or they weren’t fully supported yet in our version of Unity (scriptable render pipeline, burst compiler, DOTS, etc). The lack of these features were not significant barriers to us, though, and we achieved our rendering, memory, and performance goals by repurposing existing Unity systems or by rolling our own.
The biggest feature that I wish had been available to me during development was the scriptable render pipeline, as it seems like it would have given me the ability to do more intelligent culling and shadow rendering for Outer Wilds. At no point during development did it make sense to jump major versions to try to rewrite how the entirety of rendering worked, however.