Let's say I want to create a small 2D game. I'm no game dev so nothing fancy, just a PoC. I'm willing to take a code first approach and I love C#. What is my best best?
- Unity seems promising but they have a weird version of mono running things and not so recent C# features available. Might be a non issue.
- Godot seems more promising for my use case but I feel like they want you to use GDScript. I don't want to use GDScript while there is a perfectly capable C# engine there. Is .NET second class in Godot?
- MonoGame was basically abandoned for a long time. I wonder if it got any better. That might be a little too much "code first" though.
Stride.. I just heard it the first time ever. Its a shame. And apparently it is a proven engine especially in VR space. Jumped on it, unfortunately no macOS support available so can't dig in right now.
Recent versions of Unity are actually using Roslyn ¹) but they are admittedly running a bit behind on C# language version. The currently supported version is at 9 while 14 came out last month. It's not really a huge issue in practice, though.
With Godot 4, the big difference between Godot and Godot .NET is that the version with NET support does not build to web and mobile support is 'experimental' ²). Also, they are two completely separate downloads and editor binaries, which makes switching languages decidedly non-trivial.
For a 2D game, if you can live without building to web, I'd pick Godot. Otherwise, I'd pick Unity.
Godot has full C# support and it is a first class citizen. GDScript has a few advantages, the main being game package size, but they are extras from the fact it's a custom language. The C# development experience is smooth.
Raylib is a very good option for 2D games. For me it was the easiest way to translate my toy Doom renderer from javascript that used html canvas to C#.
Unity is easily your best option if you've got any sensitivity to platform targeting issues. They are working on a CoreCLR conversion but no telling if it will actually see the light of day.
The lack of modern c# features and hijacking of things like null coalescing operators are annoying but it's not something that ruins the overall experience for me. The code is like 20% of the puzzle. How it all comes together in the scene is way more important.
I would strongly suggest that for quick code-first prototypes. The boiler-plate of "load a texture and render to screen" is quite minimal - you could perhaps make a small library for yourself?
It also has no opinions about how you structure your game data. This means you can represent things like a Flappy Bird clone as just a `Vector2`, rather than having to bash a graph of entities in the shape you want.
Let's say I want to create a small 2D game. I'm no game dev so nothing fancy, just a PoC. I'm willing to take a code first approach and I love C#. What is my best best?
- Unity seems promising but they have a weird version of mono running things and not so recent C# features available. Might be a non issue.
- Godot seems more promising for my use case but I feel like they want you to use GDScript. I don't want to use GDScript while there is a perfectly capable C# engine there. Is .NET second class in Godot?
- MonoGame was basically abandoned for a long time. I wonder if it got any better. That might be a little too much "code first" though.
Stride.. I just heard it the first time ever. Its a shame. And apparently it is a proven engine especially in VR space. Jumped on it, unfortunately no macOS support available so can't dig in right now.
Recent versions of Unity are actually using Roslyn ¹) but they are admittedly running a bit behind on C# language version. The currently supported version is at 9 while 14 came out last month. It's not really a huge issue in practice, though.
With Godot 4, the big difference between Godot and Godot .NET is that the version with NET support does not build to web and mobile support is 'experimental' ²). Also, they are two completely separate downloads and editor binaries, which makes switching languages decidedly non-trivial.
For a 2D game, if you can live without building to web, I'd pick Godot. Otherwise, I'd pick Unity.
¹) https://docs.unity3d.com/6000.2/Documentation/Manual/csharp-...
²) https://docs.godotengine.org/en/latest/tutorials/scripting/c...
> which makes switching languages decidedly non-trivial.
No, it does not. The C# version supports both GDscript and C#, so just download that if you ever plan to use C#.
Godot has full C# support and it is a first class citizen. GDScript has a few advantages, the main being game package size, but they are extras from the fact it's a custom language. The C# development experience is smooth.
Raylib is a very good option for 2D games. For me it was the easiest way to translate my toy Doom renderer from javascript that used html canvas to C#.
Microsoft is a big advocate of C# and game dev, so they sponsor .NET support in Godot. First class support absolutely.
Godot's support for C# is fantastic. I highly recommend it.
Unity is easily your best option if you've got any sensitivity to platform targeting issues. They are working on a CoreCLR conversion but no telling if it will actually see the light of day.
The lack of modern c# features and hijacking of things like null coalescing operators are annoying but it's not something that ruins the overall experience for me. The code is like 20% of the puzzle. How it all comes together in the scene is way more important.
MonoGame is stable and still receiving updates.
I would strongly suggest that for quick code-first prototypes. The boiler-plate of "load a texture and render to screen" is quite minimal - you could perhaps make a small library for yourself?
It also has no opinions about how you structure your game data. This means you can represent things like a Flappy Bird clone as just a `Vector2`, rather than having to bash a graph of entities in the shape you want.
Godot is a great engine, and .Net support is very good. You can't go far wrong with it, especially for small 2D games.
> Bepu Physics
This is a seriously impressive physics engine. Their design is difficult to integrate with but the performance is insane.
https://youtu.be/tjtwSq3u6Dg
OK, but why?