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.
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:
- 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.
- 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.
- 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!
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).
Here’s a quick screenshot of the current state of the game engine:
Look forward to a series of posts incoming about various challenges and solutions I find while developing this engine!