Is Unity resting on .NET and Mono a good thing?

Unity resting on .NET and Mono is probably the one area that sometimes makes me wonder.

Don’t get me wrong, I like C# and Mono alot, and actually thinks its really awesome unity uses it. I love that I can take already existing c# code from anywhere on the web and get it to work in my game. I love that there is already so much functionality to leverage in Mono itself.

But I just worry about the future of the whole .NET and Mono platform in general. I worry that Microsoft can be pretty finnicky, and jump around. What happens if Microsoft changes a significant amount about how it’s version of C# and .Net works, leaving Mono and Unity as some disconnected thing that spawns off into it’s own language?

Or what if Xamarin and Mono doesn’t get alot of traction and really Unity’s use of Mono turns out to be Mono’s only big success. But just Unity by itself isn’t enough to keep Xamarin up and running, or for whatever reason Xamarin stops developing Mono, or Unity falls behind or disconnects from Xamarin. Then Unity is left with a core scripting framework that isn’t being developed enough and lags behind everything else.

I don’t know if anything I just said is actually true in anyway. Does anyone know more about this subject? What do you think?

Microsoft has already made significant changes to C# and .NET, and Mono and Unity have been keeping up.

If, in the future, things really do diverge greatly… So what? Nothing is lost. It’s not like existing things disappear.

And take a look at the alternatives. What else would you have had them use?

What about Unity buying mono? Is this possible?

I wish C++ would be added so I could learn and practice on the fly, and give my CV another argument for (distant) future videogame jobs.
But actually I became a huge fan of C# over those 4 gamedev years, so I hope Unity won’t dump it any time soon.
I even hope that the whole videogame industry would adopt C# as the base language.
(which would mean C# to give more tools to manage memory, if I’m not mistaken)

Apart of me wishes the Mono core was more like a plugin.

So then we could be dropping straight C++ files into unity, and if you wanted to, you could drop in the Mono plugin, and then do stuff in Mono. Basically kind of how cryengine and crymono works.

Which could then allow people to write their own scripting connections to unity if things change over time.

However apart of me thinks that would make things needlessly complicated for very little benefit, and some minor paranoias.

Also, don’t take me too seriously here, I don’t really want this to happen, I’m just trying to fill in a blank in my mind that is a cloudy area in my understanding.

Let someone else do the routine job

1085875--40683--$Untitled-1.jpg

Practice making native plugins :slight_smile:

yup :>
but the interfacing can be a pain for complex frameworks :confused:

Source? C# .Net are now a decade old… that’s not the sign of somebody who’s ‘finicky’.

What does happen? Will the mono compiler start only accepting BrainFuck? Will the libraries suddenly explode? Will syntax suddenly reorganise itself? Will the documentation change to Klingon?

My guess is that nothing will change - the decade of resources that we’ve been using will still exist and be ready to use. Our code will still compile and run as it does today.

So why the concern? Sure, down the track Unity could decide to move to a completely different language, paradigm, framework, libraries, resources etc. but that doesn’t change the code today or in the near future.

C# is a stable technology at this point.

C# is currently Microsoft’s bread and butter I doubt they would do anything at this point to ruin or jeopardize that language in the foreseeable future.

.NET 4.5 is a developer’s dream IMO.

If there’s any concern, yes, it would be with Mono keeping up.

I’m not all that familiar with the Mono eco system other than though my use of Unity. I’d hope the situation will remain stable / viable for the next 5+ years or so…

-Will

As TheOtherMonarch said, C# is stable at this point in time. I’ve been working with C# since .NET 1.0, and have watched it develop into a mature language. After C# 2.0, most of the changes to the language have been matters of convenience (automatic properties, object initializers, implicit typing, etc) with the exception of LINQ in version 3.

C# definitely isn’t going anywhere. Managed code makes writing business software much easier and faster to write. Of the three core languages in the .NET framework (VB.NET, C#, Managed C++), C# quickly established itself as the dominant language in the development community. Nobody writing business apps or ASP.NET is going to suddenly switch over to C++ or some brand-new language, and Microsoft isn’t stupid enough to try and push that on developers. The number of game developers are a drop in the bucket compared to the number of business and web app developers that code for the .NET framework. It’s not going anywhere.

Learning to code in C# while making games with Unity (or XNA) gives you a skill that is directly transferable to the wider job market, should you need to make the transition.

I can confirm that, as it is exactly what’s happening to me right now.

There’s a focus also on Linux right?

Unity using mono is the best thing about programming in unity. It’s not the fastest thing, but it sure is bliss for game development, taking care of the entire language right there. It doesn’t stop there either, it propagates through the entire unity methodology and workflow. Nicely done. Now about the lack of optimisations…

Did you seriously bump a three month old thread to say that?

Microsoft can’t really do that; they had C# ratified as an ECMA Standard, and ECMA then submitted it to the ISO, which means that if Microsoft want to change it now then they have to go through a bunch of change control processes and voting, which will in practice make it difficult for them to do stuff that’s bad for Mono.

There are already plenty of other companies and applications using Mono other than Unity.

Well, this is the benefit of it being open-source: if other users drop out and Xamarin isn’t developing things fast enough, then Unity themselves can hire more people to work on it. Even today, Unity engineers improve Mono as a part of improving Unity in general, and submit the patches back to the project; if anything Mono should improve faster than the purely-proprietary bits of Unity because people at Xamarin etc can work on it too.