Engine questions and answers

Posted by unknownworlds 6 years ago

Last week we announced that we’ve been working for the past five months on a new engine for Natural Selection 2. We were a little nervous about making the announcement without showing off the engine, since we thought people might freak out of a bit. But at the same time, we’re not quite comfortable showing the game yet and we didn’t want to have to continue to avoid talking about what’s going on with development in our blog and podcasts.

It seems that once again opening the kimono was a good idea: we couldn’t be any happier with the reaction to the news and it’s really great to have your support.

Since there were a lot of questions regarding the engine switch, we decided this week we’d post a little FAQ and try to cover most of them. If you have more questions, feel free to post them in the comments or on the forums.

Won’t writing a new engine delay Natural Selection 2?

We don’t think so. Speeding up development and making progress more predictable were the major reasons we decided to create a new engine. We decided to make the switch about 5 months ago and now we have more of the game working than we did then when we started the transition.

Features are going in much faster now that we have technology designed for what we’re trying to accomplish. We’re spending a lot less time tracking down hard-to-find bugs and figuring out how to implement new gameplay features with the engine. So even though we have more to code, the net result is that it takes less time.

How far along are you with the new engine?

It’s hard to describe exactly, but we have all of the major systems — networking, scripting, physics and animation — working well enough that they aren’t holding up progress on the game code and art creation.

This week we just passed 80,000 lines of C++ code for the engine and tools (not including all of actual the NS2 game code), so there’s quite a bit there. By comparison, Quake 3 Arena has about 120,000 lines of engine and tools code.

Will there be a Mac OS or Linux version of the engine?

We’d like to support multiple platforms, although at the moment we’ve got our
hands full with just the PC (plus those Macs are expensive!). We keep all of
our code as platform-independent as possible so a port could be done in the future without too much difficulty. This includes the toolset as well as the engine.

Are you still supporting customization/modding?

Yes, customization is one of the four pillars of Natural Selection 2 and is very important to us. All of the gameplay code in NS2 is written in easily modifiable Lua. We’re planning on including a version of our Lua IDE, with NS2 as well as all of the other tools necessary to make new maps, models, textures and animations for our engine.

I don’t want to learn a new editor!

Our goal is to build tools that are simple and intuitive enough that you don’t
need to "learn" them. We try to do this by borrowing user interface conventions
from other similar applications and keeping the interface uncluttered. If you’ve managed to build levels using editors for other games, you probably won’t have any difficulty using our editor.

Since your engine is designed specifically for multiplayer, will there be any AI support (bots)?

In the past we’ve mentioned at least one AI controlled character we’re adding to the game — the weld bot — so we’ll have engine/game support to make that happen. You just might be hearing about some more AI characters in the future.

Why don’t you use Euphoria/Havok/etc.?

Those products are quite expensive. We’re a startup and need to watch every penny. Since they wouldn’t really add much to the game, we prefer to spend our resources on other things.

In terms of physics, there are some really great free alternatives out there, namely PhysX, Bullet and ODE. We integrated both PhysX and Bullet into our engine to evaluate them and we’re really happy with the results.

Will the engine allow "bunny hopping"?

Player movement isn’t part of our engine — that’s all done in game code. The engine is the generic part that’s common between all multiplayer 3D games and the game code is the specific stuff that makes it Natural Selection. Unique player movement is obviously an important part of NS, so all of that is implemented in Lua and can be modded.

How’s that for a convenient way to avoid discussing bunny hopping? ;)

What are you going to do about cheating?

Like other first person shooters, our networking model is based around a client-server architecture with an authoritative server, which severely limits the ways that clients can cheat.

This doesn’t prevent all kinds of cheats like aimbots and some forms of wall hacks. That’s where other systems like Valve Anti-Cheat and PunkBuster come in. Using our own engine doesn’t restrict our options there, since Valve makes VAC available via Steamworks and PunkBuster works directly with developers to integrate their system.

So we don’t really know specifically what we’re going to do to prevent those cheats, but the options are open.

There were a bunch of technical questions about the engine and its features. Now that we’ve announced the engine, expect to see more details on the blog about what we’re working on and the new additions going into the engine.