Nice title I know, I should become a CEO ... had the Idea to make my game engine in C++ (SDL) and the logic in C#. If I put the engine in a dynamic library, i should be able to use it in C# (how i haven't tried yet, but there is a first time for everything) and build my game logic there. Also thanks to mono, the gamelogic could be be platform indipendent as well and I end up with a Platform-indipendent game... in theory. I am currently programming under Debian with Eclipse CDT, but for the C# I would go to Windows and VS. Now here is where the nightmare starts without a well configured C.I. system.
Tools and programs i plan to use: Github repo jenkins C.I.
C++: GCC Compiler CUTE test framework dOxygen api doc CMake build script
C#: .Net CIL builder test framework ?? api doc?? build script??
When I understood the basics of C++ correctly, I need to compile a Dynamic Library for each target OS and run the tests from there. I could set up Jenkins to execute the CMake script on different virual machines, running each OS. Each VM has gcc and SDL installed. After that jenkins should execute the build script for C# on each VM and run the tests. If all works like I imagine it in my head, I would have an easy cross platform game without the cross platform nightmare. But for the C# stuff I am a bit confused, can I use the "compiled" C# code from Windows and direclty run it on Mono, like I can with Java? What tools / platform indipendent tools are there for C#? Does this even work well?
Do you have any tips for cross platform software management?
If your engine is going to be in C++ and your logic in C# then I would recommend building the executable with C++ and embedding the CLR in your application and loading C# modules for your game logic. MS.NET I believe allows you to do this as of .NET 4, and Mono has allowed it for a long time. If you want cross-platform then Mono is your best bet. This is how Unity3D works and I've done it myself to good effect.
You can even host Mono's C# compiler and use it sorta like a scripting language, so that your game engine compiles the C# modules on launch if they are changed, so they don't have to be manually compiled.
And yes, the same bytecode will typically run fine on Mono and MS.NET.