Monofoxe

image
Monofoxe is a full-featured, easy to use game engine based on Monogame and inspired by Game Maker. It makes developing and prototyping in Monogame way easier and faster.

A short list of features:

  • Graphics pipeline and automated batch\vertex buffer management.
  • Easy animation from sprite sheets.
  • Texture packing.
  • Sprite groups and dynamic graphics loading.
  • Input management.
  • Useful math for collisions and other game stuff.
  • Timers, alarms, cameras, state machines, tilemaps, foxes!
  • Coroutines.
  • FMOD audio support (As a standalone library).
  • Hybrid EC.
  • Scene system (with layers!).
  • Tiled maps support.
  • Enhanced content management via Nopipeline.

Download and read more: GitHub - Martenfur/Monofoxe: Foxes made Monogame easy.

We also have discord, if you have any questions: https://discord.gg/Q8c4jdDaaH

9 Likes

Dude. I really dig what youā€™re doing here. Great work.

I especially like the NoPipeline idea. Iā€™ve been toying with a similar idea for a while but Iā€™ve only done a bit of prototyping. Itā€™s great to see someone else agrees the Pipeline has a lot of room for improvement :wink:

Iā€™m curious why you use a mix of bitbucket and github to host your source code? Not a big deal, just wondering.

Oh and I love the logos and foxy theme youā€™ve got going on. Do you do the art yourself? Itā€™s a got a nice style to it. Just one suggestion though, I think you should post a screenshot of the demo in the README. It would go a long way I think.

I didnā€™t bother cloning the demo code because I donā€™t have hg installed but I took a look at the mockup.pdn file and even that would be a good screenshot to show off somewhere.

Sup.
Iā€™m currently figuring out whatā€™s actually better to work with ā€“ github, bitbucket, or something else. When I started out, github had no free private repos, so it was a definite no-go. And, welp, I wrote NoPipeline together with another guy (who actually did most of the coding), and he was very stubborn about hg and bitbucket.

All the art stuff is mine, yeah. Demo is not fully finished yet, tho. Iā€™ll set up proper readme after itā€™ll be done. Iā€™ve released the engine a bit early ā€“ there are no docs yet, or little code examples. Currently I am making at least some form of documentation, but it sure will take some time.

Yeah, cool man. I get it. Open source projects are like that (maybe all projects tbh). Thereā€™s always something else that needs to be done before itā€™s ā€œfinishedā€ and never enough time to do it. I think youā€™re on the right track though, release early and often.

Stuff like this is never finished. : - D
Like, I donā€™t have proper cross-platform setup yet, no mobile input support, no particle system, no physics system, etc, etc. At some point Iā€™ve realized that it will go on forever and was like ā€œscrew it, I am releasing todayā€.

Monofoxe Trello board is now public. If you want to contribute ā€“ there is always stuff to do. ; - )
Tasks under ā€œOpen for takingā€ category areā€¦ open for taking!

We have migrated to Github. New repo link: https://github.com/gnFur/Monofoxe/

Iā€™m currently updating the touch screen input component of my own libraries. Youā€™re welcome to them if you want. When theyā€™re finished Iā€™ll find a way to get you the code. I took a look at your code and our approaches are fairly different. It might be easier to let you take a look and decide if itā€™s something you want or not :slight_smile:

1 Like

Monofoxe v1.0.1.0 is here. Did lots of bugfixing, added some handy classes, added DirectX support, but most importantly ā€“ now there is a set of actual demos, which showcase most of the engineā€™s features.
Demos: https://github.com/gnFur/Monofoxe/tree/master/Monofoxe.Playground

Hey there Iā€™m also working on a GM inspired engine, and did a fair bit of work on it already -

Preview videos: https://www.youtube.com/channel/UCCDT5l4gglPpFB_tEZd5c7Q/videos

Since we two have common interest it might be very effective to buckle up, I am really impressed with your work.

Hehe, you actually went and copied even the UI. Though, I think, thatā€™s
kinda too far. Sprite editor and all that fluff are kinda useless, and
VS does the job absolutely fine. Making your own IDE is too much of a
rabbithole. Though, I may steal something from your thingy. ; - )

Uploaded a 2v in-dev build. Now with docs, even more foxes and lots of other stuff.

1 Like

