MezzanineEngine Dec 2, 2011

Mezzanine

The Mezzanine Engine isn't really an engine. It is glue holding other code and libraries together. It is a series of other open source libraries (sometimes less user friendly, and almost always more sophistciated) that are held together in a single, hopefully, unchanging API. Others have attempted to do things like this before. Usually simple mistakes are made along the way that have huge negative impacts later in the design. A common mistake code is to copy and paste from open source projects with no plans for maintainability. This means that those projects get all the features and bugs from when they copied, without updates, new features and bugfixes since they started integrating the code. We too have copy and pasted, however we are keeping it up to date, and have a plan for upgrading each component we have brought in.

This is no simple way to guarantee access to the most up to date libraries, this means there will meaningful work on integration. Many linux distributions try to keep the most up to date shared libraries around, but what about when they don't ship what you need, or ship a broken copy or an older library. What about Windows and Mac OS X which make no attempt to keep these kinds of software up to date. What if you do manage to get and stay up to date, then you still have to work on a confusing compiler and linker options, Code::Blocks or Visual Studio aren't going to set that up for you. The Mezzanine Engine project depends on a dozen or more libaries, so would your project if it had high performance 3d graphics, easy to use 3d physics integrated with the graphics and 3d positional audio ready to run on Windows, Linux and Mac OS X. We are figuring it out once, getting it right ( if we aren't, tell us and we will fix it ), so it doesn't need to be done again and again, for each game made.

This is still in heavy development and is not in usable condition for all systems. Currently the synchronization of 3d graphics and physics works great. But, some of the more advanced features of both physics and graphics to do not yet work. There are a number of other features that are in varied states of development.

If we do our jobs right this will save time and effort making, updating and porting games between a variety of platforms. If you link only against this library, not a single line of your standard compliant C++ code should need to change between platforms. At this early stage we are proving the concept with "Catch!" our first sample game. It Currently runs on Linux, Windows and Mac OS X with an Identical codebase. When we are done with "Catch!" We want it to have one codebase (with no messy #IFDEFs in game code for compatibility), and downloadable in the Iphone app store, in the Android Marketplace, on the PS3, Wii, downloadable on Steam, and in a variety of linux repositories.

To get the latest news on development checkout: http://www.blacktoppstudios.com

Here we will detail the engine structure and different classes and datatypes, but some of these need an update.

Structure

Main Loop Flow

World - It integrates everything

Events - Handling messages, event and interupts from the outisde

Actor Container - Keeping track of our in game objects

Data Types

Compound Data Type

Mezzanine::ColourValue

MetaCode - A unit of user input

Mezzanine::Plane

Mezzanine::Quaternion

Mezzanine::Ray

Mezzanine::Transform

Mezzanine::Vector2

Mezzanine::Vector3

Mezzanine::Vector3WActor

Simple Data Types

Mezzanine::Character

Mezzanine::Integer

Mezzanine::Real

Mezzanine::String

Mezzanine::Whole

There are also a variety of enumerations. Aspect Ratio...
Todo:
Fill out the Simple Data Types with all the enumerations.

Sophisticated Systems

Actors - Items in the world

Mezzanine::EventBase

Mezzanine::GraphicsManager

Mezzanine::XML Manual

Serialization

Licensing Information

Mezzanine GNU Public License 3

XML MIT License

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator