๐ Game Engine - Day 0: Planning... and Project Files
So begins the vacation โ๏ธ
... and I have some time for my personal projects!
My name is Marcus and I'm a game developer professionally. C++ is the weapon of choice. I've been working for a little more than 3.5 years in the industry at Star Stable Entertainment ๐ and did my Master Thesis at Autodesk's game engine Stingray. So I have some experience, but the journey has just begun. Forever an apprentice at heart.
The Game Engine Project ๐ฎ
I'm really interesting in video game making. From everything from the nitty-gritty tech side to the more fluffy design aspects. But for this project the focus is on the game tech! Usually many people work in third-part engines or such which are pretty great today. However, for this project, I aim to create my own little 2D engine. It's definitely not going to be commercially viable in any way (or useful as a tool for that matter), but it's a good way to learn about how to structure software architecture and to hone those sweet, sweet C++ skills. I will use the game API SFML so I don't have to do everything from ground up.
The goal is to create a small game engine, or rather a game interface. I don't know the pure definition of what constitutes a game engine, but there should be a separation between core code and content. Each game will reuse the same core engine code. The project structure will look something like this:
- Core Engine
- Cool Game # 1
- Cool Game # 2
- Cool Game # 3
To begin with, the gameplay code will be written in C++ in it's own project. I have investigated using Lua for the gameplay, but it seems a bit messy to integrate the Lua debugger to Visual Studio. C++ will have to do for now... at least to begin with.
Planning on paper โ๏ธ
Ah yes. The first step. What to do? Where do you even start?
I started with writing down some ideas for some games I would like to create with the engine and then pick the smallest game with the least features. We don't want to have a too tough and specialized first project. So, after some consideration and many sticky notes, I chose to create a Flappy Bird-esque game as the first project. Because I'm a big fan of ostriches, the game shall henceforth be known as Flappy Struts. Because struts means ostrich in Swedish and sounds funny.
Hopefully my game will look something like this, with an ostrich twist.
Project Structure and Premake ๐
C++ can be really messy when it comes to integrating external API:s. Include directories, lib-files, dll:s. It can be a mess. Fortunately I've learned some Premake, which is relatively simple for generating solution files. After some struggle I managed to integrate SFML & the data-oriented Entity-Component System EnTT into my Visual Studio solution and generate a project file. More on those API:s later!
As little Anakin Skywalker screamed in The Phantom Menace: It's working! It's working!
Now We Start ๐
As the project files are set-up - it's time to get working for real!
See you in the next part! ๐ / Marcus