This is something I’ve been meaning to write for a while. It has been one of those things that I’ve been mostly writing for more so then writing about it, it seems. But finally I have a little bit of time to talk about it.
What is MNDCrp?
MNDCrp is a framework I’ve been working on for quite sometime. Currently it is a rather extension component-ised library written in AS3. It has also been written in such a way to ignore certain AS3 norms to be portable by code conversion to most object based languages, like Java, C# or C++. It also allows us to piece together a custom engine relatively quickly and is currently the core for several engines and extended frameworks we’re currently using at Redefinition Games.
Where did it all start?
It started when I got pissed off at my old framework and just wanted to write something in pure C using OpenGL as the Renderer. I ended up writing a really low level library that handled shaders, animation and other types of content. It had a Maya exporter and a content compiling pipeline written in C# for it as well to help get content into the environment.
I kind of just threw it together over a few days, and I really just wanted to build something from nothing after the design of my previous engine, which I had mention was pissing me off, become pretty much impossible to experiment in. The work on MNDCrp was basically an excuse to get away and just experiment with things that just had no room to come out in. To essentially just take all my ideas and dump them into a code. Hence the name, MNDCrp.
(Yes I do regret naming it that, but it has unfortunately just stuck)
It turned out pretty well. The whole experiment resulted in a better understanding of what I would consider as “common” and re-usable behaviour to create custom engines that utilize a framework. Although I never really ended up building a complete engine using it. It did lead me away from my old framework into a much better direction.
I eventually ended up porting some of the code to AS3 in a more object based form when I started to focus my attention more on Web Development using Flash. iOS at that time (not sure how it is now) I felt was more of a place for good developers to go and die then to make a successful business from. “There’s better places to start then in a mass grave” I think I remember saying.
I drew a lot inspiration from existing frameworks and engines I had used in the past when creating MNDCrp. I mainly built components that I found to intuitive to use and not just something that had that “tacked on for functionality” feel about it in existing frameworks.
I also spent a lot of time naming class objects and variables appropriately. This is something I consider to be pretty important when it comes to being able to work with a framework quickly and easily. Using the correct terminology and having a clear distinction between names of things is key. I’ve all to often used existing frameworks and engines that call objects obscure things that don’t make sense, or clearly indicate the purpose or function of an object and/or function. Then having to refer to documentation that’s either, non-existent or poorly explained. Its never fun.
The framework still has a lot of work to done with it. The more I work with it the more I revise it to be easy to use and usable in general. It’s taken a lot of time but it’s has slowly come together into something I hopefully intend to share in the near future.
Why not just release it for people to use and have it revised that way through feedback?
I often think about this and truth be told, we’re still exploring it’s possibilities at Redefinition Games. And we’d like to deliver something first that is awesome and a great showcase for the framework before we do. There are other reasons but that’s the most prominent one I can think of.
But yes, that’s part one of the MNDCrp framework.
Hopefully I’ll find some time to talk about the other part that goes with it, such as the tools and other libraries built of the same ideas. But until then, that’s all for now.