About Me

Hello and welcome to my blog! I make libraries and tools for game developers. Most of my time is spent working on the next version of MonoGame.Extended. Every so often I get around to making something else (but it’s usually a tool related to MonoGame in some way). I created this blog so that I’d have a place to write about what I’ve been working on each week (and because Patreon is terrible as a blogging platform).

MonoGame on .NET Core

Getting MonoGame up and running on .NET core has never been easier thanks to the great work done by cra0zy in his MonoGame fork. I know what you’re thinking. Is it stable? Well, I’ve been using MonoGame on .NET core for quite some time now in the MonoGame.Extended demos and as far as I can tell, it’s perfectly fine. Motivation I wrote this guide because everytime I start a new MonoGame project I want to get up and running quickly without having to think about it too much.

List of XNA classes grouped by DLL

This is a complete list of public types in XNA grouped and sorted by DLL and namespace. Updated 2019-01-05 I originally published this list way back in 2015. At the time the URL’s linked to the old Microsoft XNA documentation. That no longer exists, so I’ve updated the links to point to MonoGame’s class library reference instead. Microsoft.Xna.Framework.dll Namespace: Microsoft.Xna.Framework BoundingBox BoundingFrustum BoundingSphere Color ContainmentType Curve CurveContinuity CurveKey CurveKeyCollection CurveLoopType CurveTangent DisplayOrientation FrameworkDispatcher MathHelper Matrix Plane PlaneIntersectionType PlayerIndex Point Quaternion Ray Rectangle TitleContainer Vector2 Vector3 Vector4 Namespace: Microsoft.

Redoing the Entity Component System

A few people have noticed that I’m currently giving the Entity Component System (ECS) a complete makeover. When people hear about this they tend to have a pretty obvious reaction. Why? The ECS in MonoGame.Extended as you know it today first appeared in April 2017. At the time, the goal was to get some sort of ECS into Extended by porting an existing library so that we didn’t have to write the whole thing from scratch.

Improved Tweening in MonoGame.Extended

Have you ever made your game juicy? If so, you’ll know that tweening is at the heart of great juice. Basic tweening is a pretty simple concept. You’ll find it in just about every game you’ve ever played. Often, you’ll implement it in your game without really thinking about it. Sometimes that’s enough. On the other hand, as you start polishing your game you’ll find yourself wanting to tween lots of things.

Screen Transitions in MonoGame.Extended

This week I worked on simplifying the screen management system in MonoGame.Extended 2.0. The screen management system in version 1 was kinda complicated and a lot of people found it difficult to use. So this time around I decided to keep it super simple. Basic Screens Starting with the base screen class, it’ll feel familiar because the methods match the Game class and behave as you’d expect. public abstract class Screen : IDisposable { public ScreenManager ScreenManager { get; internal set; } public virtual void Dispose() { } public virtual void Initialize() { } public virtual void LoadContent() { } public virtual void UnloadContent() { } public abstract void Update(GameTime gameTime); public abstract void Draw(GameTime gameTime); } Game Screens A common pattern when creating new screens is to pass in an instance of your Game class to the constructor.

A nice clean MonoGame Game class

Whenever I start a new MonoGame project the first thing I like to do is clean up the automatically generated Game1.cs file. It can be quite repetitive after you’ve done this a few times so instead of continuing to do it over and over here it is for easy copy and paste. public class MainGame : Game { private GraphicsDeviceManager _graphicsDeviceManager; private SpriteBatch _spriteBatch; public MainGame() { _graphicsDeviceManager = new GraphicsDeviceManager(this); Content.

Creating custom content importers for the MonoGame Pipeline

A short while ago MonoGame released a Pipeline tool to replace the XNA content pipeline process. The Pipeline tool is reasonably straightforward to use for standard content (textures, sounds, etc) once you get used to it. At some point though, you may want to write your own custom importers, processors, readers and writers for your own or 3rd party content. In this tutorial we’ll create a simple content importer, processor, reader and writer for Bitmap Fonts created with the BMFont tool and use it with MonoGame’s Pipeline tool.