My understanding of this license is that it requires attribution and a notice of the files you’ve modified from the original source but doesn’t include anything that would conflict with the terms of the Unreal Engine licence such as a “copyleft” clause; Please can someone explain if I’m right here or what the potential issue/s everyone is referencing might be
The OP is not demanding Epic implement C# bindings, chill out.
Roslyn is just one piece of the puzzle, while it can be used to replace the compiler part of the Mono framework, you still need the Mono runtime libraries to actually run Roslyn or any of the code it generates on any platform other than Windows. So any licensing issues you may have seen mentioned relate to the Mono framework being licensed under the GPL.
TDoro; I do know C++ (I wouldn’t call myself an expert by any measure though) and am actively trying new things to improve my skills, This wasn’t meant for Epic or anything either, I was just a little confused as to the legal issues I mentioned… My intention for such a system was to create a mod system like past interations of the engine but based on C# instead of UnrealScript to aid the learning curve for novice programmers (And because I personally find C# a lot more intuitive for higher level programming)
enlight_2014; Thank you for your feedback, Does this mean I wouldn’t have any issues using such a system for a Windows only release?
It’s most likely for Microsoft’s ARM platforms (WinRT, Windows Phone) and as everything made by Microsoft i doubt it’s unix-like enough to port it to Linux (on which Android run on top of) without a rewrite on most things.
In general everything that has .NET in name runs only on Microsoft platforms.
You can do in UE4 **anything ** you want in Blueprints. For the very few moments when you need super optimizations (speed optimization of a Blueprint, making an addon or making your super cool game/app code) make a freaking effort and do it in C++.
Why you need C#??? For what exactly??? What do you want to achieve besides adding a .net layer full of bindings? Please en-light me! =))
Quote Originally Posted by DarkStorm
And because I personally find C# a lot more intuitive for higher level programming
This is because you don’t know C++ well enough. C++ allows you to write on identical level of abstraction as C#. C# gives you nothing extra, but takes enormous amount from you, just to list few:
Performance, boy, you are in gaming industry, C# is slower than C++ ranging from 2 to 10 times. What it means that by using C# you loosing on the start from 200% to 1000% on performance. And that before you’ve even written one line of code.
Portability, boy, you are in gaming industy, C# isn’t portable, C++ is portable to virtually any platform. What it means is that by using C# you constrain yourself to just one platform.
Pull yourself together, learn C++, you will never look back.
I like the way everyone completely ignores what I actually said; Unrealscript was managed and ran on top of the raw C++… Why was that? To allow the engine to be modded without access to the source, this isn’t for me, It’s to provide features for the game and if everyone would stop going off on tangents about how great C++ is and how I should “learn it” (When I’ve explicitly stated I’m not “replacing” C++ and that I am learning it before), I might get somewhere
Believe me, once you learn C++ you will not want to touch other languages, you will never look back.
I agree with you totally there but I find it a very easy (Read productive) language to use, Even without mscorelib.dll etc. Is it possible to write an interpreter for C#'s syntax which would work only within the context of my game/The Unreal Engine then? That’s what I really want, a custom scripting language for modification etc. and the .net/CLR overhead might not be worth it for that purpose… That being said, Unrealscript worked in a virtual execution environment; I may be oversimplifying too far here but it seems to me that the real work is in recreating the virtual machine that the IL outputted from Roslyn will actually execute on (And, of course, creating the backing libraries to replace mscorelib.dll)
EDIT; Just to make this 100% clear, I don’t mean to replace C++ in terms of the main developmental effort, I realise that most, If not all of my work will still be in C++; This is more of an after-market feature for mod support
EDIT 2; And I’m not asking Epic for anything either, I just want pointers as to how I could implement such a system
Also; Another query… it seems that the Mono licencing issues will only come into play if the libraries are statically linked (TLDR Legal LGPL) So that would only be an issue on platforms such as iOS if I’m correct?
Thanks for your patience DarkStorm. The thread is interesting.
I’m a Unity developer that’s done a ton of work in C# and I’m trying to figure out if it’s time to jump ship. As a programmer of 20 years, I could switch to C++, but find C# much more fluid. Of course there’s a performance hit, but it’s not as dramatic as it used to be. In fact, I’d worry more about the render pipeline.
For most of us indies the performance hit is overshadowed by the efficiency boost, support-ability, and reusable libraries that exist for C#.
Don’t let the C++ trolls get to you, most of us would love to see different language plugins for UE4. Even Unreal has added prototype Scripting Plugins to 4.2 and includes Lua support.
Have you looked at Xamarin? They have C#/.NET support for iPhone and Android that gives you commercial licenses for those platforms. Pricey but may be worth the support.
Writing a C# scripting language is easy, once you have mono/.net available. The compiler is just another built-in class so you can feed C# (or Visual Basic or even F#) to it and then run it. I did that for client who needed a powerful scripting language.