A correction: In (b) I meant to say C# is not designed for high churn of data.
A disclaimer: I know .net is better than mono, but I’m not sure to what extent in terms of GC issues late in the cycle.
All that sounds good in theory, and I’ve heard it before, but in practice there’s a whole market for programmers to fix GC issues for games in Unity. Once a game starts seeing the very distinct GC hitch pattern / slowdowns it’s too late, and worse of all, it tends to happen late in the cycle. Saying “you could’ve done this or that” is no consolation at that point. A grueling process follows to fix GC issues, often hiring expensive contractors to help.
People tend to program lazyly until a need comes to change that. Not uncommon to see devs churning thousands of game objects a frame. There’s no good way for a GC to smoothly handle that. You can say, well write your own allocator, or something like that but by the time you see the issue, that would be a mountain of bug-prone work. You can also say, “you programmed it poorly” to devs using your engine, but that’s not productive or helpful at that point.
Aside from C# specific issues, most engines provide choices to protect developers from themselves: Lua, GDScript, Blueprints, etc. It helps your engine be more accessible to a wider market. It makes learning your engine easier and thus faster adoption. Most importantly, they narrow the choices to safe but powerful operations. I mean, you provide something for shaders, isn’t game code just as important?
EDIT: you have to wonder why people don’t make AAA games using Unity. Maybe Hearthstone, but that’s still a mobile game and they heavily modified the engine. If your engine is for mobile, then maybe it’s ok, but I’d still think making a scripting language that non-programmers can use is worthwhile.
EDIT2: Also consider your target audience. A lot of them are young. Just out of college, in college, or self -taught. Requiring high technical abilities and rigorous software engineering training does not cater to them. In addition you’re expecting great engineers to also be great designers, so you’re stacking odds exponentially against each other.
EDIT3: .Net seems much slower than Mono at JIT compiling. Iterating is significantly slower than Unity or Godot. Another advantage of a (non-gc/jit) scripting language is faster iteration.