We often get questions about the technology we're building for Natural Selection 2. With this in mind, I've written up the first of a several part blog post to answer some of the more common and interesting questions. My initial call for questions generated quite a few, which I intend to address in depth, but first I'll start with two of the more general questions.
Andreas asks: What is the Spark engine? Is it the whole game engine or just the graphic part?
This is a great question to start with. Spark is the entire game engine and tool set we're using to build Natural Selection 2. This includes the graphics, sound, networking, physics, scripting, path finding and effects system (probably others too). It also includes tools like the Editor, Builder, Viewer and Cinematic Editor.
When Charlie and I started working on Natural Selection 2, we weren't planning on building an engine. Creating technology is a lot of work and it's also very challenging to build a game - both in terms of gameplay and artwork - when the engine isn't finished. When we ultimately decided that we were going to create our own engine, we wanted to make sure the technology was flexible enough that we wouldn't have to start again from scratch for the next game. We also wanted to make sure that other people could use our engine to make their own games. To this end, the technology is designed to be largely independent of the game. Spark is coded in C++ and provides the core functions of managing a virtual world. But Natural Selection 2, which is entirely programmed in Lua, adds the common elements of first-person shooters (players, weapons, score, etc.) and the Natural Selection-specific pieces like commander mode, tech trees, wall walking, etc.
The division of labor for the coding has always been very straightforward – Charlie writes the Natural Selection 2 code and I write the engine/tools code. A few months ago, Kurt Miller, a great programmer and a good friend of mine, joined Unknown Worlds to work on the engine and tools code as well.
For the past two months we've released weekly patches to the editor. Often people interpret these editor-specific updates to mean that we're not making progress on the game. In fact, even when we were crunching the hardest on the Editor - right before the initial release – Charlie was still devoted full-time to the game code. Now-a-days, Kurt and I spend most of our time enhancing the engine, with Kurt spending a small amount of his time implementing new features and bug fixes in the editor.
Beat Wolf asks: What platforms will be supported? (Linux, OS X, XBox, etc..) The web page still mentions Linux and OS X as target platforms, but there have been many doubts with the inclusion of Steamworks and because the question seems to be avoided for some time now.
Well let the issue be avoided no longer! Currently our engine and tools only work on Windows, and that will be the only platform Natural Selection 2 will be available on at release. However, most of the engine is not platform specific. The largest Windows-specific piece is the low level rendering code which is built on Direct3D. In the interest of having our engine run on Linux and OS X someday, this low level rendering code is wrapped up so that it's mostly separate from the rest of the engine. With a small amount of effort, we can swap out this piece with an OpenGL implementation that will work on Linux and OS X. All of our tools are built using the cross-platform wxWidgets framework, so once we get the engine working on another platform, bringing the tools over won't be too much work.
Now that I've convinced you that we've taken steps to allow us to bring our engine to other platforms, you might be wondering why we don't just go ahead and do it. The answer is simple; we don't have the time right now. As an alternative to doing it ourselves, we've considered "open sourcing" or publishing the low-level APIs for the pieces that are Windows specific and inviting community members to contribute their own implementation. If you like this idea let me know in the comments.
Now the issue of Steamworks. For those of you who don't know, Steamworks is the core technology of Steam, like the friends list, server browser and voice chat. We've integrated Steamworks into Natural Selection 2 because it saves us the effort of implementing these things ourselves, and gets the game into your hands faster. Unfortunately Steamworks (which essentially is the Steam client) only works on Windows. We've setup Natural Selection 2 to work without Steamworks, but you lose the services that it provides. For example, instead of being able to browse for a server you'd have to type in its address in the console to connect to it. For an OS X or Linux client, we'd have to substitute in our own implementation of those missing services. This certainly isn't out of the question for a post-release update to the game, but it's not something we'd delay the initial Windows release to incorporate.
I should add to this discussion, that none of this applies to running dedicated servers on Linux. Dedicated servers don't require graphics, input or any of those other platform specific things. And one of the great things about writing all of the game code in Lua is that it's inherently platform agnostic. Dedicated Linux server support will be in the initial release.
We also wanted to let you know we're starting engine testing with the people who have pre-ordered the Special Edition. This is not a demo or an alpha but is an engine test, meant to test graphics, networking, performance, compatibility, etc. It also includes the full scripting tools so coders can start experimenting.
Over 10,000 people pre-ordered Natural Selection 2. We don't want to be overwhelmed with bug reports so we're starting out small. Then we'll be growing it continuously as we hammer out issues and are ready to deploy it to a larger group. We'll be granting access to players in the order that they pre-ordered (http://www.naturalselection2.com/buy). We're also hard at work on the NS2 alpha - the results of this engine test will make sure it works great when we release the alpha to all the Special Edition pre-orderers.
You've been so kind as to support us and because of that we're still in business. We hope you understand our strategy. We're eager to get NS2 into everyone's hands as soon as possible!
I remember reading that the NS2 engine would work just as well on Mac OSX and Linux, but the server and voice chat and all that would be a pain. Hopefully, now that Steam is coming to Mac, it might be able to piggyback that support and get a dual release. If so, I'll buy an advanced copy right away.
I remember reading that the NS2 engine would work just as well on Mac OSX and Linux, but the server and voice chat and all that would be a pain. Hopefully, now that Steam is coming to Mac, it might be able to piggyback that support and get a dual release. If so, I'll buy an advanced copy right away.
I highly doubt it. I believe what was stated was that the actual game logic is separated from the engine, meaning that if one would want to port the game to Mac/Linux, they wouldn't have to rewrite any game code. However, they would have to write the entire engine for OpenGL, which is not an easy task and very time consuming. Considering that the game is already falling behind their time table, they're probably not going to get around to this anytime soon.
However, they would have to write the entire engine for OpenGL, which is not an easy task and very time consuming.
Actually, they'd really only need to rewrite the very end of the rendering pipeline (which is an important chunk of the engine, but not the whole by far). And from the statements made here, it sounds like they've isolated the DirectX stuff properly to make such a swap.
They still haven't said anything about actually doing a simultaneous dual release, mind you, but it still sounds like they're planning to release Linux/Mac versions eventually.
Bugs prevented me from walking forward or looking around. But, it makes me happy that the lack of an inverted mouse was pretty-much the biggest and most frequently reported problem in the feedback system.
Alright, I already reported this problem, but am wondering if anybody knows how I can fix this manually.
So, the default resolution for the game is (I think) 320 by 200. The menus don't scale to fit the resolution, though, so at that setting, I can't access the options menu to change it to a playable resolution. Looking through the global lua file, I came across the following:
I haven't been able to test any sort of server connections, so if anyone would like to try it let me know. There is a small deathmatch lua mod if we want to try that out.
* One of our shipping maps (ns2_tram), plus some smaller "test" maps * Marine, with Rifle, Pistol, SwitchAx, Grenade Launcher * Skulks, Gorges, Lerks and their basic movement abilities and weapons * Marine armory "buy" screen for purchasing new equipment * Alien evolution menu for choosing your lifeform and upgrades * Basic marine and alien commander interfaces including MACs, Drifters * Much of our final sounds, artwork, animations, etc.
Comments
They still haven't said anything about actually doing a simultaneous dual release, mind you, but it still sounds like they're planning to release Linux/Mac versions eventually.
So, the default resolution for the game is (I think) 320 by 200. The menus don't scale to fit the resolution, though, so at that setting, I can't access the options menu to change it to a playable resolution. Looking through the global lua file, I came across the following:
kGraphicsXResolutionOptionsKey = "graphics/display/x-resolution"
kGraphicsYResolutionOptionsKey = "graphics/display/y-resolution"
Beyond this, though, I have no idea. Any thoughts?
Also, I pity every other video game.
Does anyone have any idea what the recommended specs are? It's got the minimum specs on the buy page but they're particularly low.