The story of building my own game engine ๐Ÿ› ๏ธ๐Ÿงฑ
avatar
Posted by Daniel Brendel
5 months ago
I've always been intrigued on creating my own game engine. Usually I would create a game in C++ from scratch, but I also considered it would be cool to have some base to use, in order to progress faster when developing a game.

So, eventually Casual Game Engine was born.

Of course I wanted to write it in C++, but I also wanted the possibility to use scripting to write your actual game. At least for the most part, so the engine should be modifiable, too.

I already had experience using AngelScript, and thus I decided to use it as the game scripting language. Of course there is Lua and others, but I never really liked the syntax. It's a matter of taste after all. 

The possibilities offering game scripting are straight forward:
  • No need to re-compile on every change
  • Simply restart your game to see the changes
  • Work with a solid API and structure for faster progress
  • Increasing familiarity, which helps for more games after

screenshot A sample game created with Casual Game Engine
By default the game engine is dedicated to top-down 2D shooter games. In the end, you can build other things (as long as they are 2D), too, but the base engine is meant for these mentioned type of games. As a user of the game engine, you basically have to take care of:
  • Your entity script files
  • Resources (graphics, sounds, properties)
  • Localization (if desired)
  • Engine modifications (optional, if required)
Most work in terms of defining your game is done by implementing game entities. These entities are class implementations of the IScriptedEntity interface.

class CMyGameEntity : IScriptedEntity { Vector m_vecPos; Vector m_vecSize; Model m_oModel; SpriteHandle m_hSprite; bool m_bRemove; CMyGameEntity() { } //Interface implementations go here }

The cool thing is that the engine supports both standalone games as well as being integrated with Steam.
screenshot The default game menu
Now what are some of the key features of the engine?
  • ๐Ÿงฉ Entity scripting
  • ๐Ÿ“ฆ Resource management
  • ๐ŸŽฎ Controls binding
  • ๐Ÿ’พ Save/load game states
  • ๐ŸŒ Localization
  • ๐Ÿ–ฅ๏ธ In-Game GUI
  • ๐Ÿ—บ๏ธ Map scripting
  • โš™๏ธ Configs & Properties
  • ๐Ÿงช Mods integration
  • ๐Ÿš€ Steam integration
Please note that the game is dedicated to developers who prefer coding instead of visual designing. This is how game development used to be in the past and to me this provides a great nostalgic flavor. Not to mention that I had a tremendous learning opportunity while developing the game engine. Get the game engine: https://store.steampowered.com/app/1725730/Casual_Game_Engine/ Documentation: https://casual-game-engine.github.io/ Games created using the engine: https://store.steampowered.com/app/1807240/Casual_Pixel_Warrior/ https://store.steampowered.com/app/1858860/Solitarius/
Imprint
© 2025 by Daniel Brendel

Scientia potentia est

Visitors: 12.5K