Can the MonoGame Pipeline reverse Assets.XNB's?

Mainly useful for modders and if for some reason you didn’t backup your files… (Hint: Backup your files)

Even being able to reverse the .exe/.dll could be useful. I’m sure there’s a few ways to do that by now.

Technically you could in some circumstances, but generally information is lost in the processing of assets into platform-specific formats. For example, texture compression loses quality. Audio compression loses quality. Some parts of model meshes are baked down into simpler formats. These are just simple examples.

Assemblies can be decompiled using tools such as .Net Reflector or ILSpy. You won’t get the exact same code, and if an obfuscation tool was used, most of the decompiled code will look like garbage anyway.

Just like to add that almost any .NET assembly can deobfuscated using de4dot. Also another good free .NET decompiler is DotPeek.

You can make a modable system by:

  1. providing your contentprocessor dll
  2. making your own editor for modders,
  3. including monogame’s (2MGFX ?, MGCB, etc) files to enable modders to build content, by using these tools under the hood with their command line, avoiding the reverse engineering process.

I’m working on a game where we want people to be able to modify content and other people to use that modified content. Our goal was to make this multiplatform (I draw an image on iOS, save it, and it can be used as a Texture on Android/PC etc). We ended up creating a wrapper around all the MonoGame types that store the data in a uniform way across all platforms.