Please work with Xamarin to make Mono for UE a reality

Either way, i bet you will see C# one way or another, but first thigns first there need to be plug-in marketplace, thats most important part

I would rather work on integrating .NET Core (.NET 5) as it is open source now, on very liberal license, and is being actively ported to other platforms.

It might be interesting project to get .NET Core working with Unreal.

I don’t see at this point any reason to use mono.

Can we also add GWBasic please? :stuck_out_tongue:

Beautifully said.

.NET is great, and I would love to have smooth integration of C# and F#, but if that means dealing with Xamarins fees, I’d rather not see it at all.

Does this mean that based on your EULA SkookumScript and similar plugins will have to be free?

I would to but i don’t see this being viable any time soon. Mainly because its going to take time for it to be ported to the current platforms UE publishes to. And if there are a few platforms missing, what then? will UE not integrate with it because it would be writing in C# would not cover all platforms? or would they roll out new platforms as they become available?

Considering this i doubt we will see UE adopting first class support for 4-5+ years.

No that is not what we are saying, there is fundamentally huge differences between C+ and C# through its syntax, core libraries and compilation methods that make it a large hurdle when learning a new tool and framework such as UE.

According the EULA, it seems to me only the integration part need be distributed free and with source, but not the library itself. So in SkookumScript’s case, they only need to make SkookumScript UE4 Plugin open source and free of charge, but they can still provide core SkookumScript library in close source form. (Though I do believe all UE4 3rd party library should come with source, the whole close-source middleware thing is so last century in post-UE4 era)

If there’ll be C# integration in UE4, I would rather it would be the donet CORECLR backed by MS, even it’ll takes much more time to mature, mainly because it’s MIT licensed.

For me personally “->” is enough for not wanting to use c++. It’s horribly ugly. I really would like to see C# in UE4, and I have never used Unity.

put it best, Unreal is not Unity.

It seems like the majority of people that want C# support in Unreal request it because they do not want to step out of the comfort zone they had with Unity. It is not because they see C# providing any benefit to the engine that C++ and Blueprints don’t.

This seems like a fundamentally unreasonable stance to me. You’re not going to get very far as a developer if you can’t learn new things, or base your language decisions on the appearance of a single operator.

Yeah i would too, but i’m kinda on the fence about it. On one side, if it’s going to take years to get to the point of looking at adding support you could let a third party extend your product adding c# and the cross platform benefits that comes with mono. Then when you’re ready and .net core matures/covers the platforms required you could add your own first class support for the language. On the other side doing it all properly as a first class language would potentially give a better experience and wouldn’t make a third party’s plugin redundant if you add your own support. but it does mean not being able to tap into that market for a number of years, giving other competing products a chance to gain a foothold. (but who’s to say they couldn’t still sell Xamarin Studio -> UE integration and debugging support for C# if this happened, jsut with .net core instead of mono)

It also makes me wonder If Mono is basically the same .net interfaces, how hard would it be to swap mono for .net core? From the actual game code side it shouldn’t be that hard in theory (the part that would probably change is the interface wrapping UE API’s).

I’m afraid that might not be totally true. I love both C++ and C#, and I love both Unity and Unreal. But for me, C++ simply sucks for quick prototyping and gameplay scripting, and I would bet that’s why there was UnrealScript and now Blueprint in Unreal. Please note that in Unity, C# is used as both runtime and editor scripting language, and you will be amazed how easy C# could be used in both case for rapid prototyping and editor extension.

Have you guys checked out SkookumScript? It might not be as feature rich as C# but it’s born for game scripting, and quite promising.

I hadn’t actually heard of it until this post. The thing that worry’s me there is that it not a very common language, i hadn’t heard of it until the plugin. It doesn’t seem to have a lot in common with other languages either. So its finding people with existing knowledge or skills with similar structured languages will be difficult to find. I am interesting in how its done though, wondering how hard it would be to do a C# or Javascript script type plugin. To be good though it would need good editor features like syntax highlighting and auto complete. Are there any UE video’s on how to create plugins like this?

I think a Lua plugin was mentioned somewhere before. Really, I think Lua is the best bet when it comes to integrating a scripting language. It’s familiar to many and is very mature and well-performing.

Though to be honest, I don’t see the point. Epic decided to abandon UnrealScript, which was tailor-made for this engine, in favor of full C++. They did it for a very good reason after years of experience with UnrealScript.

I feel like people trying to reverse that decision in one way or another are going to encounter the same issues Epic did.

Do you say this from experience with Unreal? I can’t necessarily agree, because I don’t see how it would be much different from the C++ experience.

Epic has gone to great lengths to ensure the C++ experience in Unreal is smooth. The header tool takes care of all the metadata building, while the engine’s standard library provides all of the tools you’d need to create what you want. Hot reloading is an amazing convenience.

I really can’t see anything significant C# would offer that C++ and Blueprints don’t. I do see though that it would introduce another language that would need to be supported which is a tremendous amount of work. A language that at first would not have any kind of integrated debugger like C++ or Blueprints. It would introduce another way to do something that isn’t all that different from C++ (I don’t think thats a good thing). Without CLR modifications you would not be able to use hot reloading with C# because the CLR does not allow such a thing. You might have less issue with interop if it only uses the Blueprint API, but I have little doubt people will begin asking/demanding for more stuff to be exposed to C# instead of using C++.

I say this as someone who has used both C++ and C# for years and is rather experienced with both.

If that is the criterion, they should add VBA :slight_smile:

One issue with adding something like C# as a scripting language is that it would encourage people to write far more things using scripts than they should and tank performance. Maybe if they did something like Unity 5’s IL2CPP and generate C++ code that is compiled alongside your modules, so you’d be writing pretty much the same code but using a different language.

The created c++ code would be suboptimal as well. Compiler have their limits.
Even the compiled c++ could be optimized with inline assembler :rolleyes:

Creating a system like that would require a huge investment of resources that could be otherwise spent on actually improving the engine and moving it forward.

The only part that would be nearly the same code is the actual UE4 gameplay code. And if it’s pretty much the same code why are people not just using C++?

But that is only part of the problem. People will bring in all kinds of C# libraries and the .NET standard libraries that they will want to use that would also have to be recompiled as C++ to work properly. And if that isn’t possible, perhaps because only facade libraries are provided that mirror existing C++ stuff, people will just whine and moan that C# in UE4 is gimped. It will become a tremendous headache.

The whole IL2CPP concept is a tad ridiculous in the first place. It’s a result of Unity’s unwillingness to get a proper Mono license. I have no doubt it will end up costing them more money than paying for the license would have.

As I said before. It seems like people want Epic, or someone else, to spend tremendous amounts of time and money to develop a solution for C# integration so they don’t have to do the work of stepping out of their comfort zone to learn C++. The other angle, that a scripting language would benefit UE4, is directly counter to what Epic learned over the years that caused them to abandon UnrealScript with UE4.

Yeah i was thinking more as an interim solution

It’d seem to me the most useful thing to have CLR integrated for is more scripting in published games, less replacing BP and real programming with it.

IL2CPP can be game changer.

The power of C++ comes from it’s compiler also. If IL2CPP could make it at same level, for sure this will open new opportunity.

Both C++ and C# are powerful languages. The main point of C# (beside language itself) was the .net framework and what brings with. If C# will go full native compile route, I see no reasons to don’t be taken serious into consideration.