Physgame to Mezzanine

 Misc.  Comments Off
Dec 032011
 

More than Two years in the making, and much progress has been made and much more progress will come. We having working 3d graphics and physics on Windows and Linux. The engine also currently has 3d sound support, multiple levels of physics detail, a fast xml parser, detailed reporting on collisions, partial serialization and deserialization of the game state, support for some kinds of pixel shaders, heaps of documentation, and much more.

There are a few thing that are still in development: complete serialization support, paged loading of physics and graphics data, fixing Mac OS X support, Lua scripting… It could go on long enough to write a Todo Page about it.

In addition to our progress almost every day progress almost every day, now we have a decent name.

What is “Mezzanine“?

Wikipedia Says:

“a mezzanine or entresol is an intermediate floor between main floors of a building, and therefore typically not counted among the overall floors”

Nicholas Baker wrote a whole novel about his time between real tasks. In finance and real estate it is a funding source or property that is between secured gauranteed money and property, and stuff that looks like debt. It is a snazzy restaurant in Virginia that is between the between the ocean and the farms while it is wedged between bigger buildings. It is the tar that holds blacktop together.

Our game engine is like all these things, it is between so many things. It is pulling in the best of breed functionality from many libraries that provide needed game functionality, unifying them in a easier to use package. We know lines of code aren’t the best metric of size, but they will do for this simple comparison. Ogre3d the astounding 3d graphics engine we use is 4.5 million lines of codes that have nothing to do with sound or physics. Bullet physics is 500,000 lines of code that have little to do with graphics, sound or loading files. SDL is used for operating system integration and user input while adding another 149,000 lines of code (including its very sophisticated build system). PugiXML, cAudio, Ogg, Vorbis, Lua and OpenAL are smaller, but together bring in another 132,000 lines of codes which each do their specific thing but aren’t unified in any way. The Mezzanine engine is just 100,000 lines, and primarily integrates these into a simple seamless library. We are a mezzanine in gaming software.

We fill the cracks that are needed to go from software developers to game developers. The engine fits between the game and the platform providing a single API for high performance gaming on each platform the engine supports.

Why be a Mezzanine?

A Bridge in the Woods

A bridge like our Mezzanine is important because it connects the unconnected.

No one else has created a maintainable integration of all the features needed for high quality way. Just to select this group of libraries, that almost universally work on every gaming platform, we had to become experts. All of the tools we integrate work on almost almost all of these: Windows, Linux, MacOS X, Wii, Xbox, PS3, iPad, Android, a web browser, and really obscure platforms you may not have heard of like Open Pandora. Where our tools and software aren’t clearly supported we have workable plan for integration or replacements, preventing us and other users of the Mezzanine engine from being limited by someone else’s decisions.

Many others have created great tools that integrate a few of these or other libraries in similar projects, it would be silly to think no one else came along first. Those that did a good job hide their work’s source code and charge large fees; some literally charge millions of dollars to use their work on one game. Some aimed to just integrate a few of the feature that we wanted, and frequently didn’t plan for further building or expansion onto other platforms. Then there are the rare few that seemed to get the pie and share it, but mostly these projects failed to have long term sustainability. These groups mostly failed to think about updating code they had integrated and destroyed important logical separations, so they could release code a day sooner. In the end it costs them the effort reduplicating all their work every release of a tool they use, so they remain without important updates and security fixes. I refuse to mudsling and deride others without being able to say it to their faces, but we haven’t made these same mistakes.

A Plan to Build Mezzanine.

Certainly we have made msitakes, the goal is to get the big things right because changing them is harder or even impossible in the future. Spelling mistakes are simple to correct, but the architecture is what everything else is built on. Development methodologies that rely on rapid refactoring are great for many projects, but when entire other projects are relying on the foundation laid now, you can’t mess up the big stuff. Fortunately, we can plan now.

There things that are simple to plan for if you know they are coming, like new releases of software you use. Keeping logical boundaries and using them cleverly and careful helps here. This means that others can simply swap in a new versions of a library and immediately benefit from it. So if one platform provides hardware acceleration, needs debugging symbols, or you just want to customize something specific a piece can be swapped out to support this. These logical barriers also ensure there is never a need for the games that use the Mezzanine to call directly upon any of the internal libraries it uses. This way the engine functionality can be implemented in the best way for the platform and build tools.

Internally there is structure of managers, which are objects that manage specific functionality. Having seen other designs we know what kinds of pitfalls even simple design decision can have. So we have carefully chosen what to make managers for based on what a game could need. The managers are where we integrate much of different functionality and through these we present a unified API for game developers.

We have more plans for future integration and change. We have plans for all the features that one would want for high performance physics enabled 3d gaming. It is still a work in progress and that is our greatest disadvantage. So we are hard at work rounding off our features to get our engine to a production ready state, though any extra hands would be welcome.

Sep 302011
 
Community Outreach

We have recently started to try and make the presence of BlackTopp Studios and it’s engine, the Physgame Engine better known throughout the community.  If you are joining us or checking us out for the first time feel free to have a look around and if you have any questions please contact us or ask [...]

Aug 072011
 
API Documentation Update

We have uploaded a new version of the Physgame API Documentation. We have converted the complete pugixml manual to correctly reference items in our API. The look and feel was changed to more closely match the webpage. Please let us know if you have any questions or concerns about the new version of the documentation.

Vaguely Playable

 Progress  Comments Off
Jun 172011
 
Vaguely Playable

We have made a great deal of incremental progress and started plans for some bigger changes. John is busy in Canada building up the User Interface System to be more robust, easier to use and have a more complete set of widgets. Gary and Nastasja have created enough art and 3d models to complete four [...]

Mar 272011
 
New Documentation Available

We have uploaded a new version of the Physgame API Documentation. This is a great overview of our current progress if you are interested in making video games with the Physgame Engine. A significant effort has been made to keep it up to date with the actual engine functionality, but not as much effort was [...]

Mar 182011
 
Progress In the New Year

Since the new year we have been adding features and pressing for more performance in our game engine. Every member of the team something good to show. Kirk has the Mac port of the Physgame Engine back in a demo worthy state. John has added support for changing graphics configuration at run-time, added user interface [...]

Dec 062010
 
User Interface, A Tough Problem

We have been busy coding and creating for the past month or so. John B. has begun laying the framework for in game widgets and the user interface. Gary S. has some new art bits for Catch! levels. While Joe T. has revised the build system to work using a more platform independent design. A [...]

 
25,000 Lines, Art a Game Plan and a Whale

Still more steady progress to be made this update. The artist are getting close to having the levels we need for our steam submission. Progress on the code just keeps coming. Every has done their own piece. Dave and Gary have each assembled the 3d parts for several levels. John has coded a large number [...]

Aug 292010
 
Getting Rid of the Trash

We have had tons of progress since our last blog post. On the artwork side of the game our artists have made progress on some of the art for a stand alone levels and some campaign levels. Some of the models that have has been worked on include a bottle, and a knife set. Also [...]

Jul 262010
 
Mac Port and Multimedia

Tons of progress this week. Too much to detail everything that everyone did. But I think I can mention everyone at least Once. This weeks shining moment of success seems to be having a working copy of the game in Mac OS X. We also have some solid progress on our level for “Catch!”. John [...]

Follow BlackTopp Studios

Translate this Page

© 2010 BlackTopp Studios Inc Suffusion theme by Sayontan Sinha