Nomad Game Engine : Part 1 — Why?

Because I’m loco

This post is part of a series where I’m documenting my experience building an ECS game engine from scratch. Check out the homepage for this project for more posts, information, and source code.

This is the first of a series of blog posts that I’ll be dedicating to my efforts to make a game engine (and hopefully a game) in C++ from scratch.

I’m crazy


Before starting to actually talk about the details of the game engine, I want to write this blog post as a disclaimer. I’m aware that what I’m trying to learn is very difficult and will likely not be finished. I’m taking this project as a learning exercise, hoping that it will eventually be finished but not expecting it to be.

There are some important skills I hope to develop by working on this project:

  1. C++
    There are a bunch of great reasons that I want to become more proficient at C++. The first one is that up until now the language I’ve been most comfortable with is Javascript. While Javascript is great, it abstracts away a lot of the more complex programming concepts that I’d like to be more comfortable with (Memory Management, Typing, Inheritance). By becoming proficient at C++, I’d be able to use it for interviews and be confident manipulating data at a low level.
  2. Game development experience
    I’ve played video games for pretty much my entire life, and I’ve always said that one of the jobs I want to try out is game development. The last game I developed was back in first year, so I feel like it’s time to flex all of the development skills I’ve learned since then and see if I can pull something more complex and technically impressive off.
  3. Cool programming patterns
    Because game engines are required to be performant, they employ many interesting patterns that help eke out extra performance during game runtime.
  4. Even cooler algorithms
    Quadtrees, A* pathfinding, procedural generation, lighting: all of these require really cool math and algorithms that will be really fun to learn!

Implementation

I’m going to be making a game engine employing ECS(Entity Component System) methodology. Component based design is the direction that most game development has been moving in the past couple years, with big commercial engines such as Unity and Artemis introducing them to the public. I’ll explain the theory behind it in the next blog post (or at least do my best to).

Current Progress

Here’s a quick screenshot of the current state of the game engine:

Sprites, Health, Animations are all functional (though not optimized)

Look forward to a series of posts incoming about various challenges and solutions I find while developing this engine!