A modern 2D game engine built from scratch in C++ with OpenGL 4.6.
Ember Engine is a lightweight, custom-built 2D game engine designed for learning and experimentation. It provides core functionality for building 2D games with sprite rendering, animations, and flexible game object systems.
- OpenGL 4.6 Rendering - Modern graphics pipeline with shader support
- Sprite Rendering - Efficient 2D sprite rendering with texture support
- Animation System - State machine-based animation system with transitions
- Game Object Components - Flexible component-based architecture
- Camera System - Smooth camera following and zoom controls
- Transform System - Position, rotation, and scale transformations
- Input Handling - Keyboard input via GLFW
- C++ - Core language
- OpenGL 4.6 - Graphics API
- GLFW - Window and input management
- Glad - OpenGL function loader
- GLM - Mathematics library for graphics
- stb_image - Image loading library
Ember Engine/
├── src/ # Source files
│ ├── main.cpp # Entry point
│ └── stb_image.cpp # Image loader implementation
├── include/ # Header files
│ ├── GameObject.h
│ ├── SpriteRenderer.h
│ ├── Animation.h
│ ├── Animator.h
│ ├── Camera.h
│ └── Transform.h
├── Ember Engine/ # Core engine components
│ ├── Animation.cpp
│ ├── Animator.cpp
│ └── SpriteRender.cpp
├── Libraries/ # Third-party libraries
│ ├── GLFW/
│ └── glm/
└── assets/ # Game assets (sprites, textures)
The engine currently demonstrates:
- Player character with animated idle states (up, down, left, right)
- Smooth animation transitions based on input
- Camera system that follows the player
- Basic game object rendering
- Delta time-based movement
- C++ compiler with C++17 support
- CMake (for building)
- OpenGL 4.6 compatible graphics card
# Clone the repository
git clone https://github.com/severmanolescu/Ember-Engine.git
cd Ember-Engine
# Build instructions coming soon- Physics system
- Collision detection
- Audio system
- Scene management
- Tilemap support
- Particle system
- Input manager
- Asset management system
- Editor/tooling support
This project is in early development. Features are being added incrementally as the engine evolves.
This project is open source and available for learning purposes.
Sever Manolescu
- GitHub: @severmanolescu
- LinkedIn: Sever Manolescu