FNA (a port of XNA we used for Celeste) now officially supports consoles with C#'s NativeAOT. That means you can compile C# directly for consoles, which is something I've been looking forward to for years. Very exciting for the future of C# games!

https://icculus.org/finger/flibitijibibo

flibitPlan

@noelfb without wishing to sound pessimistic, getting your game to compile & run on consoles is only a tiny part of putting a game out on consoles...

I've ported a lot of Unity games originally made for PC onto consoles & structural game logic changes needed to handle submission requirements (correctly handling users, save data, controllers, & associated errors) are usually the most time consuming parts of a port.

@noelfb I did a conference talk about this in 2015 (!) which covers a bunch of sturctural & architectural approaches you can take to make your life easier - hope this updated version from 2021 helps

https://drive.google.com/file/d/1spxZVyWg7phSMKRCUXpBMdwzJOvOlR_q/view?usp=drivesdk

@darbotron my point is not having to transpile C# code to C++ for porting is a huge step forward for C#. Trust me, I'm well aware that's not the only thing involved in porting games lol

@noelfb ah, fair enough.

I assume that something must still be doing transpiling from C# to C++, as none of the consoles have a C# API, but I guess it's handled in this FNA thing?

@darbotron In this case C#'s NativeAOT compiles the C# directly to machine code for the target platform. The C# framework/runtime are also ported and compiled using NativeAOT as far as I understand,