Brad Wardell's site for talking about the customization of Windows.
Published on December 19, 2015 By Frogboy In GalCiv III Dev Journals

 

imageThis past week I was on Explormiate (http://explorminate.net/2015/12/16/strategic-expanse-interview-with-brad-wardell-2/) and the subject of game engines.  Given the emails and feedback I’ve gotten it is pretty clear most people are not that familiar with game engine generations.   So consider this a basic primer on them and why they matter.

Beginnings

It’s important to note that historically, every game had its own custom engine.  Id was a pioneer in licensing its engines to third parties which wasn’t surprising, they were the first ones to create a third generation game engine with Quake.  Each generation of engines gets exponentially more difficult to make and as a result, more and more developers drop out of making their own and start licensing which has the effect of reducing the amount of variety in game design (since, ultimately, you are making a game within the confines of what the engine can do). 

Id doesn’t often get enough credit for what a big deal the Quake engine was. So let me put it like this: Quake was released in 1996.  Stardock didn’t make a 3rd generation game engine until 2010 and it was a disaster (Elemental).  Very few developers are capable of making a third generation engine well.

Engine Generation Primer

You don’t need to be a game developer to understand game engine generations.  Once you know what they are, you can spot them easily. Let’s take a look:

  • Generation 1: DOS, 320x200 with 256 colors. 640K limit.
  • Generation 2: Windows, sprites (or 3D acting as sprites), typically fixed resolutions
  • Generation 3: 32-bit, DirectX 9c (OpenGL 3.2), single core design, assets live in 3D

There are certainly games that you could apply the “+” to.  For instance, GalCiv II was a generation 2+ engine. That is, with work you can retrofit an engine to have next-gen features but it is still, at its core, a particular generation.

At this stage, most studios already license their Gen 3 engines.  My favorite third-party 3rd generation engine is Unity.  Besides Valve, no single company has done more to help the game industry than Unity (I am a pretty big fan of Epic too but Unity has transformed game development).

As a practical matter, if you’re an independent game developer, Unity is what I’d recommend. 

Generation 4

For these generations to have any meaning, anyone with reasonable technical knowledge should be able to onto a Steam game page and instantly recognize the engine level.   As soon as I see 2GB memory req or DirectX 9c/OpenGL 3.2 I know it’s a Gen 3 engine.

So what is required to be a 4th generation game engine? Well first off, there is no standards body so I can only relate general consensus.  A 4th generation engine has to be obviously distinct:

  1. 64-bit only (designed assuming essentially unlimited memory)
  2. DirectX 10 or later  (designed assuming that multiple threads will be talking to the GPU)
  3. Multicore (designed so that it gets faster as you add more cores)

So when you look on the game page you’d see the minimum requirements be:

4 core, 6GB or more in memory, DirectX 10 or later. 

What is the benefit and what is the cost and why should anyone do it?

As I said earlier, if someone were asking me what they should use to make a new game I’d point them over to Unity.  If not Unity, then Unreal (this is nothing against Crytek, I’m just not familiar with it enough to recommend).  So in short, I don’t actually recommend making or using a 4th generation game engine.

So why has Stardock made two 4th generation engines? Because we have determined our games need a technological edge to stand out.

 

image

My role at Stardock these days

Different companies have different strengths.  Stardock is really good at designing games that are big and endlessly extendable.  We stick with our games for years and years.  Our design process is iterative.  We make something, we get feedback, we improve it. Over and over again. 

With GalCiv II: Twilight of the Arnor, we were able to make what I think some would agree is the ultimate space 4X.  But we couldn’t go any further.  We had extended our Generation 2 engine (Pear) well beyond what it was ever designed for.  We got a lot of mileage out of it

Every time I see a new Paradox game that uses the Clausewitz engine (their third generation engine) I’m so jelly.  They’ve used it for Europa Universalis III, Hearts of Iron III, Victori II, Crusader Kings II, EU 4 and I think Stellaris.  Stardock wouldn’t get its gen 3 engine until 2010 and that was Elemental.  

Once you have your engine, you can make a lot of games with it.  But that first game is always a pain because you have to start over largely from scratch.  This puts you at a short-term competitive disadvantage.  But once you have your engine going, you start to build momentum.  

The Future

The GalCiv III series will continue to use the Galactic engine.  Future games will use Nitrous which is being developed by Oxide Games (Ashes of the Singularity).


Comments
on Dec 19, 2015

great read, thanks.  I particularly like the Mick reference.

on Dec 20, 2015

This was a really informative read on a subject that is not widely understood in the broader gaming community. As I understand it, creating a new engine from the ground up for GalCiv 3 has been a major investment -- hopefully it is one that can benefit games outside of GalCiv 3. With so many 4x games being built, perhaps having Stardock develop a custom 4x engine could be a boon for smaller developers?

on Dec 20, 2015

The GalCiv III series will continue to use the Galactic engine.  Future games will use Nitrous which is being developed by Oxide Games (Ashes of the Singularity).

 

Could you unpack this a little more? I'm curious as to why Nitrous has such a long projected lifespan compared to Galactic.

on Dec 20, 2015

TheFunMachine

This was a really informative read on a subject that is not widely understood in the broader gaming community. As I understand it, creating a new engine from the ground up for GalCiv 3 has been a major investment -- hopefully it is one that can benefit games outside of GalCiv 3. With so many 4x games being built, perhaps having Stardock develop a custom 4x engine could be a boon for smaller developers?

When you license an engine, you have to build it in a very specific way.  Nitrous has been done that way.  But not the Galactic engine.

But yea the engine itself is a huge investment.  In GalCiv II, the entire budget was on the game.  For GalCiv III, ~67% of the budget was on the engine itself (that includes underlying network code too).

on Dec 20, 2015

naselus


Quoting ,
The GalCiv III series will continue to use the Galactic engine.  Future games will use Nitrous which is being developed by Oxide Games (Ashes of the Singularity).



 

Could you unpack this a little more? I'm curious as to why Nitrous has such a long projected lifespan compared to Galactic.

Mostly because the Galactic engine is just designed for GalCiv.   Nitrous is a real-time engine that can handle any type of game.  So what will happen is the Galactic Engine will slowly morph into the Nitrous engine without actually changing engines.  

Since multi-core and 64-bit are unlikely to become obsolete any time soon it's unlikely we'll need to change the engine again. A lot of the rumblings from long time players on GalCiv come from us having to re-develop features that had been put into the engine GalCiv II used over a period of many years.

For example, in a new engine (both Galactic and Nitrous have this issue) accessing bits of data can be really hard until you develop the helper classes.  I remember when I was helping on the GalCiv III AI, there was no way to find out the defense capabilities of the sponsors of a given shipyard (this has been added since).  But in GalCiv II, there was a wealth of data accessors. 

In a mature engine you get something like:

p->GetNearByObjects(radius);

That kind of call isn't specific to any game.  But in a new engine, that call has to be created.

In Nitrous, I have a hard time getting access to the modules my units have attached to them because no such API exists yet.  Thus, making UI stuff in Ashes gets painful until those kinds of APIs are added.

Getting back to your question: Since a mature engine needs lots of these kinds of calls it gets expensive to have two engines.  In the long-run, the Galactic Engine will become the Nitrous engine.

 

on Dec 20, 2015

Cool info.  For the dear dummy in me,  it sounds like a lot of work the change the engine over.  Does this happen in a big step at a major expansion or is it something you sort of morph into over time?

on Dec 20, 2015

I'm still confused.

 

So a game engine isn't a single thing, it's a combination of OS, graphics drivers and CPU?

on Dec 20, 2015

So what happens in 2029? Early retirement? 

on Dec 20, 2015

hedetet

So what happens in 2029? Early retirement? 

 

Skynet?

on Dec 20, 2015

I'm curios about Galactic and Nitrous. Kumquat, for example, was built on the Havok "engine". Is Galactic also havok? But Nitrous is from the ground up?

on Dec 20, 2015

Borg999

I'm still confused.

 

So a game engine isn't a single thing, it's a combination of OS, graphics drivers and CPU?

No.  You make the engine for a particular set of specs.

The OS, GPU and CPU would be the platform you design your engine around for instance.

on Dec 21, 2015

Heavenfall

I'm curios about Galactic and Nitrous. Kumquat, for example, was built on the Havok "engine". Is Galactic also havok? But Nitrous is from the ground up?

Havok is a middleware suite primarily for physics functionality (they have some other things but that's what they're known for). Many games/engines use it, but they aren't really built 'on' it. There is a lot more to an engine than that.

on Dec 21, 2015

That is good info.  I was curious about Galactic vs Nitrous, given how enthusiastic you are about Nitrous.  From what I can see, Nitrous is exciting stuff and well worth getting excited about.  A slow morph makes a lot of sense. 

I think the chance to support a leap into fourth generation gaming was one of the primary reasons I put up my money.  I am so far so satisfied that I want to go back in time and buy two founder's copies.  That is serious fan boyage, I tell you. 

Thanks, Brad, for this and many other things. 

on Jan 29, 2016

Frogboy


Quoting naselus,






Quoting ,


The GalCiv III series will continue to use the Galactic engine.  Future games will use Nitrous which is being developed by Oxide Games (Ashes of the Singularity).



 

Could you unpack this a little more? I'm curious as to why Nitrous has such a long projected lifespan compared to Galactic.



Mostly because the Galactic engine is just designed for GalCiv.   Nitrous is a real-time engine that can handle any type of game.  So what will happen is the Galactic Engine will slowly morph into the Nitrous engine without actually changing engines.  

Since multi-core and 64-bit are unlikely to become obsolete any time soon it's unlikely we'll need to change the engine again. A lot of the rumblings from long time players on GalCiv come from us having to re-develop features that had been put into the engine GalCiv II used over a period of many years.

For example, in a new engine (both Galactic and Nitrous have this issue) accessing bits of data can be really hard until you develop the helper classes.  I remember when I was helping on the GalCiv III AI, there was no way to find out the defense capabilities of the sponsors of a given shipyard (this has been added since).  But in GalCiv II, there was a wealth of data accessors. 

In a mature engine you get something like:

p->GetNearByObjects(radius);

That kind of call isn't specific to any game.  But in a new engine, that call has to be created.

In Nitrous, I have a hard time getting access to the modules my units have attached to them because no such API exists yet.  Thus, making UI stuff in Ashes gets painful until those kinds of APIs are added.

Getting back to your question: Since a mature engine needs lots of these kinds of calls it gets expensive to have two engines.  In the long-run, the Galactic Engine will become the Nitrous engine.

 

 

I am curious if the Galactic engine is going to basically morph into Nitrous over time are you planning on implementing any DX12 features in GalCiv III?

Meta
Views
» 13973
Comments
» 14
Sponsored Links