Announcement

Collapse
No announcement yet.

Why C++ for Unreal 4?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by Sharpfish View Post
    I'm glad they haven't layered on any other kind of 'scripting' - C++ is where it's at and my years of learning that won't go to waste. C++ is fast, and direct access to the source code is a dream come true for coders. Learning C++ was also rewarding (though I should point out I'm now rusty with it and I still had much to learn on more advanced topics even back 10 years ago when I wrote my own simple D3D8 engine before I tacked my own game engine onto Irrlicht).


    P.S I hate Javascript and C# doesn't do much for me either. I went from 'BASIC' (on the Amiga) to C++ (didn't even know 'C' before starting) and it wasn't too bad in the end. I figured if I'm going to spend years learning something I may as well shoot for the top of the tree (no, not assembly or machine code lol). With C++ I felt there was literally nothing I couldn't create, on a technical level, and knowing it was may more likely to run my code at far faster speeds than higher level languages was a massive incentive to roll my sleeves up and dig in. I became addicted to learning C++ as geeky as that may sound, I never felt that way about the other languages I've since dabbled with (which if anything I find frustrating for all their hand holding and so called ease of use)

    I have written in so many languages over the 8 years of my programming career. C#, Java, PHP, JavaScript... C++ is by far the most expressive language especially with strap-ons (try not to laugh) like Boost or even just C++11's additional functionality with brings it into the modern age.

    C# is definitely my second choice in terms of elegance and modern features. The C# plugins from the booming community also rock and its tight integration with vs is beautiful.

    I cannot agree more... C++ should by no means be considered an underdog at any point. It is overwhelmingly simple to understand, robust, fast, reliable!!!... and gives you so much freedom.

    I am also very glad that they are not packing on c# wrappers and abstracting stuff to within an inch of its life. It is genuinely important that coders get as much control as they can with as little learning overhead as possible... I would imagine that this is even more important in huge applications like games.
    Last edited by jimmyt1988; 07-29-2014, 10:16 AM.

    Comment


      I think the main reason for C++ in UE4 is simple, it gives unrestricted access. If you want a feature, it is just on your resources and skill to implement it. With most engines, if you want a feature not explicitly thought of you either had to buy a Source Code license or were SOL.

      One of the biggest complaints I heard about UE3 and previous versions was UnrealScript. While personally I liked it, companies hated it. The reason was it made for a very small pool of people to hire from that had experience in it and I watched most programmers just fight it and complain. By the time they had learned UnrealScript well enough to use it they had allready designed and implemented the main architecture for the game and there was no turning back to redo it. Now, companies can just hire C++ programmers. Much wider pool to find engineers with experience.

      Comment


        Originally posted by Gigantoad View Post

        Are you not the least bit excited about being able to develop and debug right in the engine source code?
        Not really no, if I wanted to learn an engines source code I'd make my own engine instead of trying to reverse engineer other peoples work. Also the reason why I really don't care is I use engines to speed up game development, the game is what's important not what you use to get there.

        I'm not really fussed what language people use to make games, if C# is quicker from a development speed angle that's what I'll use. If my team is more familiar with C++ that's what I use, in terms of speed the only thing I care about is the game meets latency requirements to run at a decent speed across the board. C# could be 50X slower for all I care, if my game is performs within boundaries for console and minimum PC specs than it's good enough for me.

        It's all about the end goal and a language is a means to an end.
        Last edited by ShadowKindGames; 07-29-2014, 01:05 PM.

        Comment


          Originally posted by ShadowKindGames View Post
          Not really no, if I wanted to learn an engines source code I'd make my own engine instead of trying to reverse engineer other peoples work. Also the reason why I really don't care is I use engines to speed up game development, the game is what's important not what you use to get there.
          My main point was that you can debug stepping through the engine source code, providing a better understanding of why something in your own code may not behave as expected.

          Originally posted by ShadowKindGames View Post
          I'm not really fussed what language people use to make games, if C# is quicker from a development speed angle that's what I'll use. If my team is more familiar with C++ that's what I use, in terms of speed the only thing I care about is the game meets latency requirements to run at a decent speed across the board. C# could be 50X slower for all I care, if my game is performs within boundaries for console and minimum PC specs than it's good enough for me.

          It's all about the end goal and a language is a means to an end.
          That's certainly true and if you're that pragmatic, you may end up choosing Unity in case C# is so important.

          Comment


            Originally posted by Gigantoad View Post
            My main point was that you can debug stepping through the engine source code, providing a better understanding of why something in your own code may not behave as expected.



            That's certainly true and if you're that pragmatic, you may end up choosing Unity in case C# is so important.
            You could do, but you may be missing out on important tools and feature sets that Unity doesn't have. I wouldn't shy away from C++ just because it's C++, it might be a little scary to some but I hope as a community we can give them a helping hand.

            Comment


              Originally posted by jimmyt1988 View Post
              It is overwhelmingly simple to understand
              The book Exceptional C++ very quickly disabused me of the notion that C++ is simple to understand. If that doesn't do it, a peek at Boost's source code will.

              Comment


                Originally posted by furrykef View Post
                The book Exceptional C++ very quickly disabused me of the notion that C++ is simple to understand. If that doesn't do it, a peek at Boost's source code will.
                C++ the language is very logical, is very strong typed so its API is exceptionally inferable compared to... PHP or javascript for example. It has enough choice to shake a stick at which also makes it often easy to work with. I'm not saying the C# isn't the same... It really is, it's exceptional... but C++ is going to obviously be the language choice because you retain all of that lower level functionality.

                This is what I mean by overwhelmingly simple... Just in comparison to other languages that sometimes have too much give in them to be inferable enough to take guesses and those guesses work.

                Comment


                  Revision control usually doesn't work well with binary files. If blueprint files are binary, then a special tool of some kind is necessary to diff them and merge changes properly.
                  Yeah, yeah, you can't diff binary files meaningfully or merge them, but you can still keep historical versions. Since I have actually used Git, Subversion, StarTeam, and CVS in commercial production environments I can tell you that even this rudimentary functionality is a life-saver. Just being able to easily revert back to a working version is helpful. If you need some sort of actual binary merge/diff tool then I'd recommend an add-on/plug-in anyway - how is any VCS supposed to deal with every possible binary data format on the planet?

                  Comment


                    very nice!

                    Comment


                      I am finishing-up some pluralsight courses nowadays, and also going through Channel-9's in-depth lectures about C++, by STL (the person, not the library...)
                      I ended-up reading through his detailed blog-posts which are also outstanding - I just spent the entire day going through the second in a 3-part blog-post about C++11 features (from when it was still called C++0x). I can comfortably say that I eventually managed to fully comprehend roughly 90% of it, and I consider that a personal-achievement. But I think the comment below the post speaks volumes...

                      Here is the video that led me to read all this (it has links to all 3 parts below):
                      http://channel9.msdn.com/Shows/Going...ins-Inside-STL

                      In any case, C++ 11 is ultra cool and all, but a lot of it is "anything-but" simple...
                      While some features simplify code and semantics (such-as: auto, range-for, smart-pointers, initializer-lists, variadic-templates, perfect-forwarding), others just add much more complexity by "leaking-out" compiler-logic onto developer-space (like RValue/LValue explicitness/conversion, move-semantics, 'explicit'/'implicit', 'override/final', '= delete'/'=default', Lambda-capturing-semantics). These last ones are really mainly for library-writers, and while they do add even more expressive-power, you still have to learn them even if you don't write libraries, because now that they're in, you are going to encounter them, so you have to at least know what they mean and how they are used - and this adds to your list of things to learn, some of them necessitates going way too deep (for most developers) into compiler-land/standardese. So, in some senses C++11 becomes less-intimidating, but then in many others it becomes even more so...

                      Comment


                        Many common C++ pitfalls that even professional coders will make and that most compiles won't tell them about (some C++1 ones):
                        http://channel9.msdn.com/Events/Goin...illion-Monkeys

                        Ans some more C++1 ones here (some really scary ones...):
                        http://channel9.msdn.com/Events/Goin...of-C-s-Dragons

                        Comment


                          ^^ Blizzard used Unity for Hearthstone. Is that game considered AAA or not? I dunno. Regardless, it would be rather strange to claim C# will not be used in AAA games when it is already being heavily utilized in several titles
                          Did they really use Unity for that? That would be surprising. Why bother with the full 3D engine for something so 2D?

                          And yeah, I'd say that it is indeed AAA. Lack of ultra realistic graphics doesn't cause a game to not be AAA. Mostly "AAA" means its a professional game that hits the major platforms, has high implementation quality, and is part of the "core gaming" community in some sense.

                          Comment


                            Originally posted by ShadesOfRain View Post
                            Did they really use Unity for that? That would be surprising. Why bother with the full 3D engine for something so 2D?
                            What would you use instead?

                            Comment


                              Originally posted by ShadesOfRain View Post
                              Did they really use Unity for that? That would be surprising. Why bother with the full 3D engine for something so 2D?

                              And yeah, I'd say that it is indeed AAA. Lack of ultra realistic graphics doesn't cause a game to not be AAA. Mostly "AAA" means its a professional game that hits the major platforms, has high implementation quality, and is part of the "core gaming" community in some sense.
                              Because Unity, like Unreal, is more than just the 3D renderer. It's a framework you use to build games, and in the case of Hearthstone, the ease with which games can be implemented and deployed across multiple platforms makes it a very good choice indeed.

                              Comment


                                Originally posted by ShadesOfRain View Post
                                Did they really use Unity for that? That would be surprising. Why bother with the full 3D engine for something so 2D?

                                And yeah, I'd say that it is indeed AAA. Lack of ultra realistic graphics doesn't cause a game to not be AAA. Mostly "AAA" means its a professional game that hits the major platforms, has high implementation quality, and is part of the "core gaming" community in some sense.
                                I always thought AAA was defined by how much budget it was assigned. Seems it wasn't like that originally.

                                http://en.wikipedia.org/wiki/AAA_(game_industry)

                                Comment

                                Working...
                                X