@gn.fur Tried downloading the latest public version (1.0.1.1) and additionally tried the 2.0.0.0dev, but unfortunately the installer didnā€™t seem to do much. I only have Visual Studio 2019 Community installed (both 2019 and 2019 Preview version), and the MonoGame SDK installed is from the Development Builds (3.8.0.848). Iā€™m running Windows 10 Version 1909.

The 1.0.1.1 installer seems to start working, then goes to the part with for NoPipeline (which I didnā€™t have installed yet), pops up another window to install it, but then seems to finish immediately without actually doing anything. No templates were available in Visual Studio 2019 when I opened it up (although I selected the checkbox to install them).

The 2.0.0.0dev starts the installer, I choose the options I wanted (I kept the Visual Studio 2019 template checked). The installer finished almost immediately. Same thing - no templates in Visual Studio 2019 that I can see.

In both cases nothing appeared in Programs and Features to uninstall too. I did find an uninstall.exe in C:\Program Files (x86)\Monofoxe (add Engine for the 2.0.0.0 build) that worked correctly for 1.0.1.1, and 2.0.0.0dev cleaned up everything except it left a blank folder in C:\Program Files(x86).

@Cory_Kroll Install v2-dev and check the Documents\Visual Studio %yourversion%\Templates\ProjectTemplates\Visual C#

Tell me if the templates are there. Also Iā€™ve noticed that there is an issue with VS2019 when it doesnā€™t index new templates so they doesnā€™t appear in the search, but if you scroll list of all templates, they willl be there.

@Cory_Kroll Ok, Iā€™ve googled some more and thatā€™s what Iā€™ve found: VS 2019 template search has been broken for months. VS team seem to have failed to fix it and introduced some tag system which may fix the search. Iā€™ll try adding that right now and will upload a new in-dev build which hopefully will work.

Also yeah, the uninstaller is indeed not registered, Iā€™ll try to fix that too.

@Cory_Kroll Ok, uploaded a new build. Now uninstaller shows up in the Remove Prgrams, andā€¦ well, searching is still broken. The best I could do is add the tags in project templates. Now you can switch Project Type filter to Monofoxe and all the templates will show up.

Also created a bugreport for VS team describing this issue.

@gn.fur

Ok good news - the templates are placed at the path youā€™ve indicated, which for me was:
C:\Users%username%\Documents\Visual Studio 2019\Templates\ProjectTemplates\Visual C#\Monofoxe v2-dev

I did find that Monofoxe is showing up under the Project Types filter.
However, just typing Monofoxe doesnā€™t bring up the results.
Iā€™d have to either know what to look for in the filter or scroll to the bottom.

Iā€™d be really interested in any articles you found about search indexing bring broken, etc. specifically around the name/description search.
Iā€™m interested in writing templates myself as would certainly share what I found with it.
Also could you link to the issue you created for the VS team?

So I think proceeded to create a project from every template. Here are my specific finding, and then general notes at the end.
TL;DR All generated a template, none compiled directly to launching a hello world Iā€™d expect (the cornflower blue screen).

Monofoxe Class Library (.NET Standard)

  • Builds just fine, no issues.

Blank Monofoxe Cross Platform Desktop Project

  • Monofoxe.Engine.dll does not resolve (.\References\Monofoxe.Engine.dll instead of $(MonofoxeInstallDirectory)$(MonofoxeVersion)\lib\Monofoxe.Engine.dll)
  • Monofoxe.Engine.dll does not resolve (.\References\Monofoxe.Tiled.dll instead of $(MonofoxeInstallDirectory)$(MonofoxeVersion)\lib\Monofoxe.Tiled.dll)
  • Didnā€™t come with a Game1.cs, and doesnā€™t build as a result.

Blank Monofoxe Windows Project

  • Get this warning when building: Found conflicts between different versions of the same dependent assembly. Please set the ā€œAutoGenerateBindingRedirectsā€ property to true in the project file. For more information, see http://go.microsoft.com/fwlink/?LinkId=294190
  • Didnā€™t come with a Game1.cs, and doesnā€™t build as a result.

