Multilangual Cross-Platform Software management

Started by
1 comment, last by Bluefirehawk 11 years, 8 months ago
Nice title I know, I should become a CEO happy.png ... 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?
Project: Project
Setting fire to these damn cows one entry at a time!
Advertisement
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.
Thank you very much, I almost wanted to abandon the Idea due to the cumbersome interop of C++ embeded C# project. I didn't think that it's easier vice versa.

The compile on launch sounds interesting, I definately have a look into it. You don't have an example project in your sleeves, do you?smile.png

I had some issues with CMake and now I am starting to like QT Framework more and more. If anyone else is looking how to set up a basic cross platform dev enviroment, here is an example: http://biodisplay.tyrell.hu/implementation/software-engineering/a-cross-platfrom-c-development-environment/
Project: Project
Setting fire to these damn cows one entry at a time!

This topic is closed to new replies.

Advertisement