Software architecture

Hi folks.

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?

SFML

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.

Excellence Engine

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.

Excellence Editor

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 :

Excellence software architecture

Excellence software architecture

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s