Skip to content

Introducing Argo

A C++ Game Engine

What is Argo?

After many years of playing games created by other people, I decided to start looking at building my own. At first, I wanted to use Unity, Unreal, or Godot, but the more I thought about it, I decided that I could use this as an opportunity to improve my game development skills. The initial concept would have been written in C# but ultimately I decided this would give me an excellent opportunity to learn more C++ instead.

I wanted to not only understand the current state of game development but a lot of the reasons behind decisions other engines have made. This desire to understand the full process has lead me to attempting to learn how to go about building my own game engine and its component systems.

Why another game engine?

While there are many different game engines out there for any type of project a creator could imagine, I personally felt that to really understand all the core bits and what was really necessary from a game engine that I needed to build my own.

Status

This project is in early development and is missing many of the critical components of a modern game engine. This means that while I have begun work on some initial systems there is not much to show yet beyond some simple drawing and texturing of shapes.

This engine is built and maintained by a lone developer who is using this project to learn C++, because of this many aspects may not be best practices.

Planned Release Frequency

While I do enjoy working on this engine, I am not able to devote as much time to it as I would like, as such I am planning releases to occur in two phases.

  • The first phase will be a closed source binary / library only release. These builds will be seen as unstable and will likely have different APIs then the open source releases. My current goal is to do a closed source release about every month or two.
  • The second phase will be here as an open source freely available release. These builds will generally be more stable and will be less likely to change APIs from release to release. My goal for this release is about every three months.

Design Goals

For the first iteration, the current goal is to support building 2D narrative-driven / role-playing games. To support this goal, I will be building three separate systems:

  • The engine itself
  • An editor application
  • An example sandbox demo project to showcase the engine capabilities

What is coming next?

My current plan is to build out the component systems needed to build the first demos of the engine working. These first demos will include a simple game loop, input handling, and the ability to draw and change sprites.

There will also be some internal tools such as logging and error handlers as well as scripts for building and packaging demos, and running automated test suites.

Community Version View this project on GitHub