SFML Engine


About the SFML Engine

My SFML Engine is a lightweight C++ engine built with SFML (Simple and Fast Multimedia Library), implemented following the C++ Core Guidelines.
This Engine is built on the foundation of my Diji-Engine, using SFML over SDL. The goal is to deepen my understanding of programming, software architecture, game engine design and to improve development practices by exploring a new multimedia library. This engine is tailored for my use case, focusing on a more streamlined yet expandable system architecture with a cleaner pipeline and more robust internal systems than its predecessor.

Inspired by popular engines like Unity and Unreal Engine, this project incorporates event-driven programming and a modular component architecture designed for rapid iteration and clean code practices.

Built following the C++ Core Guidelines, the engine features a flexible component system amongst other systems that demonstrate my knowledge of modern C++ development and game development patterns.


Skills and Tools

  • C++ 20
  • SFML 3.0
  • Custom Engine Architecture
  • Event-Driven Programming
  • Component System Design
  • Template Metaprogramming
  • Performance Optimization
  • Resource Management
  • Input System Design
  • Scene Management
  • Game Loop Architecture
  • Programming Patterns

My Implementation

What I will present here is a fraction of what this project is about. I wrote an extensive README on the GitHub Page of this project which I encourage you to look at.

Newer Core Systems

  • Event System: Implemented a complete event-driven architecture inspired by Unreal Engine, allowing components to create, broadcast, and subscribe to events with template support for data passing
  • Advanced Input Manager: Built a sophisticated input system supporting HELD, PRESSED, and RELEASED states with O(1) command lookup using hash maps and template-based mouse/keyboard handling
  • Timer System: Created flexible timers to call functions or lambdas on a delay.
  • Scene Management: Advanced manager for scenes allowing automatic scene management with extra features like GameObject Spawning or GameObject finder.
  • Pipeline Optimization: Enhanced the engine pipeline with "Start", "OnDestroy", and "OnEnable" & "OnDisable" lifecycle methods for component management

While I used advanced C++ techniques including template metaprogramming, the engine served as both a learning tool and a showcase of my understanding of game engine architecture and game programming.


This project solidified my understanding of engine development, game programming and advanced C++ programming. If what you read so far peaked your interest I invite you to read the GitHub page of the project.