Pancake Engine

Pancake Engine is a basic 2D game engine in C++ that we developed with Nicolas Hiot and Virgil Pia during a student project in computer science.

The engine is not ready to make AAA games, but has basic features required to make simple ones. My work was to create the logic part of the engine that will use different libraries and make them work together. It’s like building the motherboard of a computer, and plug devices on it to add functionalities (we used Box2D as physics engine, SFML library as a graphic engine and inputs handler, ImGui framework to display debug information in-game, etc…). The logic part was greatly inspired by Unity, with a system of scenes, game objects and components. Virgil worked on adapting the Tiled editor to use it as Pancake Engine editor. We can create scenes, place objects and change their parameters. Nicolas also worked on using the Lua language as scripting language for the engine, and it works pretty well (more info about it here).


In the video above, you can see a short demo of a multiplayer game created in a few hours using the engine. You can also see how debug info are displayed.

The goal of the student project was only to create a simple game in 2D. But we wanted more, and we get a lot of fun doing this. We learned A LOT about what is a game engine, and how it is built. It is certainly one of the most complicated projects I worked on. I realized that engine programming was very interesting, but that I’m more into creating games, rather than creating tools to do it.

The GitHub repository is here !

And you ? Have you ever built a game engine ?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Up ↑

%d bloggers like this: