Mavra 2D

The Mavra2D Framework

Mavra2D is a lightweight, highly customizable open-source framework that can be used to develop 2D games or other applications using XNA.  Compatibility with MonoGame has been ensured so that you may distribute your games on a variety of platforms including, but not limited to, Windows, Linux, and Mac OSX.  Mavra2D enables developers to make full use of Tiled Map Editor by leveraging and converting TiledSharp objects to usable code.

Mavra2D is and always will remain a completely free, open-source project that is licensed under the GNU General Public License v3.  We gladly and appreciatively accept donations of any amount to help aid in maintenance, hosting, and continued development costs.  We plan to migrate the library to other technologies in the future.

This topic is used for comments, suggestions, and questions only.  More information and documentation regarding the framework can be found at http://mavra2d.net.

I’ll keep this updated. If anyone has any questions regarding this project, just leave them here and I’ll pass them on.

Mavra2D is still available for download. You can pm me or post here for support directly from me now. 🙂

So does this come with a sample game to learn from? I don’t know much of coding so a sample game would help.

So does this come with a sample game to learn from? I don’t know much of coding so a sample game would help.

Unfortunately I never had time to write an example of use; the site itself is unfinished too. By Christmas I hope to launch an updated version and finish all of the docs; ill be sure to include an example.

Is there honestly any market for open or closed source SP and/or MP game engines? I was pondering the scope of the market segment (and its demographics) id be working with if I decided to take this framework and make something fairly special with it (what most of you refer to as an “engine”).

It feels more than a little redundant when Unity has an amazing pipeline for 2D content. Would and better yet is the allure of Mirage and platforms like it simply “plug 'n play” without having to be overly involved (or at all) in writing your own algorithms/code?

The answer is pretty easy: specialized tools always have their niche. Look at RPG Maker. 🙂 But it has to be just that, specialized. A general framework like Mavra 2D is unlikely to ever be used since you’re right… other great "general purpose’ tools already exist.

Eclipse is popular because it’s not general purpose, it has a narrow scope of allowing people to create an online game. If Mavra is to suceed, it has to have a killer feature that existing engines don’t have.

The answer is pretty easy: specialized tools always have their niche. Look at RPG Maker. 🙂 But it has to be just that, specialized. A general framework like Mavra 2D is unlikely to ever be used since you’re right… other great "general purpose’ tools already exist.

Eclipse is popular because it’s not general purpose, it has a narrow scope of allowing people to create an online game. If Mavra is to suceed, it has to have a killer feature that existing engines don’t have.

Eclipse isn’t a challenge though (to me personally). As a developer, and I’m sure you feel the same way, its incredibly nice to have “bare metal” frameworks that you can leverage to create something like Mirage and that was my goal.

Perhaps I’ll just keep expanding Mavra and keep it updated alongside Mono.

Change Log for Pending Release (10/04/2014):

  • Added Physics.Collision namespace. Includes:

    • CollisionEventArgs
    • CollisionHandler
    • IPhysicsComponent2D
    • PhysicsBody2DBox
    • PhysicsBody2DCircle
  • Added Graphics namespace.  Includes:

    • IDrawableEntity

    • DrawableEntity

  • Added extension methods for List <t>in conjunction with List <iphysicscomponent2d>* List<iphysicscomponent2d>().PhysicsBody2DCircles();</iphysicscomponent2d>

    • List<iphysicscomponent2d>().PhysicsBody2DBoxes();</iphysicscomponent2d>
    • List<iphysicscomponent2d>().UpdatePhysicsComponentPositions(Vector2 newPosition);</iphysicscomponent2d></iphysicscomponent2d></t>
  • Fixed issue with LinkLabel’s CenterText property not properly aligning text with collision box.

The point of these additions is to offer direct physics support within DrawableEntity which game objects can inherit from.  DrawableEntity includes a List <iphysicscomponent2d>PhysicsComponents</iphysicscomponent2d> that stores physics objects.  Physics objects have their own ObjectTag (string, name of the object they belong to), position, and offset. This is all abstracted away and decoupled from game specific code.

DrawableEntity also contains a HandleCollision event that can be subscribed to and that is raised when a collision occurs. CollisionEventArgs returns an ObjectTag; it specifics the name given to the physics object that was collided with and is set at run time via a constructor. This provides the necessary utilities for each object to know what it collided with and for you, as the developer, to determine the appropriate action based on that information.

Change Log for Pending Release (10/05/2014):

  • Added Vector2Extensions.cs to Physics namespace, Includes:

    • Vector2 Orbit(Vector2 origin, float degrees)

The above function returns a translated Vector2 that creates an orbiting effect centered around the given origin at the specified degrees (converted using MathHelper.ToRadians) per call.

Example of Use:

var position = new Vector2(10, 15);
var origin = new Vector2(10, 10);

position = position.Orbit(origin, 1.5f);

Eclipse isn’t a challenge though (to me personally). As a developer, and I’m sure you feel the same way, its incredibly nice to have “bare metal” frameworks that you can leverage to create something like Mirage and that was my goal.

Eclipse is very easy to use, that’s why it does well. The language doesn’t matter to the developer, it only matters to the programmer.

Eclipse is very easy to use, that’s why it does well. The language doesn’t matter to the developer, it only matters to the programmer.

You’re drooling over semantics, Seth. Application Developer*

I can get a game screen and an object moving in that screen (state machine) in less than a minute, no joke. That means Mavra is easy to use, right?

I can get a game screen and an object moving in that screen (state machine) in less than a minute, no joke. That means Mavra is easy to use, right?

No, programmers don’t even need you to do that for them. Why would I use your code over my own? There’s no use. If I want to use an engine, it should be complementary and specific like Eclipse. Even an experienced programmer would step away, just look at Netgore. It didn’t make it nor will Mavra with that design mindset.

No, programmers don’t even need you to do that for them. Why would I use your code over my own? There’s no use. If I want to use an engine, it should be complementary and specific like Eclipse. Even an experienced programmer would step away, just look at Netgore. It didn’t make it nor will Mavra with that design mindset.

You just tried to refute the entire ideology behind open-source software, Unity, UDK, Frostbite, and every other “engine” in existence. Congratulations on your nomination for a Darwin award. 🙂

You just tried to refute the entire ideology behind open-source software. Congratulations on your nomination for a Darwin award. 🙂

No, Netgore is probably far better than Mavra. The problem is that the generic library is not of that much help, and limits the programmer typically in a not so good of way. When you make an engine specialized for a specific purpose, it allows the developers that want a game in that direction an easier starting point rather than a bunch of functions that they have to learn.

You can have a few programmers use your engine or a couple thousand developers. You make your mind up on that one, I wont.

Edited for pending release.

No, Netgore is probably far better than Mavra. The problem is that the generic library is not of that much help, and limits the programmer typically in a not so good of way. When you make an engine specialized for a specific purpose, it allows the developers that want a game in that direction an easier starting point rather than a bunch of functions that they have to learn.

You can have a few programmers use your engine or a couple thousand developers. You make your mind up on that one, I wont.

You can also have a few thousand “developers” think they know what they are doing when they do not. Developers come up with the ideas that us “few” programmers then have to design, create, test, fix, and every thing else. Developers only provide the inspiration, the programmers are what really bring games and other programs to life. In total I would say the ratios of game development is 60% programmers, 35% artists and 5% developers as without the other two your “developments” will NEVER come to fruition.

Log in to reply