I like using high-level languages with static typing and garbage collection. That leaves a handful of options — C#, D, Go, Java, and maybe a couple others. Of these, C# is my favorite. And again, for a number of reasons, Linux is my standard operating system. And I want to create games for my preferred OS with my preferred programming language.
This isn’t actually a game engine. It’s a high-level SDL binding, so it handles input and sound and a few other things. A lot of other projects use it, so it’s worthwhile to talk about its foibles.
Right now, the latest release has a cute bug: if you try running it with a debugger and have an XBox 360 controller attached, it crashes. Something about SDL_JoystickGetGUID. Yeah, just comment out calls to it and recompile.
Monogame runs on Linux. It uses OpenTK. It probably does whatever you want except for mouse input. Actually mouse input works well, assuming you’re only supporting full screen mode on single-monitor systems. Otherwise, well, your mouse coordinates are based on the position across the virtual display rather than the window. (It’s a bug that seems to be affecting only me.) And no, there’s no cross-platform way of getting the window position.
So yes, as long as you don’t need to access the mouse position, it’s maybe okay. I moved on once I saw this issue.
This is actually a promising option, once they get any documentation whatsoever. But it’s closed source, and there are only a half dozen sample applications, and half the documentation is wrong. (The API documentation isn’t wrong per se, but it’s about the same as whatever Monodevelop would autogenerate for you.) So wait a year, see if the documentation improves.
Aside from that, it requires you to know the game resolution and viewport before you start your game. This is highly annoying. Monogame doesn’t do that. Monogame lets me resize my window whenever I want and updates its viewport accordingly.
Axiom3D does not support any working input system on Linux. You can choose between SharpInputSystem, which is a dead project that never passed alpha and never worked on Linux, and OpenTK. OpenTK would work, but somehow Axiom3D messed up the OpenTK initialization or window creation, and you get bogus values from it. It might again be fine if you’re always doing full screen, but in windowed mode, you get the origin point changing whenever you resize the window.
It also has terrible documentation.
Delta Engine is open source and has some level of documentation. (Yay!) It’s available via nuget, but don’t let that fool you — the nuget binaries don’t work on Linux. But it’s open source, and you can build it on Linux with a few tweaks. Annoyingly, you can’t just cd into the directory and run xbuild, but you can open it in monodevelop, fetch the nuget packages, add autofac to the two or three projects they forgot, add in a cast or two, comment out one or two lines of code, and get everything to build with only about ten minutes of effort.
Unfortunately, it looks like the Linux support is a dream at the moment. They hope to add it, but (for instance) their input solutions are full of abstract classes with only Windows implementations and not even a start at a Linux implementation. There is a MonoGame edition, though, and an OpenTK edition. Similarly to the main distribution, the OpenTK release has numerous build errors, so it’s a matter of ten or fifteen minutes to compile it.
Also note that the OpenTK release depends on OpenTK, which has potential issues with gamepads. Hopefully you’ve already patched and built your own copy. Handily (and I say that with the utmost sarcasm), they didn’t see fit to provide their own binaries, so instead of replacing some files in a Lib directory, you’re going to be adding the references by hand wherever you find build errors.
Once you’ve gone through this fifteen minutes of work, you find that the result won’t even run its samples. It’s convinced that it needs to copy OpenAL libraries to its build directory. Once you clear that out, you quickly find that they didn’t test their own OpenTK support at all, and they’re trying to use OpenGL on a window that wasn’t created with OpenGL enabled.
So yeah, if you want to use this engine on Linux, get ready for some intensive debugging. Of their code, not yours. I don’t have the patience to get it working.
You must be a WINE god.
Unreal Editor apparently runs on Linux, and thanks to Xamarin, you can use C# for scripting. But it’s a far cry from implementing a game in C#, and scripting is an area where I’d rather use Boo or something else that’s designed to be interpreted.
So, the overall state is pretty terrible. Good luck!