Recently, I started making my own game engine written in C++. As of writing this, it has the following features.
Graphics:
- Graphics integrated using OpenGL
- Primarily 2D rendering with sprites
- Capable of rendering over 50000 textured sprites at well over 60 fps
- Text / font rendering supported using FreeType and FreeType-GL
- Supports "Layers" whereby multiple sprites can be rendered using the same shader and projection matrix
- Supports "Groups" whereby multiple sprites can be rendered under the same transformation. These can also be nested so that sprites can be rendered relative to one another
Audio:
- Audio integrated using GorrilaAudio
- Supports .WAV and .OGG formats
- Files can be Played, Paused, Stopped and Looped
Physics:
- Basic physics engine that can handle gravity, forces and collisions
- Supports Circlular Colliders and Axis Aligned Bounding Boxes
Actors & Components:
- Contains an Actor-Component model similar to Unity3D and UnrealEngine
- Components provide an interface into the engine's functionality like sprite rendering, audio & rigid body dynamics
- Actors contain a collection of components based on the functionality they require
- Supports the creation of custom components by the user as required
Data-Driven Developement:
- Supports definitions of Actors and Components via XML files which are loaded at runtime
- Support for XML is provided using TinyXML2
The complete source code is available at https://github.com/vbhartiya/customgameengine/tree/master/EngineCore/Source