Monofoxe Cross Platform Desktop Project

  • The project fails on build. Looks like it has something to do with NoPipeline:
    1> Unhandled Exception: System.NotSupportedException: The given pathā€™s format is not supported.
    1> at System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
    1> at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
    1> at MGCB.MGBuildParser.ParsePreprocessArg(String arg, List1 output, Stack1 ifstack, Boolean inResponseFile)
    1> at MGCB.MGBuildParser.ParsePreprocessArg(String arg, List1 output, Stack1 ifstack, Boolean inResponseFile)
    1> at MGCB.MGBuildParser.Preprocess(IEnumerable1 args) 1> at MGCB.MGBuildParser.Parse(IEnumerable1 args)
    1> at MGCB.Program.Main(String[] args)

Monofoxe Shared Project

  • Seems to generate just fine. When I add a Windows project, reference it as a Shared Project, and try to build however I get a pathing issue with NoPipeline:
    1> Unhandled Exception: System.NotSupportedException: The given pathā€™s format is not supported.
    1> at System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
    1> at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
    1> at MGCB.MGBuildParser.ParsePreprocessArg(String arg, List1 output, Stack1 ifstack, Boolean inResponseFile)
    1> at MGCB.MGBuildParser.ParsePreprocessArg(String arg, List1 output, Stack1 ifstack, Boolean inResponseFile)
    1> at MGCB.MGBuildParser.Preprocess(IEnumerable1 args) 1> at MGCB.MGBuildParser.Parse(IEnumerable1 args)
    1> at MGCB.Program.Main(String[] args)

All

  • Reference to MonoGame.Framework does to local DLL (personally Iā€™d like to see this wired up to a Nuget instead, but thatā€™s more personal preference)

Where do you create new projects? What reference paths are in MGCB file? Exception seems like itā€™s something that has to do with your system not permitting to write into the file. Iā€™ve seen something baguely similar with some security settings.

Blank projects arenā€™t supposed to compile by themselves, they need Shared project to be referenced in them.

ā€¦and yes, Iā€™ve fucked up reference paths for blank projects. : - D
Will fix it right away.

Issue: Developer Community

Also, nuget will not work, since you need to set up some files to make Monofoxe work, which goes against ā€œmake it at simple as possibleā€ rule of mine.

@Cory_Kroll
Ok, fixed warnings and template references. Still no idea what can cause Nopipeline to fail, tho. Generated MGCB config and paths youā€™re creating projects in may give some info.

For these projects generated directly from your template, I created them on my Desktop.
Not my typical location, but there shouldnā€™t be any permissions issues.

I downloaded the latest version and used the template Monofoxe Cross Platform Desktop Project.
I immediately attempted to build the template after creating it and got this out:

