I hope everyone had an enjoyable New Year's holiday weekend...
Over the holiday weekend I decided to take a long, deserved break from my current development effort and look at some of the competition to TGC that is out there. In this regard I looked specifically at the MonoGame and FNA engines (FNA is another XNA offshoot like MonoGame).
I used to do some work with MonoGame a few years ago and found the installations and the basics rather straight forward and easy to implement. However, after a point I hit a brick wall with this environment when I couldn't resolve some technical issues even with interacting with the community. Coming back to MonoGame now I was expecting to see some big developments in their environment, especially since they have been receiving investment monies. I was in for a somewhat rude awakening.
The MonoGame website has a new look and is up to date with the expected styles of today. However, that is where it ended.
In short, the MonoGame environment has become quite a mess. To start with, and contrary to earlier efforts, they are now only supporting their latest release, which is 3.8.1 and it is solely supported on .NET Core 6 and above along with Visual Studio 2022 as the IDE of choice. All of their older versions have had their Git repositories closed while offering them simply as downloaded Zip files, which also includes a Zip file of the compiled binaries. However, there is no installation for the corresponding pipeline editor, which provides faster acquisition of disk-based assets such as image files for sprites. This no longer seems to be much of an issue as I found quite a few people complaining about this tool's stability.
None of the earlier version source code files have any project or solution files so one cannot compile a full set of binaries from them easily. Instead, what is provided is a utility called ProtoBuild, which is claimed to allow for the production of such files upon simply running the tool. It doesn't work at all since it is always looking for something from a Git repository. Having set one up with my copy of MonoGame 3.7.1, I thought this would solve the issue but it didn't. ProtoBuild appears to want a Git download that is no longer supported in its original form. Though, I found the updated tool, I could not find a way to tell ProtoBuild where to access it. In any event, why waste people's time when these software projects originally had project and solution files with them? Seems to me, adding in such tools as ProtoBuild is as much a time consumer as just providing the original project and solution files.
Having researched this issue on the MonoGame forums I came across yet another surprise. It appears that unless one is asking about the latest release of the software, there is no real assistance in trying to resolve such an issue with the exception of one posting by a MonoGame Development Group member informing everyone that ProtoBuild was no longer being used and instead one should use the "dotnet cake" tool. The only problem is that there is no documentation anywhere on the forums or the website that describes how to use this tool. There is what appears to be a "default.build" script that comes with the earlier versions of MonoGame, but again, no documentation on how to use such a script or what tool to run it against. and I tried quite a few of the obvious ones (ie: MSBuild).
The forums also demonstrated that in the interim years, few if any adjunct tools have been created for the software such as an easy to use interface tool. Myra has become what appears to be the most popular such tool for MonoGame but it is still from an individual third-party that has only acquired a small community of followers. Don't get me wrong, I have used Myra and it is a good piece of software but it appears to be the only such tool that integrates with MonoGame since it was designed to do so.
The one new support feature was the new MonoGame Discord Server, but admittedly I did not leave any questions there regarding the issues I was experiencing.
I had an older MonoGame version of their software's source code sitting on my backup drive so I decided to give this a try in terms of compiling the software. I believe this software is around version 3.2 or so.
Interestingly enough, this software compiled fairly easily yielding only a few minor issues, which I was able to resolve.
Having exhausted myself with researching the issues with MonoGame I moved on to its equivalent, FNA, which appears to be maintained rather well. I download this software and it compiled straight away. But it would only compile for .NET Framework 4.0, which at this point is about as old as it gets.
When I tried to upgrade the software to at least the 4.6 framework, which I am currently working with, the compiles consistently blew up with internal issues such as with the use of tuples and the like. A little odd considering that a later version of the framework would yield such errors when compared to an earlier version.
Knowing that at some point I am going to have to spend a bit of time upgrading my .NET Framework development to current versions along with the database engine I am using, I figured why keep bothering with FNA or MonoGame when such headaches seemed to abound.
But my research here was to merely see what was available in terms of game development engines and with MonoGame being the primary one available today, I wanted to know if it was a viable option. In my view, it is not... At least not currently. Andi t appears from some of the comments in the forums, others are beginning to think the same.
That being said, in terms of 2D work, which is what my game development project is based upon, the LOVE2D Engines worked right out of the box with its .NET interface software. LOVE2D even has fewer method calls for the standard game loop, which I found interesting. The .NET interface is a few versions behind but I imagine it would not be all that difficult to compile it up to a current version. LIke the TGC Core Engine, the LOVE2D Engine is fairly easy to use.
I have spent many hours doing such research over the years at is an interest of mine and I can honestly say that outside the major game development tools such as Unity, Unreal, and others at this level, the game development environment for Indies and hobbyists is quite a mess with very little quality on offer.
This is quite different from a number of years ago where new engines abounded in the Open Source realm but today is a quite a different story.
All this being said, whatever our complaints and frustrations are with the tools from TGC, one thing can be said is that they simply work. Whether you are using Game Guru Max, one the AppGameKit IDEs, or working directly with the AppGameKit Engine as I am with AgkSharp, all of these tools offer us a form of stability currently that the game development arena simply can't.
No doubt there are engines out there that are worthy of consideration such as NeoAxis for example. However, such engines are more for 3D development than 2D and few, if any, really allow one to use the core engines directly.
To my knowledge, the best competitor to MonoGame and what we have here at TGC is the Irrlicht Game Engine, which appears to be still actively maintained by the team, though the last major release was at the end of 2021.
The Irrlicht Game Engine has been around for many years and was one of the first such engines in the new wave of engine development that occurred in the late 1990s and the early 2000s. Like TGC, the Irrlicht Engine primarily targets the Indie Development Arena. It is primarily a 3D engine but appears to be perfectly capable of doing 2D work as well.
However, out of the box and being a C++ code base, I was able to compile the engine's source code with only a 4 or 5 errors that would have to be corrected, these being most likely a result of the Windows 7.x SDK version being used had to be upgraded to the latest one. That being said, the forums are still active. And there is a .NET Interface for this engine.
If one wants to really concentrate on 3D work and they find the TGC Core Engine too limiting, my recommendation would be to give Godot a try. It appears to be an excellent environment with an active community. However, I noticed that many of the newcomers on the Discord server appeared to be very young people. The other alternative may be the Stride Engine, which uses MonoGame for its core engine.
However, in conclusion, in my view, at least for what I am attempting to accomplish, which is very complex, the TGC Core Engine is "still the one", even with whatever limitations we may find with it.
And I still believe that we have to leave our channels open with Lee and his team at TGC so that we can encourage them to keep refining the core engine since I believe it is a better foundation for the future than that of Game Guru Max.
Hopefully, Lee will completely open source the core engine, which I understand is basically the same for both AppGameKit IDEs, so that the community can lend a hand in its future development. And if so, then there will be a market for affordable assets from third-parties. And given that MonoGame has no plans for such a market, TGC would be in a good position to gain MonoGame community members.
Steve Naidamast
Sr. Software Engineer