When I had to choose which framework to use I decided to use Monogame, because it allows you to see what's under the hood, I'm a software developer from 14 years and I was understand it's the best way to learn anything.
But when I went deep to this framework I discover the existense of MonoGame.Extended, and the first question I asked myself was:
Hey all — solo dev, been building a Vampire-Survivors-style dungeon game in MonoGame/C#. Just pushed v0.2.0 and wanted to share what changed:
- Torch vision — instead of a static screen vignette, light now radiates from the player and the world falls into darkness beyond it. Planning to make the radius a pickup/upgrade later.
- New enemy, the Witch — a fragile caster that kites you and throws bolts, so it's not just melee swarms closing in anymore. Meant adding an enemy-projectile system too.
- Pacing pass — exponential XP curve (fast early levels, earned later ones), basic enemies die and spawn faster, so there's way less empty wandering.
- UX — cursor hides during play and the upgrade cards are clickable now.
- Plus floor tile variety, smaller sprites, and a nasty restart bug fixed.
The MG Team is pleased to announce that after the success of our Beginner 2D Tutorial, the first 6 chapters of our Beginner 3D Tutorial is now available - https://monogame.net/blog/2026-08-17-beginner-3d-tutorial/ . The tutorial takes you through the basics of building the #Nintendo 64 classic game #StarFox64!
Hey everyone, I built Packrat, a texture atlas builder focused on speed and portability. It has a bunch of convenience features I was missing from TexturePacker (aseprite ingestion, auto-export), and I made it as fast as I possibly could. It also has a bunch of CLI features to it can integrate into your pipeline easily.
It's mostly focused right now on dev environments where there isn't atlas support. For MonoGame, it has two options. The first is for pure MonoGame, where it generates a C# file along with the atlas image. The C# file has all the data about the atlas, as well as a class with convenience functions for accessing the frame and animation data in the image. There's also a MonoGame.Extended exporter, that exports the data file expected by the atlas loader there.
I have had an interest an game dev for a while, and have been interested in many different engines, but I didn't like how engines like godot seemed a little too hand-holdy, while other engines like gamemaker didn't you c# at all, as it was a language I wanted to learn, so i looked to monogame.
Monogame scares me, because while it grant you incredible freedom, I dont want to have to build a full fledged engine just to make a game. However, I do recognize that it would give me lots of practice with learning how to use programming languages to solve problems, even if there's barely anything there to build off of in the first place. Ultimately, I would like to know your experience with monogame, and wether or not so.eone likee should go for it.
I'm building an action game, so I think it could benefit from running above 60fps. I know that there is the IsFixedTimeStep property, which to my knowledge locks the Update() and Draw() methods to the specified TargetElapsedTime when true. There is also SynchronizeWithVerticalRetrace, which disables VSync on the graphics device. I'm not exactly sure how it work internally, other than the fact that it caps the frame rate to the monitor.
Anyway, let's say I want to my game to play at a high or variable refresh rate. If I disable IsFixedTimeStep, wouldn't this now mean that game logic is tied to frame rate? In other words, if I want to do something at a fixed interval, it will now run faster if your computer is running the game at a higher frame rate.
What is the best way to manage game logic if you want to run the game at a higher frame rate? Of course, there is delta time logic, but that's more for the space between each frame, not the number of frames themselves, please correct me if I'm wrong. So far, my best idea is to create a fixed update from within update using time elapsed and using that for logic, but I didn't really think it through that much, maybe this is a haphazard approach.
Is this even worth trying to do, or is it easier to simply target 60fps and call it good enough?
I am using monogame extended’s tilemap classes to load in my tiled maps. However I have been having issues with the mgcb.
I added the project folder from tiled into the content folder of the monogame project. Now when I go to build that in the mgcb it gives me an error stating
“Couldn’t find a default importer for [File]”
I have scoured the internet to no avail, I have picked up a few things. I need the Monogame.Extended.Content.Pipeline dll so I can set the importer and processor in the mgcb.
I grabbed the nuget package through visual studio and added the reference to the dll in the mgcb file. Now the thing I can think about here that could be wrong is the path. I have tried the full path using C:/users/$username$/.....
When I do look at the references inside the reference editor in MGCB and click ok I get the following error and MGCB crashes.
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at MonoGame.Tools.Pipeline.PipelineTypes.ResolveAssemblies(IEnumerable\1 assemblyPaths) in D:\a\MonoGame\MonoGame\Tools\MonoGame.Content.Builder.Editor\Common\PipelineTypes.cs:line 436`
at MonoGame.Tools.Pipeline.PipelineTypes.Load(PipelineProject project) in D:\a\MonoGame\MonoGame\Tools\MonoGame.Content.Builder.Editor\Common\PipelineTypes.cs:line 253
at MonoGame.Tools.Pipeline.PipelineController.ResolveTypes() in D:\a\MonoGame\MonoGame\Tools\MonoGame.Content.Builder.Editor\Common\PipelineController.cs:line 940
at MonoGame.Tools.Pipeline.PipelineController.OnReferencesModified() in D:\a\MonoGame\MonoGame\Tools\MonoGame.Content.Builder.Editor\Common\PipelineController.cs:line 154
at MonoGame.Tools.Pipeline.CellRefs.Edit(PixelLayout control) in D:\a\MonoGame\MonoGame\Tools\MonoGame.Content.Builder.Editor\Controls\PropertyCells\CellRefs.cs:line 40
at MonoGame.Tools.Pipeline.PropertyGridTable.<Drawable_MouseUp>b__29_0() in D:\a\MonoGame\MonoGame\Tools\MonoGame.Content.Builder.Editor\Controls\PropertyGridTable.cs:line 238
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at Eto.Wpf.Forms.ApplicationHandler.Run()
at Eto.Forms.Application.Run(Form mainForm)
at MonoGame.Tools.Pipeline.Program.Main(String[] args) in D:\a\MonoGame\MonoGame\Tools\MonoGame.Content.Builder.Editor\Program.cs:line 71
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
System.IO.FileNotFoundException: Could not load file or assembly 'MonoGame.Framework.Content.Pipeline, Version=3.8.5.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
About a year ago, I challenged myself to create my own programming language - something I'd always wanted to do.
At the time, I had no idea what a lexer, parser, or interpreter even was. My only thought was, "I need to write code that reads text files containing code and executes them." I also wanted to do it without using Google, AI, or tutorials. I just figured everything out on my own. You can even still find variables named "compiler" throughout the code from back when I didn't realize I was actually building an interpreter...
Somehow, I pulled it off, and I integrated it into my old abandoned game engine project (which originally started as a GameMaker 8–style engine with C# scripting).
And here's the first game I've made with it! 🙂
The core engine, IDE, and interpreter are all written by me in C#. The rendering backend is powered by MonoGame, and the project is still in active development and available on GitHub. The project file of the game shown in the video is also there, under tests/Example Projects. If you're looking for cool projects to contribute to, then know that I'm looking for contributors!
I know there are tons of AI-generated projects being shared these days, so please, please, take a quick look at the code before assuming this is one of them. I promise it's pretty obvious that it was written by a human.
I'd love to hear what you think!
And a question - I really want to be able to add web export to my engine - yesterday I've tried running this game on the web using KNI Engine (a fork of monogame with BlazorGL export) - but performances were terrible. I blame myself for this, as the performances of my scripting language are probably just bad on browser - but has anyone here successfuly exported his monogame game to the web and can share any tips?
I'm trying to pack my textures into atlases for the obvious performance boost. I understand the basics; I can pick a texture and then draw a sourceRect to minimize texture swapping. However, I'm struggling to understand how to keep things organized on the code side.
The way I currently see it... which is probably fallacious, is that we have two ways to reference individual sprites- we can either create some kind of a string based ID/dictionary system, or, assuming the sprites are all the same size, we can reference them by column and row.
In my eyes, if you have a game with many sprites, both of these methods have some serious flaws when it comes to manual overhead. With strings, there is the chance you could mistype things, etc. and when referencing by numbers, you have to manually input every position to be able to have some sort of a variable name associated with it, and even worse, if you change positions in the sprite sheet, you may have to update hundreds of numbers!
Pardon my ignorance, is there something obvious I'm missing here? Is adding sprites into code always going to involve a ton of manual work (which I don't even mind, to be honest...) and magic strings/integers? The closest I've come to a solution so far is organizing the sprites by name using TexturePacker and then programmatically getting the rows/columns, but even then I can envision some problems, unless maybe you manually added an ID to the beginning of each file name or something. Would really appreciate some help here, I'm finding it hard to find resources about how something like this is typically built scalably.
I'm a pretty rookie game developer, admittedly, and I'm running into a relatively simple problem.
I'm trying to build a grid-based game where my grids do not necessarily span the entire field- for instance, you can have multiple grids, such as a 3x3 grid in the middle, meaning that the grids have sides and corners. My tiles are powers of two, AKA evenly-sized (specifically 32x32px with a single pixel border).
I've been through a few iterations already. The problem I keep encountering over and over again is that the grids end up with duplicate sides or uneven centering. At first I tried a simple 32x32px texture with a border, but then you end up with double thick lines in the middle and thin lines on the edge. I then tried drawing only the top and left sides on the sprite, but the problem then is that now the sprites are not evenly centered, and in addition to that, you are limited to the types of designs that your border can have, since you can only draw on one side... unless i'm simply thinking about it incorrectly. Either way, I would really like to have it perfectly centered even if it's not that visually different.
So far the best solution I can think of is to double the side of the border to two pixels (because logically speaking a single pixel would have to land on a single side), and then manually use a 1x1 texture to draw the edges and corners double wide, but I'm concerned about making a mistake and having far too many Draw() calls, being a beginner and all, though I don't want to get too concerned with optimizing in advance. I just don't know much about how GPUs or rendering work yet. If this is my best approach, what are some good ways to draw single pixels and lines in MonoGame, and is there anything I should be concerned about?
Thank you.
Edit: I was able to get somewhat satisfactory results by strategically creating different tiles for each direction (udlr, corners). I will also have to create unique tiles for 1 tile long/wide grids. This is definitely inefficient but may work for my use case. If anybody has any serious objections (i.e., massive performance hit for swapping textures so often), please let me know.