Blog 2.1
Lost in a Myre of code
Thu 01 Sep 2011

This post is announcing my fork of the Myre project on Github.

Myre has a bit of a complicated history, it started off as the brainchild of my friend Thomas Gillen way back in the first year of university when we were discussing developing Myriad as a spare time project around university work, this explains the strange name - Myre is MYriad Rendering Engine. The clue is in the name there, Myre originally started off as a rendering engine for a strategy game, it rapidly grew to involve an entity system which is a convenient way to represent a scene graph for all parts of the game (not just the renderer) and it began to evolve from a simple rendering engine to something more akin to a game engine. At some point, Tom built MyreUI, a UI library built entirely in XNA, designed to work on both xbox and PC, that got thrown into the mix too and became the canonical way for us to define game UIs. Tom's final year project (Nb. 2 years after starting development of Myriad RENDERING engine) was to write a deferred renderer within the Myre framework, which is not quite complete but looks quite pretty and merely needs some optimisations and tidying up. Finally During development of our current game, both Tom and I wanted to develop out own physics engine for the game, based around the Myre entity system, we rapidly realised that although this would be a wonderful piece of code that would be delightful to work with it would also massively expand the scope of the project so we gave up on that.

All this boils down to Myre currently being a game engine for XNA which consists of 7 Parts:


  • Myre
    The base project which contains the core stuff the rest of the framework relies on

  • Myre.Debugging
    Some useful tools for debugging, including statistics trackers and a command engine for executing commands which can change in game things

  • Myre.Debugging.UI
    A UI wrapper around the command engine, which makes a command console appear in game when the ` key is pressed

  • Myre.Entities
    The most important part of Myre, this contains the entity system which is usually used to define almost every in game object

  • Myre.Graphics
    The rendering engine, which takes appropriately set up entities and pushes them through a rendering pipeline. The project contains enough bits of pipeline to implement a deferred renderer with no effort, but can easily be extended to add new things into the pipeline.

  • Myre.Physics
    A very incomplete physics engine, left in an odd state as it was half implemented by me and half by Tom, working to slightly different views of how it should be architectured.

  • Myre.Serialisation
    A system for (de)serialising entities

  • Myre.Statemanagement
    A system for managing gamestates (screens). Where Myre.Entities managed the in game architecture of a game, statemanagement does a similar thing for the out of gameplay flow through menus.

  • Myre.UI
    A UI library written entirely in XNA for PC and xbox

It may sound as if I'm painting a fairly negative picture above, but it's really not as bad as it sounds. Much of the Myre code has been battle hardended over time as both Tom and I have used it in lots of little side projects over the years. A lot of the code is in an odd state, because it's not so core to Myre and thus simply hasn't been used and developed as much. This is where this announcement comes in. Previously, I have deferred to Tom when it comes to any decisions about Myre, I have contributed a lot of code to the project, and discussed almost all major design decisions for the system with him, but have deferred to his decision in the end. No more! My games company, Placeholder Software, will be using Myre as the core engine for all games for the forseeable future, this means I now need a bit more control over the system. My fork will contain active development of Myre as it is done for Placeholder Software. Expect to see:


  • Bugfixes

  • Tidying up, including complete removal of useless features

  • Documentation

  • New Features

In roughly that order of priority.

Finally, before I sign off, I say this: If you're interested in XNA games development why not give Myre a try? I'd love to hear from you if you do, and will be more than happy to provide advice, guidance and maybe even a little coding help.

?? views
Subscribe
Atom
recent
Topics