Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Any reason I would choose Unity over Unreal?

Discussion in 'General Discussion' started by Alerite, Jun 19, 2016.

Thread Status:
Not open for further replies.
  1. Alerite

    Alerite

    Joined:
    Jun 16, 2016
    Posts:
    7
  2. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    Try them both and choose the one you like or that is most applicable to your game's needs. I've actually got three major game engines on my system right now - Unity, Unreal, and CryEngine. Each has their own strengths.
     
    Gekigengar, NotTesla, Rombie and 2 others like this.
  3. Acissathar

    Acissathar

    Joined:
    Jun 24, 2011
    Posts:
    669
    Depends largely on your project and skillset.

    Also C# master race.
     
  4. Alerite

    Alerite

    Joined:
    Jun 16, 2016
    Posts:
    7
    i'm pretty sure c++ > c#
     
  5. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    We have an awesome community here. The Unreal community can't possibly be as awesome, by virtue of the fact that I am not in it.

    But really it comes down to your project and preferences. Give both engines a try. See what you like
     
    QFSW, nuverian, dogzerx2 and 9 others like this.
  6. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
  7. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    The languages are different. But superiority really depends on your use case. C# is better in some cases, C++ in others.
     
    Lightning-Zordon and Ryiah like this.
  8. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    My biggest complaint with their community is the lack of avatars. It makes it difficult to feel like I'm talking to someone.
     
    Kiwasi likes this.
  9. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,790
    You misspelled 'we'.
     
  10. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Apparently @Ryiah goes over there to talk to people without avatars. So the Unreal community has at least some occasional awesomeness in it. There are several other users who use both engines.

    But if you don't go over there, that's another mark against it.
     
    Martin_H and theANMATOR2b like this.
  11. ladyonthemoon

    ladyonthemoon

    Joined:
    Jun 29, 2015
    Posts:
    236
    Why would you ask if you didn't already think that Unity is bad? Keep using Unreal or try Cryo.
     
  12. BornGodsGame

    BornGodsGame

    Joined:
    Jun 28, 2014
    Posts:
    580
    My reason is somewhat laziness. Here is the way I see it. There are basically three major engines and there is considerable debate among which is best/cheapest/easiest. So in my view, changing engines would be horizontal progression with maybe a chance for slight up or down in progression.

    So my reason for not changing is just the learning curve to start over again. Maybe it is easy to pick up, maybe it is months.. but considering there doesn´t seem to be a consensus that one is better than th other, why bother? I have tons of knowledge that is Unity specific, it just doesn´t make sense to start over unless one of the other engines is really superior, and they are not.

    The other thing is that once my major game is released, I want to get into more game-jam type things and also do quick mobile games now and then. And I think Unity is better at those.
     
  13. JasonBricco

    JasonBricco

    Joined:
    Jul 15, 2013
    Posts:
    956
    I hear Unreal is pretty awful for 2D games... huge build sizes, mostly experimental features for it... definitely more suited to 3D. Now, I can't actually say any of that definitively as I haven't tried to make a 2D game in Unreal. That's just what I've heard (and why I haven't bothered with it, since I do 2D.)
     
    CarterG81 likes this.
  14. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    From my own experience, and reading the experiences of others, learning a new game engine is a bit like learning a new programming language. Your first language will trip you up but subsequent ones are much easier to learn and the more you learn the faster you become at it as concepts are often shared between engines just like they're shared between languages.
     
    RavenOfCode likes this.
  15. Ony

    Ony

    Joined:
    Apr 26, 2009
    Posts:
    1,973
    Both Unity and Unreal start with the letter "U". CryEngine, however, starts with a "C". "C" comes before "U" in the alphabet. All of the most famous and powerfully elite programming languages also start with the letter "C". Those languages are particularly compelling for enterprising game developers working on open world MMOs, for the record. Interesting. But I digress.

    CryEngine is clearly your best bet. With that said, you could always use the A8 (Acknex) engine... it does start with an "A". Then again, its programming language is C-Script. Hmmm. Decisions, decisions.
     
  16. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    @Ony: Is this where I say I "C" what "U" did there? :p
     
    QFSW, darkhog, Teila and 4 others like this.
  17. Ony

    Ony

    Joined:
    Apr 26, 2009
    Posts:
    1,973
    "A", that's funny!
     
    QFSW and Ryiah like this.
  18. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    1. You want to experiment with shaders. A lot. With totally custom shaders. Unreal shaders fit into very specific model, going beyond that model is hard.
    2. You need mecanim.
    3. You're making a 2d game.
    4. You don't know C++ well and can't read engine source code. And you hate blueprints/"visual programming".
    5. You are not going after realism in your project. (I would not pick unity for a first-person game or a game where you need to see a character very close)

    In case of using C# reaching that end will involve much more swearing. They are not equivalent, C# is inferior. Also, not having a delete keyword while generating garbage all the time in language that is supposed to be used on mobile platform is plain insane.

    Both communities are equally helpful, meaning in most situations you'll be on your own. Unity community is usually more mature and have more entertaining general section, though.
     
    Last edited: Jun 19, 2016
  19. BrUnO-XaVIeR

    BrUnO-XaVIeR

    Joined:
    Dec 6, 2010
    Posts:
    1,687
    Yes, their 2D is only one guy expanding on it; and from what I get from his words, he did it for love, EpicGames didn't asked for that Paper2D module at all.
     
    ramand likes this.
  20. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    If you say so. I just know I've yet to find myself held back by C#, except in the sense perhaps that Unity's C# and its framework are ancient now, or particularly annoyed by it. That said I don't generally bother with mobile.
     
    Ony likes this.
  21. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    Happens all the time to me.

    Basically the only two nice features C# have are yield and extension methods and that's it. (If you start writing code that relies entirely on extension methods result will be okay, BUT it will be completely unlike normal c#.)

    For everything else, I routinely run into situation where language simply cannot give me sufficient level of control.

    Then again, I spent a LOT of time programming in C++.

    The one feature I miss the most is deterministic object lifetimes and RAII. You know what object dies, when and why. With C# you'll be wasting your time in profiler.
     
    tatoforever likes this.
  22. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    That you're even asking the question probably means you need the extra hand holding and ease of use Unity and the Unity Learn section gives.
     
    Kiwasi likes this.
  23. Meltdown

    Meltdown

    Joined:
    Oct 13, 2010
    Posts:
    5,797
    For development efficiency, C# is way more efficient to code in and get results than C++ is.

    C++ is also a really old language.
     
  24. Aiursrage2k

    Aiursrage2k

    Joined:
    Nov 1, 2009
    Posts:
    4,835
    Youd have to ask someone who actually used both. Id rather just go back to ogre3d if I had to
     
  25. JasonBricco

    JasonBricco

    Joined:
    Jul 15, 2013
    Posts:
    956
    And of course we'll have our C# transformed into C++ for us, anyway... granted, that doesn't give you the memory control (I'd personally love some more control over memory in C#). And it probably needs a lot of work. But one day... should be pretty close to the best of both worlds.
     
  26. iamthwee

    iamthwee

    Joined:
    Nov 27, 2015
    Posts:
    2,149
    Unreal if you're going for AAA 3D stuff, unity if you're going for 2d mobile like games.
     
  27. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    I think you already made your choice about UE4 , and you already know a lot about both engines to stick top your choice.
     
  28. nipoco

    nipoco

    Joined:
    Sep 1, 2011
    Posts:
    2,008
    I think Unity is a lot more capable, than just for 2d mobile games.
     
    AwesomeX, jtsmith1287 and JasonBricco like this.
  29. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    Yeah, about 2 years old. Latest standard has been released in 2014. The language has been evolving and appears to be borrowing all the useful features from all other languages.

    See, this is why I hate discussing programming languages on this forum. Haven't seen even ONE person on this forum who used C++ for a long time. Majority of people who can program uses C#, and only small portion of them are good.

    Yet everybody believes that C# is "da best" and want to crush every heretic that thinks otherwise.
     
    landon912, tatoforever and AcidArrow like this.
  30. Meltdown

    Meltdown

    Joined:
    Oct 13, 2010
    Posts:
    5,797
    Yep, I don't keep up to date on it, so my bad for saying its archaic. But my argument for efficiency I still think is valid. At least from my limited experience with doing some scripting in Unreal.
     
  31. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    Sure, but that's just the revision to the language. The language itself is the same age as me. Thirty-three years. Unless they've completely replaced the most commonly used portions of the language in which case I better start reading up on it.
     
    Meltdown likes this.
  32. SunnySunshine

    SunnySunshine

    Joined:
    May 18, 2009
    Posts:
    954
    Freedom from royalties and paperwork regarding reporting back profits to Epic games.
     
    theANMATOR2b, nipoco and neginfinity like this.
  33. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    Well, you better start reading up on it.
    Basically, each major revision required re-learning the language, and C++11 code had very little in common with original C++.

    If you as a human underwent similar amount of change as C++, then by know you'd know how to fly, breathe fire and land on the moon by yourself without a spacesuit or a spacecraft.

    Alright.

    See? Limited exprience doing scripting, not programming, and within confines of the engine as well.
    It roughly goes like this:
    Languages that have features to "ease programmer's life", like garbage collectors, automatic creation of variables, etc offer faster development in the beginning of the project, and significantly more potential trouble down the road. Basically, all features that make your life easier take away your control over program's behavior in some way.

    For example, Python is one of the easiest language to get started with, and it has this amazing property that you can't detect certain errors until the program tries to execute the function with error in it. So, by using python, you can introduce a timebomb typo into project that may get discovered few years after application has been deployed.

    In case of C#, such timebomb is created by garbage collector. Because the language is designed to be used in such way that you don't worry about memory allocation, it is easy to write a code that creates performance problems... especially on mobile platforms, where it is a limited resource.

    In addition to that, because C# is sorta was designed to be "easier to start with", it has less power tools than C++ does. I've been constantly running into situation where I couldn't do something that was trivial in C++ but C# didn't have tools for it (where the hell is protected inheritance, for example? What if I need some macros? Why are generics more limited?, etc).

    Basically, in case of C++, language is more "expensive" - development speed is slower, training takes a bit longer, BUT as your project grows, your codebase remains stable and under your complete control, where you can adjust every aspect of your program to your needs. In case of langauges like C#, as your project grows you'll have increased chance of running into something that gets in the way and is not under your control.
     
    Velo222 and tatoforever like this.
  34. JasonBricco

    JasonBricco

    Joined:
    Jul 15, 2013
    Posts:
    956
    I just wish C++ would clean up some of the old ways and reduce the complexity. Its insane complexity is largely the result of trying to remain compatible with older software, not that it needs to be that way.

    Honestly, I'd rather be able to focus on programming rather than having to wrestle with an insanely complicated language. That's why I tend to prefer C programming with minimal use of C++ features if I do low level.

    C# is clean, not a giant pile of multiple languages combined into one, and I can focus on programming. Otherwise it's like spending my life trying to master the language [syntax] on top of spending my life mastering problem solving.
     
  35. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    Right, I knew C++11 and some of the older revisions brought massive changes. But C++14 is very minor by comparison and the same appears to be the case right now for C++17.
     
  36. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    I will not be doing a semantic argument, thanks.
    At least one of those "minor" changes can have massive impact on coding style.

    Sorry, I don't think it can happen. The idea of C++ appears to be giving the programmer maximum cosmic power. This will unavoidably result in complex language that takes time to learn it.

    That won't teach you much of the modern C++, though. Grab some C++11/14 guide and learn that language now has lambdas, auto variables, constexprs, learn what the heck RAII/Rule of the three are and you might get it. Also Qt 5 framework used to have fairly clean C++ code.
     
  37. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,509
    There's certainly some stuff I'd rather be doing in C++ than C#, and some stuff I'd rather do in C# than C++.
     
    QFSW, mathiasj, Ryiah and 1 other person like this.
  38. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
    Sure, that can easily be the case. That said it requires your place of employment to use a compiler that supports them.

    Not that it needs to be simplified. You can just restrict yourself to a subset.

    Any recommendations for guides? Only reference material I have for C++ is the following and it's from 2004.

    https://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973
     
  39. cyberpunk

    cyberpunk

    Joined:
    Mar 20, 2013
    Posts:
    226
    There's a newer edition of Primer Plus, but you can also go straight to the source.
    https://www.amazon.com/C-Programming-Language-4th/dp/0321563840/

    In any case, I think Unity is a better choice for productivity reasons. It's just easier and quicker to prototype things than almost any engine or framework out there (at least the ones I've used). Unreal, I guess, could have better graphics (provided you feed it good artwork) but you can still make something look nice in Unity.
     
  40. JasonBricco

    JasonBricco

    Joined:
    Jul 15, 2013
    Posts:
    956
    To be fair, I do own Bjarne Stroustrup's "The C++ Programming Language, 4th Edition" book that walks through every feature in C++11 at least. I've been reading through it in attempt to teach myself modern C++ features. I won't deny that the language is powerful. And, probably if Unity allowed programming properly in C++, I'd use it.

    But I won't say that I would enjoy using it. I'd like native performing C# with better memory control and the ability to turn off the safety checks once you are ready to release.
     
    CarterG81 and Ryiah like this.
  41. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,124
  42. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    If the OP is still at the stage of choosing an engine, chances are they can't really take advantage of any of the finer points of C# or C++.

    I helped out a relative with some C++ homework for first year comp sci the other day. At that level the languages seem identical.
     
  43. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    Nope, sorry. (It is pretty much like asking me to recommend a great blender tutorial - started long ago with C++)
    You'll need to scout beginner sections on programming resources.

    You CAN, however, grab latest stroustroup's creation (4th edition) and I think its first chapter was available as a smaler separate book (a tour of C++ or something). That one won't include C++14.

    Fair enough. A language should complement programmer. It is entirely possible that C++ is not your thing.

    I think you can get close to C# in C++, by restricting yourself to a subset of features. (you don't exactly need to use raw pointers in C++, std::list is not exactly different from IList, interfaces can be emulated via inheritance, etc). Also you might be able to find your perfect langauge if you define which features of C++ you'd want.
     
    Ryiah and JasonBricco like this.
  44. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    I used C++ for a long time. I used the rarely used template feature to convert hundreds of K&R C programs on Xenix to ANSI C++ compliance on SCO UNIX. To my big disappoint they took all that work while I was gone at Basic & AIT and converted the templates to full blown C++ classes creating many bugs in ANSI C programs that were mostly working as the template conversion revealed bugs the K&R compiler couldn't report because of specification ambiguity.

    I like C# better though, but if I'm honest, mainly for it's association with Unity and the awesomely helpful hits about the .NET and Unity API in the VS 2015 IDE for the clueless such as myself. I don't even need to open a PDF, HTML or book to figure out what I need to do most of the time. I don't like objective C at all, and way before Apple made it cool. I like C the best for systems programming though.
     
  45. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    They can.

    For example, C# does not have const reference parameters. So you pass a reference type into function (like List<something> ), and contents of the function can modify the object.

    In case of C++, you can explicitly specify that "in no circumstances will this function modify the object being passed into it" and compiler will throw error at you if you try to do that.

    In similar fashion, methods can be marked as "const" in C++, meaning that calling method will never modify internal state of an object. C# does not have this feature.

    It is still better than python which does not even have visibility control for object fields, and relies on "please don't touch fileds with names that start with underscores! Please, please, please!".

    Those things, like const references are sorely needed in C#, because tools like these, they guarantee that a function you call will not do something unexpected at some point in future. And THOSE kind of features in the long term scenario cement stability of the program.
     
  46. AdventurousDrake

    AdventurousDrake

    Joined:
    Mar 18, 2015
    Posts:
    25
    You didn't give any info about what kind of games and platforms you are targeting, so it's really difficult to help you out. All I can say is that both have their advantages and disadvantages. If you give more info, I could probably help out more.
     
  47. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,001
    Unity has certification now, if you are interested in collecting useless pieces of paper (or e-paper).
     
  48. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    C++ has it's place and that place is optimised engine code or where you need maximum control and speed in a way understood by any hires you come across, with the best compilers in the world.

    It's piss poor as a choice for game logic though.

    Languages do suit tasks. C# is simply a poor choice for a modern engine, but a great choice for driving that engine.

    So basically, yeah. C# is a better choice in a Unity context. By far. Check out how your C# will be talking to Unity's C++ - best of both worlds!

     
  49. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,509
    I've never understood the lack of const in C#, and it drives me just a little bit nuts sometimes.
     
    neginfinity likes this.
  50. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,321
    That's an incredibly weak argument, because nothing in this list requires C# or benefits from using C#.

    There's also a problem of middleman, because core of the engine is still written in C++, so when you communicate with C# code, there's marshalling of data types going on. This kind of thing is very obvious when, for example, C#-side update scripts are being called (see 10000 update calls blog post), and I think it was mentioned in at least one place that people had issue using unity as renderer for their robotics system because data has to go C++-->C#-->C++ in order to pass from their software to unity renderer.

    The reasonable thing in this case would be to expose said api as both C++ and C# classes and let people use whatever they prefer. Insisting on using C# would also make sense if the whole engine was written in it. Otherwise it doesn't make much sense.
     
Thread Status:
Not open for further replies.