1>------ Build started: Project: Monofoxe Cross Platform Desktop Project, Configuration: Debug Any CPU ------
1>  NoPipeline v1.1.0.0
1>  Reading MGCB config C:/Users/Cory/Desktop/Monofoxe Cross Platform Desktop Project/Content/Content.mgcb
1>  
1>  Reading setting: /outputDir:bin/$(Platform)
1>  Reading setting: /intermediateDir:obj/$(Platform)
1>  Reading setting: /config:
1>  Reading setting: /profile:Reach
1>  Reading setting: /compress:False
1>  
1>  Reading reference: C:/Program Files (x86)/Monofoxe Engine/v2-dev/lib/Pipeline/Pipefoxe.dll
1>  
1>  Reading content:Content.mgcb
1>  Reading content:Graphics/default.spritegroup
1>  Reading content:Effects/AlphaBlend.fx
1>  Reading content:Fonts/Arial.spritefont
1>  Finished reading MGCB config! Got 4 items.
1>  
1>  -------------------------------------
1>  
1>  Reading NPL config.
1>  
1>  Reading reference: C:\Program Files (x86)/Monofoxe Engine/v2-dev/lib/Pipeline/Pipefoxe.dll
1>  
1>  Reading content for: Content.mgcb
1>      Reading Content.mgcb
1>  Reading content for: Audio/Music/*.ogg
1>  Reading content for: Audio/Sounds/*.wav
1>  Reading content for: Graphics/Default.spritegroup
1>      Reading Graphics/default.spritegroup
1>  Reading content for: Effects/*.fx
1>      Reading Effects/AlphaBlend.fx
1>  Reading content for: Maps/*.tmx
1>  Reading content for: Fonts/*.spritefont
1>      Reading Fonts/Arial.spritefont
1>  
1>  Finished reading NPL config!
1>  
1>  -------------------------------------
1>  
1>  Checking integrity of the final config. Hold on tight!
1>  
1>  Checking C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Content.mgcb
1>  Checking C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Graphics/default.spritegroup
1>  Checking watch for Default/*.png
1>  Checking wildcars for: C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Graphics\Default
1>  Checking C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Graphics\Default\monofoxe.png
1>  Modifying: C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Graphics\Default\monofoxe.png
1>  Checking watch for Default/*.json
1>  Checking wildcars for: C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Graphics\Default
1>  Checking C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Graphics\Default\monofoxe.json
1>  Modifying: C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Graphics\Default\monofoxe.json
1>  Checking C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Effects/AlphaBlend.fx
1>  Checking C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Fonts/Arial.spritefont
1>  
1>  Checking reference: C:/Program Files (x86)/Monofoxe Engine/v2-dev/lib/Pipeline/Pipefoxe.dll
1>  
1>  -------------------------------------
1>  
1>  Saving new config as C:/Users/Cory/Desktop/Monofoxe Cross Platform Desktop Project/Content/Content.mgcb
1>  
1>  Done! \^u^/
1>  
1>  Unhandled Exception: System.NotSupportedException: The given path's format is not supported.
1>     at System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
1>     at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
1>     at MGCB.MGBuildParser.ParsePreprocessArg(String arg, List`1 output, Stack`1 ifstack, Boolean inResponseFile)
1>     at MGCB.MGBuildParser.ParsePreprocessArg(String arg, List`1 output, Stack`1 ifstack, Boolean inResponseFile)
1>     at MGCB.MGBuildParser.Preprocess(IEnumerable`1 args)
1>     at MGCB.MGBuildParser.Parse(IEnumerable`1 args)
1>     at MGCB.Program.Main(String[] args)
1>C:\Program Files (x86)\MSBuild\MonoGame\v3.0\MonoGame.Content.Builder.targets(84,5): error MSB3073: The command ""C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MGCB.exe" /quiet /platform:DesktopGL /@:"C:\Users\Cory\Desktop\Monofoxe Cross Platform Desktop Project\Content\Content.mgcb" /outputDir:"bin\DesktopGL\Content" /intermediateDir:"obj\DesktopGL\Content"" exited with code -532462766.

I then noticed that I couldnā€™t open the Content.mgcb at all in the MonoGame Pipeline Tool, getting the following error:

Content.mgcb: Failed to open the project due to an unknown error.

If I go into the .mcgb file and remove the following section, I can then open it in the editor:

#begin Content.mgcb
/importer:AssetInfoImporter
/processor:PassThroughProcessor
/build:Content.mgcb

I then noticed if I try to add in the .mcgb file, an Importer does show up in the drop down, called ā€˜Asset Info Importer - Monofoxeā€™. I set the ā€˜No Processing Requiredā€™ dropdown for the Processor for the .mgcb asset as well to match your template. However, then clicking the option to build in the MonoGame Pipeline Tool does nothing, and closing the trying to reopen the .mgcb file in the MonoGame Pipeline Tool causes it to start crashing again.

If I remove your .mgcb asset from the Content.mgcb, the content builds fine. However, then building the entire project still gives me the error in the Output, so something else is up.

I took a look at Content.npl and it has this path:
%PROGRAMFILES%/Monofoxe Engine/v2-dev/lib/Pipeline/Pipefoxe.dll

The problem is that %PROGRAMFILES% resolved to C:\Program Files
However, C:/Program Files/Monofoxe Engine/v2-dev/lib/Pipeline/Pipefoxe.dll doesnā€™t exist on my machine.
The program is installed under C:\Program Files (x86)\Monofoxe Engine\v2-dev\lib\Pipeline\Pipefoxe.dll
So pathing might be an issue as a result of the (x86).

Iā€™m running a Windows 10 64-bit machine - but I think nowadays Iā€™m probably what most users would be running.
Changing this didnā€™t resolve the project building issue, but maybe it is a hint to other path issues that might be in the toolchain?

In regards to NuGet, I think we are on the same page of making it as simple as possible.
For me, when Iā€™m working with a git repository Iā€™m looking to clone it, build it, and run it. Ideally this means not having to know what additional software Iā€™d have to install for local dependencies. If any libraries can be replaced with a NuGet equivalent, this would be ideal. This is also a huge help when setting up a CI/CD pipeline, as generating a new build agent would ideally not require the installation of custom software in order to automate it in a cloud (like DevOps).