The KISS Game Engine.

Main
Parallelism
Runtime Types
Memory Management
Graphics (in process)
With team sizes skyrocketing and big companies being what they are it seems increasingly unlikely that I'll get to design and build a complete game engine ground up again at work. So I figured I'd build one here in my "spare time".

What is KISS

Keep It Simple Stupid
It's the philosophy behind the engine that I'll describe and build here, a lot of the design will be loosely based on engines I've built for N64 and Xbox at previous jobs. The idea isn't to build the worlds greatest all singing all dancing system to solve a problem, it's not about solving problems that might exist, it's about building simple independent components that can be mixed and matched together to solve the problem you face right now. In some cases I'll describe and possibly implement various solutions, although there are plenty of "wrong" ways to do things there is no single "right" way. The "right" solution is dictated by the game your building and the subset of problems you need to solve.

I will build the components here with parallelism/multithreading in mind, since I think it's an interesting constraint. This will necessarily make things more complex than a simple none threaded solution.

What is a game engine

This is a surprisingly difficult question to answer, in terms of the original Quake or Unreal engines it was literally the original games and tools without the game code. That's not what I intend to build here. I'm going to be building a framework consisting of small separable components to do the grunt work of a game and possibly if I get extremely bored a simple toolset.

 

The General Approach

The easiest way to build a game engine is to build a game, and to look at the components we'll need to build as we need them. It'll also give us something of a simple test bed, to verify our ideas.

We'll be starting with our graphics engine, but before that we need to get some basic stuff out of the way.

 

Contact me