Building the Cortex Engine
It seems only fitting that before we get too far along talking about how Absolute Zero is being made, that we talk about what Absolute Zero is being made with. That would be the Cortex™ engine. In particular Cortex™ 5.0.
The Cortex engine is Giggle Horse Games’ proprietary engine. I developed it a long time ago, roughly ten years, and it took about two years to get it to version 1.0. Now you might ask, “Why didn’t you guys just use Unity, or Unreal?” Well, at that time Unity was just getting going, not to mention I didn’t like their licensing model, or their approach. Then there was Unreal, which was really good, but only if you were making a FPS (first person shooter). Not to mention the license per game was about half a million dollars. Which left us with one other option; the Cry Engine. Well it too was basically for first person shooters and its license fee was North of a million. So……yeah….not going to do that.
You might also ask, “Why didn’t you use Adventure Game Studio?” Well, the answer to that is multifaceted. For starters, I wasn’t planning on building an adventure game. As a matter of fact, I wasn’t planning on developing any “particular” genre of game. I wanted the Cortex engine to be as flexible as possible, and scale-able as possible. I’ll get into that in a bit. Secondly, AGS was created a long time ago, and is a little behind the curve on where I wanted to be with tech. So I wouldn’t have been happy with it anyhow.
AGS image from www.adventuregamestudio.co.uk
Given that I started my career as a low level device driver developer, and I know Assembly, C, C++, C#, Pascal, and a bunch of other languages nobody gives a crap about. I thought, “You know, the people working on those other engines are no more qualified to build a new engine than I am.” Not to mention that I had already built two other game engines before Cortex (RGI, and Troll engine). Oh, and I get to use the engine over, and over, and over without paying anyone jack; so why not! I love programming anyhow (if it isn’t for some stupid product that will never see the light of day).
I decided that if I was to make another game engine, it should be my last, or at least the architectural design of it. So I looked at all the common things that games had to do and I integrated those into the core of the engine. For example: All games have sound FX, music, 2D Graphics or 3D Graphics and sometimes a hybrid of the two, so the engine should have all that by default. Also all games have sections, levels, containers…so I put those in there as well. Then I decided that the engine had to be build in such a way that ANY game that we developed, would run on the same engine and be backwards compatible. On top of that, I wanted the engine to be portable and scale-able to any platform with minimal changes. Write once, deploy anywhere, but not like Java…I hate that stupid language. I don’t hate the language itself, but the framework it sits on…that is for another blog which I probably won’t write because I care that much about Java. I belong to the DARE program for Java, “I just say NO”. Java people, don’t feel singled out. I pretty much hate all languages that need an interpreter to run; so I coded Cortex with C#.
Deep Learning Neural Network Diagram
I also created the engine to be ultra scale-able (I think I’ve said that like 50x now). So given the Cortex core, you can decide what genre of game you want to develop, and if the capabilities for that particular game need to be enhanced more than what the core provides, you can use a customized plugin dedicated to that specific genre. The plugins are designed to dynamically load and integrate themselves along with the core. I accomplished all this by making the entire engine based on Deterministic Finite Automata
, a paradigm used for developing artificial intelligence software. So in a nutshell, the entire Cortex engine is one giant, scale-able, artificial intelligence program that can integrate with other AI plugins built in the same vein. Including deep learning back-propagation neural networks
and so on….if you think it, you can plug it into the engine!
Most importantly, I wanted the engine to be easy to use (I say that after blathering on about deep learning ). The biggest fights I’ve witnessed in the past two decades are between artists and programmers. I realized that you get a lot more bang for your buck if you make the engine so an artist can create something, plug it in, and test it themselves without ever having to involve a programmer. The entire engine is a state machine (multiple layers deep) and allows for every single aspect of the game to be independently tweaked without affecting any other aspect of the game. So if an artist decides he wants a character to be animated at 15 frames a second, tries it and it doesn’t seem fast enough, he can change the frame rate of that particular character without affecting anything else in that level / scene. The engine is so good at compartmentalization that multiple people can develop and test multiple levels in parallel and seamlessly merge them all together and never have fear that it won’t work. As a matter of fact, many different parts of Absolute Zero are being built in parallel.