State of Development: May 2013
Following on from the March and April entries, it is time to update Planet Earth on what is going on with Natural Selection 2. This is a retrospective look at development in May. To keep the length under control, (April’s entry was a bit overboard!) this post will stick to three topics: Environments, Technical, and Game. Let’s start with Biodome!
Michael, (‘Olmy’) has been cranking on Biodome. The map is striking, thanks to its new art set and ‘flora’ focus. The accompanying images show some of the stages environments go through, from idea (1, above), to rough 3d layouts (2, below), to texturing, lighting, detailing and prop placement (3, two below).
Biodome will be an absolute blast, but what will be even more of a blast is what you choose to create with the huge number of new assets. Remember – Everyone has the Spark Editor, you can find it in your …\Steam\steamapps\common\natural selection 2 directory as ‘Editor.exe.’
Biodome is not the only map receiving love from the mapping team. Docking has received a new layout, improving the flow of play and creating new areas to explore.
Andi (Sewlek) has been exploring the deepest depths of Natural Selection 2 balance. Armed with incredible Lua skills, data from Sponitor, and consulting across a broad spectrum of players, he has created the Natural Selection 2 Balance Test mod. You can access the Balance Test in Steam Workshop by following this link. Some degree of Balance Test will make it into vanilla NS2 during the next month or two, and it is your input now that determines what NS2 will look like in future.
For an indepth run down on Balance Test mod and what is in it, check out Episode 3 of WasabiOne’s State of the Game cast.
Beyond balance, new gameplay features are being worked on. NS2 development is very ‘open.’ Sometimes, being ‘open’ is a fuzzy, intangible concept. In the case of the new weapons you will be playing with later this year, openness is a very raw and real thing.
Like the Spark Editor, Decoda (Decoda.exe) comes free with NS2 and is included in your Natural Selection 2 directory. Decoda is a Lua ‘Integrated Development Environment’ that allows you to easily manipulate the Lua files that NS2 is written in. Go ahead use Decoda’s ‘Find in Files’ function to search …\Steam\steamapps\common\natural selection 2\ns2\lua for the term ‘kMaxHandGrenades’ – What can you see? If you look closely, you might find other references to a weapon that is not yet in NS2, but will be introduced in the coming months…
Another big upcoming addition to NS2 is the female marine. Her 3D model is well advanced, and she is at the stage where animations are being ‘rigged,’ preparing her to do battle with the Khaara.
Right now, the Spark engine uses Direct3D9. D3D9 is a 3D graphics Application Program Interface (API) that provides Spark with access to the hardware that spits pretty NS2 pixels at your screen. It works well, but there are new kids on the block.
Direct3D11 is a newer version of the D3D API. In some cases, it can allow for better rendering performance. It also provides a host of tools that can make the life of a game developer much easier. Giving Spark the ability to use D3D11 will allow us to make improvements to rendering in NS2, and any future games we make on Spark.
The drawback of D3D11 is that it is not universal. It only works on machines running the requisite operating system, and on hardware capable of understanding the instructions it sends. According to to the Valve Hardware Survey, the penetration of D3D11 capable machines is increasing. But crucially, machines incapable of any D3D rendering are also a growing market: Linux distributions and Mac OSX.
Enter Open Graphics Library (OpenGL). OpenGL works on a wider array of operating systems than D3D, including Linux and Mac. As gaming communities on these operating systems grow, it is becoming more financially viable to produce games that run on them.
All in all, it makes sense for the Spark Engine to be able to render using D3D11 and OpenGL . Max and Dushan have been coding like crazy to make this happen.
While you shouldn’t expect to be able to fire up NS2 on a Mac next week, the number of hurdles left to clear before such an achievement is dropping. We will continue to carefully consider the business case for porting NS2. We need to keep the lights on in the UWE office, so ports are not a certainty!
Other fun May engineering work has included experiments with making gameplay code run faster. NS2 is written in Lua, a simple, powerful, lightweight language. The Spark Engine is written in C++, a faster and more efficient compiled language. Other examples of the use of Lua in games include Crysis 3. NS2 uses Lua because creating, iterating, bug-fixing, maintaining and supporting gameplay code written in a lower-level compiled language such as C++would be impossible for a team of our size.
The Spark Engine and NS2 need to talk to each other to make Skulks explode. It is this chatter that is a performance bottleneck when playing NS2. The interface between C++ and Lua is called the ‘binding layer,’ and over the past year we have experimented with various ways of making this binding layer faster. Work done over the past month has attempted to use LuaJIT as this binding layer, and results have been promising. It is too early to make any definite calls as to whether a LuaJIT version of NS2 will make it into your hands, but we want you to know that we are exploring this engineering avenue. Performance is always our priority.
June is upon us! It is now seven months since the release of NS2, and development continues unabated. We are not sure exactly what the first public build of NS2 was, but based on NS2HD videos it is probably around 149. That means that with the release of 249 (some time this month), UWE will have released one hundred updates for NS2. Now there’s something to toast!