Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Will Unity be opening its source any time soon?

Discussion in 'General Discussion' started by shamsfk, Dec 15, 2017.

  1. superpig

    superpig

    Drink more water! Unity Technologies

    Joined:
    Jan 16, 2011
    Posts:
    4,649
    Speaking of control and graphics specifically: the new Scriptable Render Pipeline tech is almost shipped, and will give you greatly increased control over how rendering happens (if you want it).
     
    OCASM, neginfinity, Ryiah and 6 others like this.
  2. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    I want it.
     
    AcidArrow likes this.
  3. BrUnO-XaVIeR

    BrUnO-XaVIeR

    Joined:
    Dec 6, 2010
    Posts:
    1,687
    I may have expressed myself incorrectly given english isn't my native language.
    I wasn't blaming C#, I was just reflecting the things I see and hear from those people on the subject.
    I can only speak of asian studios as those are the ones I have experience with though.

    Personally I'm a fan of C#, but I hate that its generated IL code can be "hacked" so easily; but that's off topic subject...
    So, even though Squeenix have Luminous Studio engine up and running, UE4.16.3 is currently used to develop Final Fantasy 7 Remake.
    The main reason is in-house engine's networking layer is pretty much a WIP by now, just like Unity's networking; And multiplayer features (extras) are planned from the get go. Unreal 4 has a rock-solid multiplayer integration plus all productivity tools for asset management are already there by default, plus the factor I was talking about before: the engine relies only on C++ to get your game running.
    Paying the necessary efforts, Blueprint VM can be removed, C# VM can be added, Python, NodeJS and etc can be used for scripting. The whole renderer module can be replaced by in-house developed one, so on and so forth...

    Now, I'm pretty sure people know that each UniyEngine.Object suffers from wave-particle duality phenomenon; Unity object exists both in unmanaged memory and managed world of C#. When you create a script Unity manages this object for you so you don't need to touch any C++ code.
    Let's say then your company has a code-base of over 50.000 classes developed across many projects shipped along the years and you might want to use them whenever you see the need for any of these classes;
    Being raw C++ code these classes, with a little effort, could be relatively quickly ported to fit Luminous Studio API, fit SnowDrop API, or fit Unreal 4 API, etc...
    But, you have picked Unity so now you just have to create a C# wrapper for each class you use if you want to use such code-base in Unity and of course your 50.000 objects are now 100.000 that you'll have to fit inside your frame budget somehow; Creation of the C# wrappers will take considerable development time; Your programmers will do things with the C++ objects and completely forget about the C# counterpart, you all are going to run into == operator issues constantly; You'll run into internal bugs and people will have to learn how Unity works internally to solve these bugs. People around want to work in C++ only then go home and call it a day and constantly argue that only designers should use scripting languages and why the hell C# is needed for core gameplay classes.
    Class constructors are going to flood bug tracker because nobody is ever going to figure out how to use constructors in Unity, or how to work without using them.
    People will beg for moving back to a C++ engine and someone may be 'let go' in the process.

    Now let's say you have over 50.000 classes built on C# that work well in Unity you developed along the years and someone suggest next game should be done in Unreal 4... Would you?? Good luck with that.
    Basically that is what I meant with "prohibitive" and "unnecessary overhead".
     
  4. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    When I made this point before you did earlier in the thread, I avoided going too far down the language side of things and implied that most of the work needed would actually be ripping out unwanted middleware and rendering. So even if you stripped all of C# from Unity (hint: you can't - a lot of Unity is also built on C# not just C++) you would still need to accept the rendering and middleware integration.

    So the take away is, you pick Unity if you want Unity to make decisions for you. I kind of do - these days at least :)

    People seem to also assume that if a developer doesn't choose Unity they'll automatically choose UE4. That's not the case, proving C++ isn't the be all or end all of choosing the right engine for the job. Let's say Unity goes with C++ as an option for developing in. I bet you any money it won't change anything.
     
    BrUnO-XaVIeR likes this.
  5. harrisleonard

    harrisleonard

    Joined:
    Dec 4, 2017
    Posts:
    5
    I wonder why they don't. Of course it has their business interest and they are doing very well. But it would be a good thing to have it open source that would create long term strategic vision for them.
     
  6. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,084
    Why?
     
    Ryiah and zombiegorilla like this.
  7. mysticfall

    mysticfall

    Joined:
    Aug 9, 2016
    Posts:
    649
    I think if anyone needs to replace the whole rendering stack and scripting engine with a custom built one, they better think about creating their own engine, rather than using either Unreal or Unity.

    Maybe some studio actually decided to rip Unreal's codebase to build their own engine, but I wonder if it's anything we can regard as a standard practice for AAA studios that purchase Unreal license.

    What you are describing is basically ripping the whole user API layer off a game engine and migrate into another one. I really doubt many of game studios actually have such a requirement when they choose a game engine, not even AAA ones.

    Correct me if I'm wrong, as I've never seen how AAA game studios work. But to me, it sounds like a really peculiar corner case rather than something most of big studios do.

    Try porting 50,000 classes Unreal game to Unity and see if it's any easier. I'm afraid you are a bit confused about abstraction layers. You can't just grab the whole user API layer from one engine and put it on to another, simply because they are both written in a same language.

    If you absolutely need to build that kind of a frankenstein game engine and have resources to do that, you can just put Mono VM and implement Unity API layer on top of Unreal engine. There's zero need to rewrite each and every 50,000 game logic classes that way, and I'm pretty sure more or less similar level of effort would be needed if you go the other way around from Unreal to Unity.

    More likely scenario would be porting just the game logic, rather than the entire user API layer from one engine to another. In that case, being written in C# or C++ doesn't have inherent advantage in itself, as it'll be much harder to port an Unreal game to a game engine that uses C# like Xenko or Godot (when 3.0 arrives) than porting an Unity game in that case.
     
    Last edited: Dec 17, 2017
    Ryiah and superpig like this.
  8. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Are you sure? I ask because capcom decided that UE4 was still more cost effective with bits ripped out than upgrading their existing engines.

    It would cost a lot of millions to make anything remotely approaching a modern AAA engine, especially a cross platform one with no code licensing issues and no surprises. And frankly, a lot of studios can't find the people for it not could they afford the time and problems taken to do it.

    Case in point: you're smart, so tell me how you'd construct frostbite engine for under 25 million dollars within 2 years? Can't be done.

    When you see that, you know UE4 makes way more sense for these teams than to roll their own. Big AAA has already rolled it's own. Eveyone else out there - hundreds of studios - are still having quite a battle with in house vs off the shelf as their ambitions try to keep up.

    Meanwhile the rest of the entire planet just uses Unity and has to endure my obnoxious forum commentary.
     
    Kiwasi likes this.
  9. mysticfall

    mysticfall

    Joined:
    Aug 9, 2016
    Posts:
    649
    I think I'm confused here. Are you basically saying that Unreal is better than Unity because it's a standard practice among AAA studios to build their custom engine on top of Unreal, replacing the whole rendering, scripting, networking layers?

    If it's indeed the case, kudos to Unreal people for their smart licensing policy, and maybe for better design decisions.

    But I guess it's no longer a matter of pros and cons between C++ vs C# in that case, and what you are implying becomes simply that Unity or any other off the shelf game engine isn't fit for AAA studios, which is quite surprising, considering you have been a quite consistent proponent for Unity in the past.
     
    Last edited: Dec 18, 2017
  10. BrUnO-XaVIeR

    BrUnO-XaVIeR

    Joined:
    Dec 6, 2010
    Posts:
    1,687
    I though by now people would have it figured out that such thing as "better" choice makes no sense. People stick to what they know, stationary by nature.
    There are industries, multi-trillion industries, still using MS DOS for their systems and machinery.
    As hippo guy said, Unity serves his purposes well and giving Unity some of control that Unity needs to take out from you to run, it's a plus as it's less work for him he have to be done.

    For studios out there, that is a no-no and why build another engine again? They have Luminous Studio already, remember?!
    @mysticfall I have the feeling you would totally hate and be terrified if you ever work for studios like Ubisoft Montreal because, in there and alikes, each game project is using their own "Frankenstein" to get the job done and for every sequel frankenstein is gonna have a baby.
     
    Ryiah and angrypenguin like this.
  11. mysticfall

    mysticfall

    Joined:
    Aug 9, 2016
    Posts:
    649
    I'd love to work on a game engine project if I could, but only if it's not a hacked version of an existing product. So I think you are right, as I'd totally hate it if I have to spend most of my time at work stitching my code into existing game engine, and do it everytime it's got upgraded, and etc.
     
  12. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,617
    That's why I'm here. When work started using Unity I protested, but we went with it anyway and as such I built up a bunch of experience with it. Since then, when new projects come along I can either go with the thing I've (now) got extensive prior experience in, or I can start building up new experience elsewhere.

    Guess which option wins out when there's a job to be done? ;)

    That's not to say that there's no value in building other experience. (In fact, I'm personally working on that at the moment.) But when studios start new projects they've got far more technical momentum to deal with than an individual or a small team.
     
    Ryiah likes this.
  13. Deleted User

    Deleted User

    Guest

    Wrong, BP's can be converted into native C++ and it's been that way for quite a while now...

    This is the issue with a lot of these UE4 / Unity threads, there's a lot of misinformation unless you're an active user of both.

    UE4 was built around the foundation if you hit a problem you should be able to fix issues without an expensive support contract and / or having to wait for such bug fixing methodology like "voting". It has a massive, vast array of tools applicable to many styles of games which in many cases doesn't require middleware.

    With source access the community has fixed many a bug, they also implemented in a vast array of their own additions which some got re-distributed into the master branch and then actively improved by Epic.

    This isn't just applicable to AAA outfits, whether you're a lone wolf or small team it helps.. I know this because I've worked with people on UE projects and some of them didn't have much in the way of collateral.

    All of this is personal to your project, for me Unity's middleware and integrations of their own tools have a limited user case scenario the biggest advantage is it's well documented game orientated scripting implementation. Others don't need more than what Unity and / or the asset store can provide you. For a 2D project UE seems like a lot of work with little advantage..

    From my own experience it's pretty cut and dry IMO, lone wolf included if the aim is a somewhat adventurous 3D game you're probably better of with UE, just suck it up and put up with the additional hardships.. You'll save a lot of headaches in the future, for anything else use Unity.

    Unity is awesome, but it is what it is and nothing else.
     
    Last edited by a moderator: Dec 29, 2017
    nxrighthere and scvnathan like this.
  14. Eric5h5

    Eric5h5

    Volunteer Moderator Moderator

    Joined:
    Jul 19, 2006
    Posts:
    32,401
    "Can be". It's not done automatically. That's not misinformation.

    --Eric
     
  15. Deleted User

    Deleted User

    Guest

    Then we have different definitions of what automatic means because as of late 2016 it was only a single button press to convert everything :)...

    It's not like you have to manually set up classes or anything, it's as automatic as a build in Unity..
     
  16. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Sure, for people who need to make big changes. For everyone else it makes much more sense to use Unity, specially now SRP is allowing a lot of what you'd classically want source access for in Unity.

    You pretty much only want source access to properly control your rendering, or make optimisations. Now Unity is focusing hard on optimisation and opening up rendering, it may turn out cheaper to use Unity for larger studios in the future. Horses for courses.
     
  17. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    6,591
    Add fixing bugs to that list :)
     
    Deleted User and hippocoder like this.
  18. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Yeah although is that what you're paying for? to fix someone else's work in progress?
     
  19. Deleted User

    Deleted User

    Guest

    Because Unity is completely bug free right? I'd rather have the option to fix something on release date than not. Also the creators opinion of importance doesn't necessarily correlate with your own..

    Small edit, if there's nothing else I've learnt from this venture.. Starting with CryEngine (which was closed at the time), you can't dig yourself into a hole. If you're spending two years + on a project no matter the scenario you need a way to resolve it.

    Unless you're happy with sub par and a lot of compromise...
     
    Last edited by a moderator: Dec 29, 2017
  20. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,084
    *stares at this post*
    *turns head towards Unity's terrain tools*
     
  21. Deleted User

    Deleted User

    Guest

    Middleware licenses restrict the possibility of generic "access to source", well unless they threw a LOT of money their way and / or essentially bought out the company.

    I might seem a little biased towards UE but that's not the case at all, middleware like Enlighten can look absolutley gorgeous if used correctly and it definatley has it's pro's above base static lighting. As with anything there's pro's and con's, it just depends on what you're doing..

    Epic have released some buggy versions in the past, sometimes it has felt a little like I'm fixing an engine instead of making a game. Source is great when you need it, it's not so much when you don't..

    I'd be interested to know, how many people here have a support contract with Unity?
     
  22. mysticfall

    mysticfall

    Joined:
    Aug 9, 2016
    Posts:
    649
    I don't think we are talking about the same thing any more. The posts I was trying to answer claimed that big studios must use C++ because they don't want to use C# at all.

    I'm aware of the new SRP and understand how it could benefit those who want additional optimization potential, but it's not the same as talking about building your own rendering solution from the scratch in C++ (thus without even using SRP), or scrap the whole C# scripting layer to replace it with Python, and so on.

    I believe such types of chages fall into more of a 'build your own engine' cateogry than a 'customize a commercial engine using its public API' one. And If I'm not mistaken, Unreal doesn't really offer much advantage over Unity if what you need is the former kinds of requirements.

    At the very least, Unreal doesn't make it any easier because it uses C++ instead of C# as its binding language, and that was my main line of arguments before you rebuked my post.

    I'm afraid you have either misread my posts or those that I was trying to argue against.
     
    Last edited: Dec 30, 2017
  23. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Directed at multiple replies (generally speaking):

    In a nutshell you're choosing Unity to make decisions, so opening source to change those decisions means you picked the wrong engine. Unless Unity changes and becomes available source for everyone (and you'll find a huge amount of that is still C#) I think we're all using Unity so we don't have to have source access.

    It's nothing to do with C++ at all. It can't be, given how much of Unity runs on C# (tools, features etc). You'd open the engine and look inside and see layers of weirdness communicating in several tongues. I'm fairly sure there are areas staff are afraid to peek in cause the source peeks back at them.

    Honestly I think Unity's the worst engine to make big changes to, and I don't think that's changing. UE4 is substantially easier because it's all the same code base in C++, and not a ton of embedded middleware and different languages.

    Unity is a giant alien. They are OK with it but from my understanding, I think they're trying hard to make it modular enough that you can alter big pieces of it, hence SRP and High/Low level API's. That's good, but packman will help quite a bit at allowing us deeper access than before, maybe all we need if they get it right.

    I don't see any downsides to unity providing full source access to anyone who asks but for some reason it's restricted to higher payment tiers at the moment.

    I picked Unity because a decade ago I stopped writing game engines. I realised that cross platform was coming in hard and fast and one man would never ever keep up with 1 platform let alone 4+. Do I want to go back to writing engines? of course not. Do I want to dive into a massive engine and start fiddling with the internals? I might not have the capability to do that because doing it is one thing, maintaining it and developing a game and making sure all that works 5 years from now is a big ask. Bigger than me.

    As it is I'm really happy Unity is just making things faster and a lot more flexible. That'll do me I think in practical terms.

    Finally, I think we should be clear on what is open source. It's likely with Unity's new license agreement, it will be "open source for Unity related purposes".

    So I think everyone will get their source wishes someday, just not in the form they're expecting...
     
    angrypenguin, Ryiah and shamsfk like this.
  24. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,554
    Erm.

    Take a look at this folder:
    https://github.com/EpicGames/UnrealEngine/tree/release/Engine/Source/ThirdParty

    Technically, all of this can be classified as middleware, and there are *.cs files in there.

    There were people asking for and working on C# bindings for unreal, build system has *.cs files in it, there's blueprint madness going through the whole engine, and there are optional bindings to commercial apis like Simplygon.

    It is not THAT different from what would be going on with unity engine.
     
  25. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    But you don't need any ThirdParty, and the context is a studio choosing one engine over another for it's ease of modification. Not sure your argument?
     
    angrypenguin likes this.
  26. ChazBass

    ChazBass

    Joined:
    Jul 14, 2013
    Posts:
    153
    Whole idea seems kind of silly.Open source the engine and forego all the revenue generated by commercial licensing of a proprietary piece of software? Then what, pray tell, will be the business model as it relates to funding the ongoing operations of the company and development of the engine? Charity? Hard enough to get bugs fixed and features developed as it is. As far as the community doing it, well that has been a mixed bag, on average so I don't think we would be any better off.

    Unity has no interest in making the source available to small developers so that a select few *could* have the option of fixing bugs themselves and implementing new functionality. The fast majority of their install base would never take advantage of this (witness: all the folks that do use open source libraries, but just use provided binary distributions).

    Yes, large studios have the need for source access, but they also have the ability to license the source. So you would be just giving up that revenue stream, which bring me back to the business model.

    So, other than the fact that the OP and, what 10 others on this thread, think it might be a good idea, I agree that there is exactly 0% chance this will ever happen. Interesting coffee talk, however......
     
    zombiegorilla likes this.
  27. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,631
    I don't think that's the argument. Pricing can stay they same, but they could give source to everyone. Like Unreal.

    I don't need source access, but one benefit that hasn't been mentioned, is that Unreal often gets multiple improvements and fixes from the community (look it up, each release has around 100 fixes/improvements by the community).

    That could be nice for Unity too.
     
    shamsfk likes this.
  28. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,554
    Argument is - unreal is largely the same. Truckload of thirdparty dependencies bundled into engine, multiple lanugages, etc.

    I would not say modification is easy either.

    I believe they were talking about Unreal 4 model, and not FOSS definition of OpenSource.
     
    shamsfk likes this.