Search Unity

Xamarin now free (and supposedly open source)

Discussion in 'General Discussion' started by Acissathar, Mar 31, 2016.

  1. Acissathar

    Acissathar

    Joined:
    Jun 24, 2011
    Posts:
    677
    JamesArndt likes this.
  2. orb

    orb

    Joined:
    Nov 24, 2010
    Posts:
    3,037
    Yeah, hoping I can get a download link which doesn't require more registration. There is supposedly a link to the Xamarin CE hidden behind their registration-wall on the official Xamarin site, but I'm just so tired of entering my details for stuff all the time. If it's open source, why collect e-mails? They're not getting mine.
     
  3. mdrotar

    mdrotar

    Joined:
    Aug 26, 2013
    Posts:
    377
    This is great for Xenko and other game engines that require Xamarin to run on Android and iOS. Unfortunately, I doubt it will make any difference for Unity.
     
  4. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    MrEsquire likes this.
  5. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Not really. It isn't about licensing any more, it's about performance. If IL2CPP is still faster then Unity is best served continuing how it is.
     
  6. Amon

    Amon

    Joined:
    Oct 18, 2009
    Posts:
    1,384
    This is definitely a good thing for indie devs and another boost for open source freedom.
     
  7. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Let's see if Epic will be smart enought to bring C# to the engine ?
     
  8. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Probably.
     
  9. vogles

    vogles

    Joined:
    Sep 28, 2009
    Posts:
    131
    My interest in having Unity update their version of mono/C# are the features. It's the main reason why myself and so many devs I know have started moving away from Unity. Unity has gained so many features in the engine itself, but no improvements in the actual coding of the scripts have happened. Coding in Unity feels like we're still in 2010.

    IL2CPP might be faster than the super old version of C# that Unity has been using. Is it faster than C# 6 or 7? Maybe, maybe not. IL2CPP isn't magically adding all of the features that comes with .Net 4.6 or C# 6/7.
     
    MV10 likes this.
  10. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    I guess we'll agree to disagree. From my perspective there is no gain from moving from C# to C++ for game logic. The only issue is one of performance, for me. I'm hardly constrained.
     
  11. darkhog

    darkhog

    Joined:
    Dec 4, 2012
    Posts:
    2,218
    IL2CPP is still some months/years away, at least for desktop. Also it is bit more limiting compared to Mono as well (same limits as any AOT build type Unity supports, e.g. no reflection or runtime code generation). As intermediate solution, until IL2CPP is complete and in cases where IL2CPP's limits prove too much, a Mono upgrade would be good. Also, C#6.
     
  12. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    But you guys are acting like it's negotiable, it's not. Unity have a clear plan for it as they've said time and time again. Is it some how preventing you from doing your game? If so, please specify exactly how?
     
    the_motionblur and theANMATOR2b like this.
  13. darkhog

    darkhog

    Joined:
    Dec 4, 2012
    Posts:
    2,218
    And you know it's not negotiable... how? Are you working at UT? Because last time I've checked you are voluntary forum moderator from a company called Simian Squared Ltd.
     
  14. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Nothing is announced (and still Royalties won't go away).
    Engine optimisation is a heavy task, and i would not bet on coding a lot , but on engine features
    www.youtube.com/watch?v=BXcw2IrIinc
    Who knows if Unity will make some AAA moba or Multiplayer FPS ? we would benefits big improvments.
     
  15. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,350
    Now that Xamarin is free I would IMPLORE Unity to please put IL2CPP on the back burner and just use the world standard .NET library. Please remember you are first and foremost a game engine, not a competitor to make a better .NET compiler than Microsoft and Xamarin combined. I'm sure the IL2CPP devs have done some good work, but please don't continue to put everything else on hold until they prove themselves better at .NET than Microsoft, because I fear that day will never come. I do not share hippocoder's enthusiasm that you will some day be faster than MS and Xamarin if you just keep plugging away for a few more years, nor do I even care; I would much rather that entire team be reassigned to literally any other engine feature. Please at least try to think of the big picture and don't let stubbornness or inertia drive this decision.
     
    StaffanEk, Qbit86, Kiwasi and 11 others like this.
  16. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    I agree, why waiting two or three years if you can use Xamarin ?
     
    MrEsquire likes this.
  17. Dustin-Horne

    Dustin-Horne

    Joined:
    Apr 4, 2013
    Posts:
    4,568
    Yep, it's free and available now. It will soon be open source (the Xamarin Runtime will) and will be part of the .NET Core Foundation on GitHub but it will take time to get the source out there.

    Are you developing on Windows or Mac? If you're developing on Windows just update your Visual Studio 2015 to Update 2 and choose the Xamarin option which will install it. No need to register again. If you're on a Mac you'll have to enter the registration to get the Studio download.


    Impossible to say because C# 6 is a language specification, not a runtime so it's not even something you can compare. You can't even really compare recent .NET releases to IL2CPP because the devices aren't running the standard .NET Runtime. You'd have to compare the speed of the Xamarin runtime. IL2CPP will be faster (and hopefully some day less buggy and easier to debug), and it will bring consistency to how you develop between platforms as you won't be dealing with AOT on some platforms and not others.

    I don't necessarily share the enthusiasm either but mainly because of the number of issues I've seen crop up on IL2CPP and they're different on different platforms. In some ways it is a bit of a black box. It will be faster, but now that .NET Core and Xamarin will be open source and with .NET Native finally getting completed and being used for Windows Universal Apps, I wish iOS hadn't forced Unity's hand and they could have instead investigated something like .NET Native which has been longer in development and is more mature (though not currently cross platform outside of Windows devices).
     
    Qbit86, JaredThirsk and tatoforever like this.
  18. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    I thought they were going to continue to support Mono? Is it going to be completely removed?

    The roadmap still says:

    Seems strange to support it in the editor, but not in at least the desktop players. Hope Unity will have something more to say on it.
     
    darkhog likes this.
  19. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,350
    Yeah, there are like a thousand reasons that I thought IL2CPP was a bad idea, some of which I'm sure are still scattered around archived posts here. The original sole motivator for its invention was that it would be cheaper than buying the iOS license from Xamarin, and now that that's no longer true, it doesn't really offer much other than a hope that maybe it will be faster when finished.
    Yeah they were going to use regular .NET on Windows but they didn't want to update until they got IL2CPP perfect on iOS, to avoid having different .NET versions on different platforms.
     
    Qbit86 likes this.
  20. Dustin-Horne

    Dustin-Horne

    Joined:
    Apr 4, 2013
    Posts:
    4,568
    Technically they do for Windows Store apps (and Windows Universal Apps). I have a beta for my asset right now that supports Windows 10 Universal apps. It's precompiled using .NET Core (4.6). I have a different version that runs in editor, and Unity pushes the 4.6 version to the VS Solution during build and it works just fine. :)
     
  21. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Well cos I spoke to them, they seemed pretty set on what they're doing. Since you haven't you'll just have to continue stirring and doing whatever it is you're doing.

    In any case, the reasons IL2CPP are interesting go beyond just converting a bit of your C# to whatever target. It allows Unity to take a deeper engine-specific look at optimisations. They can (when the dust has settled) bridge a lot of stuff, make a ton of Unity-specific optimisations that you just can't do if you're using C# directly.
     
    Kiwasi, kB11 and Ryiah like this.
  22. breese45

    breese45

    Joined:
    May 10, 2015
    Posts:
    10
  23. vogles

    vogles

    Joined:
    Sep 28, 2009
    Posts:
    131
    Sorry, I was referring to .Net 4.6.1 or Mono 4.2.
     
  24. Ippokratis

    Ippokratis

    Joined:
    Oct 13, 2008
    Posts:
    1,521
    April 1 ?
     
  25. vogles

    vogles

    Joined:
    Sep 28, 2009
    Posts:
    131
  26. vogles

    vogles

    Joined:
    Sep 28, 2009
    Posts:
    131
    Yeah, it doesn't bode well for the amazing realistic announcements in the post.

    April 1:
    Unity: "Hey guys, everyone's been asking us to upgrade the version of mono. We're finally going to do it!"

    April 2:
    Unity: "FOOLED YOU!!!"
     
  27. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,350
    That better not be the worst April Fool's joke in the world.

    The post sounds both good and bad... I'm very glad they're working with MS and Xamarin cooperatively now, but not exactly thrilled that they are going to keep pushing IL2CPP as a part of the .NET ecosystem. Like I said, I'd rather they focus on being a game engine rather than a .NET runtime.
     
    JaredThirsk, MV10 and darkhog like this.
  28. Lightning-Zordon

    Lightning-Zordon

    Joined:
    May 13, 2014
    Posts:
    47
    Having a recent garbage collector could be nice...
     
    MV10 and Velo222 like this.
  29. arkon

    arkon

    Joined:
    Jun 27, 2011
    Posts:
    1,122
    I kinda like the crap GC, it forces you to write better litter free code.
     
    pcg, Ryiah and SunnySunshine like this.
  30. zoran404

    zoran404

    Joined:
    Jan 11, 2015
    Posts:
    520
    Strange how people keep bitching about wanting a support newer version of .net but somehow no one ever mentions what exactly it is, like no one tries to be specific.

    I mean having a better garbage collector is nice, but that wont change the way how you make your game and none of the newer .net features would increase productivity that much. It will look and feel good, but honestly it wont save you noticeable amount of time in relation to the whole project.
     
  31. SunnySunshine

    SunnySunshine

    Joined:
    May 18, 2009
    Posts:
    977
    Kinda the same way I feel about upgrading my PC. While it would be nice having a modern computer, using a crap one really forces you to be concerned about performance all the time.
     
    Ryiah likes this.
  32. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,190
    Combine it with a slow language (I was using QuickBASIC on a 386SX) and you're really forced to become better.
     
    AaronC and GarBenjamin like this.
  33. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    There's garbage created everywhere, unfortunately, not just in "bad code". Overall performance gains and a less intrusive GC is basically all I'm interested in.
     
    Ryiah likes this.
  34. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,350
    How is "a newer version of .NET" not specific? I'd guess specifically, we'd all like 4.5, with an attempt to remain current (within a year, at least) going forward.
     
    Kiwasi and Ryiah like this.
  35. Lightning-Zordon

    Lightning-Zordon

    Joined:
    May 13, 2014
    Posts:
    47
    Are you serious, there's some real time savers in c# 6 specifically composite string formatting, null conditional operator, improved dictionary initializer, the async/await stuff for c#5, etc etc. Not to mention the faster and less buggy runtime. If you want to continue using only features found in 3.5, go ahead, but to complain about bringing .net up to date boggles the mind.

    Another small point jumping back and forth from 3.5 to 6 on different projects is annoying.
     
  36. Frpmta

    Frpmta

    Joined:
    Nov 30, 2013
    Posts:
    479
    So just like Unreal, when Unity pulled the plug, Xamarin was forced to change their ways.
    j/k, Microsoft acquisition.
    Might as well drop the need for ILC2PP now and rather modify Xamarin.
     
  37. zoran404

    zoran404

    Joined:
    Jan 11, 2015
    Posts:
    520
    That's exactly what I mean by not specific.
    Do you want to have for example Threading.Tasks namespace? You can't interact with the main thread from other threads anyway and all parallelization would work much better with threads or cooroutines.
    Or maybe you want LINQ? Sure, it's nice to have and it's easier to write, but changing 0.1% of the code in an environment where you spend more time deciding what to do than actually typing will it really matter?

    @Lightning Zordon And what exactly is it that you're going to do in unity that could be done easier with async/await?

    And to be clear I'm not complaining about the update and if there was a runtime update I'm sure going to use some of the new features, but I just think of all the things that could improve your productivity this is one of the least significant ones.
     
  38. Lightning-Zordon

    Lightning-Zordon

    Joined:
    May 13, 2014
    Posts:
    47
    Threading. Async/await along with the threadsafe collections make writing threaded code a lot nicer.

    I feel having more robust, better performing scripting will save time in ways you're not thinking about. If your game runs better with less hiccups that means less time spent trying to minimise those hiccups and performance glitches we get from running on a version of mono that is so out of date.
     
    Kiwasi likes this.
  39. zoran404

    zoran404

    Joined:
    Jan 11, 2015
    Posts:
    520
    For whatever threading you're intending to do I'm sure I can give you an example that uses the current runtime and is at least as fast and easy to write as your code.
    But lets not spam the thread. If you want to disprove that be my guest and send me a pm.
     
  40. Lightning-Zordon

    Lightning-Zordon

    Joined:
    May 13, 2014
    Posts:
    47
    Sorry for my earlier hasty reply, I've edited a more thought out response. Anyway I agree we've said our part.
     
  41. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,350
    I want all of it! If parts of the runtime are randomly missing or broken that's a problem.

    You can't interact with Unity-specific objects, but any regular classes on the main thread are fine.

    Er... we already have LINQ. If you're not even aware of that then I don't think you really can have a strong opinion on what is or is not missing from .NET.

    Overall though, if you're just saying "Welll IIIIIIIIII don't need ANY features, I can code everything with nothing but three assembly functions and one hand tied behind my back" well, that's great buddy. Real great, I'm proud of you. But I'd rather have access to the best tools and the newest features and use them as much as I want, regardless of who thinks I'd look so much tougher and cooler if I used nothing but old S***ty libraries all the time.
     
    Qbit86, Kiwasi, JaredThirsk and 2 others like this.
  42. Dustin-Horne

    Dustin-Horne

    Joined:
    Apr 4, 2013
    Posts:
    4,568
    There are some subtle but important changes as well. One example is HashSet<T> which is now easier to dynamically serialize and deserualize in newer iterations because they've added an additional interface that allows you to identify it as a keyed collection instead of just an ICollection<T>. The difference is subtle but important.

    Async/await are great. Thread safe collections are fantastic. As are lazy initializers (I.e. Lazy<T>) which let you delay instantiation until the object is first used and also automatically provide thread safety. I could probably easily list a dozen more productivity enhancing additions. I'm excluding C# 6 because that's language, not runtime and dependent on Roslyn. Unity could update their compiler to support c#6 language features (not a simple task unless they use Roslyn) and they can be used for .net 3.5. There's nothing runtime or framework specific about them.
     
    Qbit86, JaredThirsk and angrypenguin like this.
  43. zoran404

    zoran404

    Joined:
    Jan 11, 2015
    Posts:
    520
    Ok I admit I forgot about this. I almost never use it and I happen to think of it while writing the post. But that's just one less thing that would require an update.
     
  44. zezba9000

    zezba9000

    Joined:
    Sep 28, 2010
    Posts:
    992
  45. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
  46. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,620
    Yes, it's a huge and potentially risky undertaking. That said, I think it's a really good sign that MS/Xamarin have brought Unity into the .NET Foundation, for a couple of reasons.

    First up, that's not something I think they'd do if they thought Unity's guys were crackpots chasing rainbows. To the contrary, there's some acknowledgement of their expertise in the area. Keep in mind that there's more to this than the current work on IL2CPP. Unity have previously done extensive work getting the Mono runtime working on platforms it didn't support at the time. (On that note, Unity aren't trying to make a better C# compiler than MS, at least not in the .NET context. They're making a replacement system for the runtime, and that is indeed something they've got extensive prior experience with.)

    Secondly, it means Unity might now have better access to more expertise. Who better to help them with making a .NET runtime replacement than MS themselves, right?
     
    Kiwasi, Ryiah and Dustin-Horne like this.
  47. Dustin-Horne

    Dustin-Horne

    Joined:
    Apr 4, 2013
    Posts:
    4,568
    Exactly. In fact, since they've joined the .NET Foundation I would not be at all surprised to see Unity move over to the Roslyn compiler so they can support C# 6 language features but still build for their own runtime (IL2CPP).
     
  48. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
     
    kB11 likes this.
  49. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Yup but IL2CPP is a big part of the story still (for speed and WebGL). So everyone has to be a little tiny bit more patient. Exciting though!
     
  50. Ippokratis

    Ippokratis

    Joined:
    Oct 13, 2008
    Posts:
    1,521
    Well,
    I think that there are 1.5 billion causes to follow multiple routes that lead to *cough*WorldDomination*cough making a great game engine.
    Link
    p.s. Please consider adding a strikethrough option for text formating :)