I found some time to write a post, so here it is!
There is no better way to begin than start by the beginning : how did I organize the project and what library did I used?
Well, It isn’t a surprise if I tell you I’m using SFML as the base for the software. What is SFML and why did I used it?
I partially answered in the Project Page. SFML is a multimedia library that allow a fine and easy use of 2D features and primitives through OpenGL. It allow to draw 2D stuff with the benefice of hardware acceleration. But it is not all it can do. SFML give also access to nice shaders effect, True Type Fonts, windowing, input management, sound and network features.
The main point of SFML is that it is Simple (first ‘S’ for SFML). It is designed to be used by beginners as by more advanced programmers, and it really suits me.
SFML is the base. It allow to have access to low-level features. But I need something more efficient and complicated to create a good quality game. No existing engine proposed enough 2D features for my needs, so I need to create my own engine. I started Excellence Engine (or ExEngine) as a supplemental layer, a level above SFML. I gave it many useful things, as features to manage my game screens, game resources (images, sounds, …), my graphical assets (animations, shaders, rendering), display operation (resolution, aspect ratio) efficiently, in addition with math and physics functions, GUI support and debug tools. Well, the engine is still in “Work in progress” state, as I continue to add stuff I’ll need later in the game development. I’ll write some specific posts about ExEngine later.
The benefits of writing ExEngine is to prepare the future of the game following Excellence, having smaller compilation time and smaller bug fixes to download, but also to easily do a kind of bridge between the game and its editor; because it is nearly impossible to create a good game without a proper level editor.
Excellence Editor (or ExEd) will allow me to manage my resources, my objects and my level with some standardized stuff thanks to the ExEngine. I mean, nearly all classes of ExEngine will have their proper editor in ExEd. I use Qt 4.7 for the editor GUI. I could have used another GUI library as wxWidget, but I’m particularly interested by the Graphics View module de Qt to create good-looking editors, and most of all, a fast and intuitive level editor.
At last, here is a little drawing of the global architecture of the Excellence project :