We recently announced the choice of Unity as the game engine for Wasteland 2 development. Many of our supporters are curious about why we chose Unity over multiple other options, and whether Unity is able to meet the requirements of the project. In this post I will talk about the factors leading to our decision and how Unity addresses the needs of Wasteland 2.
Before diving into specifics I’d like to take a step back and talk about inXile’s approach to game development. We are decidedly not a technology development company. We are a game development company. We pursue game ideas first and then decide what technology to use to best realize our ambitions for the game design and our business goals. Consequently we have used several different game engines and multiple third party tools and solutions over the past decade.* There is inevitably some engine-level work that we do to tune the engine for the particular game we are making, but we try to make initial choices that minimize that risk factor.
From a lead programmer perspective, my goal is always to enable the designers to most directly implement their vision by providing tools that keep me out of their way. That requires analyzing the game design up front, and with budget and time in mind, deciding what technology I should license and what I should write. I want to license enough and develop enough that the designers have all the tools they need, but without wasting money on overkill solutions, whether licensed or developed.
So along comes Wasteland 2 and we began the familiar yet always unique process of identifying the requirements so we can evaluate game engines and tools that will get the job done most efficiently. The original Wasteland was party-based and turn-based with a top-down POV that relied heavily on text-based story and drama achieved through deep connections and consequences between story and character.
For Wasteland 2, with the help of our Wasteland fans we decided to keep the focus on story and character, retaining the party-based and turn-based mechanics. The top down POV would remain as well but we would go with a full 3D render to bring it into the modern graphics era. During our Kickstarter we also promised to deliver on Windows, Mac and Linux platforms, and to provide support for the modding community.
With those broad strokes on requirements, we began evaluating engines and tools.
The Influx of Support
It’s been a great pleasure to feel all the support from fans of the game during Kickstarter, and that has continued during our engine and tools evaluation. Multiple vendors who also supported the Kickstarter came forth with their products, not just to hawk their wares, but to offer genuine encouragement and generous offers of custom support. Among them were prominent engine vendors as well as specialized tool vendors, and of course Obsidian. We necessarily must decline some generous offers as we let the game requirements drive us to single solutions in each category, but we do so with great appreciation for the genuine good will expressed in the offers.
There was a broad enough offering just from the vendors that came to us that we prioritized our evaluations to these products first, hoping to find our solution amongst the ones making generous offers and hence help devote more resources to the game.
Besides the items mentioned above, high on our list of requirements for an engine was ease of use by the artists and level designers for getting assets into the game and editing levels. We are a small team and must be able to work very efficiently. This became a first-pass filter when evaluating engines. Also very important was ease of development for the promised target platforms. Following a close third was amount of support from the vendor and general availability of expertise for crowd-sourcing, contracting or hiring. Putting it all together we came up with a list of engine requirements that looked like this:
- Ease of use by artists and designers
- Targets Windows, Mac and Linux
- Support and expertise available from vendor and in community
- Adaptability for player modding
- 3D rendering, pathing, AI, phyics, character animation tools
The 3D rendering and other game systems at the bottom of the list are very important as we plan to make a great looking game with physics and effects. But these things, at the level we need them, are commonly provided by full-fledged engines, so they end up lower on the list in terms of differentiating factors.
Given the top down POV and camera height required to show a party of characters and enemies, it would be overkill to spend too much of our resources on detailed character models and all the cutting-edge rendering and animation techniques associated with that level of detail.
If we plan well, then we can put just the right amount of resources into modeling and animation so that it looks great from our camera POV without wasting effort on detail that will never be seen. Then we can spend more time working on other enhancing effects that will be noticed from or POV, such as physics for ragdolls and flying debris, and the fire, smoke and particle effects for the gunfire and explosions that cause those ragdolls and flying debris (hopefully of for your enemies and not your party of rangers).
Unity Technologies, with their Unity 3 game engine, was among the vendors that came to us with congratulations, goodwill and offers of support. Their engine stood out as an early front-runner on point 1 of our requirements. The artists loved its support for the native formats of the art tools we already use (3DS Max and Photoshop). I also like its built-in version control for assets and code.
At first it seemed to be missing a leg on point 2 (support for Linux platform), but I knew that we could get source code and therefore could provide the Linux port ourselves. Given that the engine is designed and structured to support multiple platforms, I felt it would not be insurmountable to port it to Linux (or actually hire some outstanding external contractors we’ve used before to do the job). After talking to Unity about this, we found they’ve already been working on a Linux port, so Unity is supplying inXile the linux port alpha source code. InXile will work with Unity in order to port Wasteland 2 to linux.
Where Unity really bowled us over was on point 3. Besides generous support available from Unity staff, the Unity Asset Store is a treasure trove of assets (3D models and code) provided by the large and growing community of Unity users. A recent Unity newsletter announced that the Asset Store customer base has topped 100,000, and the catalog has reached over 3,000 packages! We’ve been able to find all kinds of useful 3D assets and code in the Asset Store ranging in price from cheap to free! Having an organized marketplace like the Asset Store for finding assets and expertise fits right in with our desire to leverage and give back to the community. While we cannot share engine source code changes, we can share script code and components, as well as graphical assets as part of our modding support.
On the Modding front, we always figured we would have to provide custom tools to users, so we didn’t rank modding support high on our list of engine requirements. We’ve also had generous offers from the Wasteland community of coders to help with developing those tools. And yet I think the fact that Unity provides their basic engine/editor for free is a big plus as a starting point for providing the tools necessary for supporting modding of Wasteland 2. And there again, I think the Asset Store will facilitate ongoing collaboration with the community on modding tools that can be offered in the store for free.
Finally, from looking at Unity demos, other games developed with Unity, and conducting our own art and coding tests, we are convinced that Unity delivers on the game system that we need to build Wasteland 2 in style. This includes advanced 3D rendering, pathing, physics (PhysX), multiple options for scripting language, advanced 3D level editor that is customizable with scripted components, and much more.
In summary, Unity hits the sweet spot for us defined by the specific requirements of the Wasteland 2 game design, deployment plan, and the unique circumstances of the development effort which includes community involvement on an ongoing basis.
It has been my experience over decades of game development that no engine or tool is ever perfect for the game you want to build. Any engine or tool will have points of weaker comparison to other options, but you have to evaluate how the whole offering matches up with your resources and skills to make a good choice for the project at hand. Unity is an excellent choice that will allow us to deliver the great game we’ve promised in Wasteland 2.
Director of Technology
*Technology inXile has used: Snowblind Engine, RadTools, UE3 Engine, Gamebryo Engine, RKEngine, and various smaller third-party tools for game sub systems such as, path-finding, physics, character animation and lip-synching, etc.