Announcement

Collapse
No announcement yet.

Programming Tutorials, (C++ Tutorials)

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

    Programming Tutorials, (C++ Tutorials)

    Hey guys,

    I learn't C++ about a year ago, and was hoping to start game programming and making some C++ games in UE, however... When i go to look at the gameplay classes and the API, I realize this is all I have, Your C++ video series on the youtube channel is out of date, and that is the only resource you have for the C++ developers to start game programming in UE, (I know this word is forbidden here) But Unity do a much better job of this, Yes I know they use C# which is a bit of an easier language, however they post way more programming tutorials on their channel than Unreal. The Twitch streams just cant compete with the shear quality and quantity of the videos the Unity guys are uploading. Personally, I feel quite disappointed in the resources C++ developers have to help them understand game programming in Unreal Engine. Maybe start a videos series, or a Twitch Training C++ Stream?

    Yes the Docs are useful, but many people (including myself) are going to get bored just reading the Docs, Alot of people learn alot easier from videos aswell.

    Thanks in advance!
    -- Reece

    #2
    I don't think Unity is a forbidden word, so much as it has been talked about to death. Unity doesn't hold a candle to Unreal 4 in terms of functionality. Also, Unity is considered stable. Unreal is in a heavy state of change right now, and keeping up with documentation would be incredibly difficult and consuming.

    I've even put off creating C++ tutorials until the dust settles. Just to many things are changing, so if you want to dive into C++, the examples are the best route. If you are unfamiliar with UE4, you need to start with Blueprints. Blueprints will expose you to the Unreal API, and there are allot of tutorials for them.

    Why? The difficulty with Unreal C++ isn't the C++, it's the layer of API on top. If you know C++ and understand Blueprints, coding becomes much easier.

    Comment


      #3
      I will say this here, as I was going to start my own thread but i feel my thoughts are much more meaningful in this thread.

      Take this picture for example, the original poster said "Buddy doesn't know why, he just does what Cooper does." It's a perfect example of the difference of knowing what to do and why to do it.

      I don't feel like the any of the tutorials they(epic) have done so far, even remotely describe why to do something the way they(epic) tells you to. They just tell you what to do, and you hope for the best. I'd go even as far as to say almost every generic tutorial talk/lecture in general i've ever seen does a terrible job of describing why to do something a specific way. Epic's tutorials i feel are also in this boat. Not just c++ tutorials but bp's too. The how to do something is for documentation, the why to do something is for a tutorial. How to do something is completely useless if you don't know why you're doing it. This statement is completely vice versa-able, but the point is we have the how already (docs) we need the why to fulfill in the cracks left over from the docs.

      I feel like this is a problem with education in general, but I feel like epic should be aware and try and describe why you would take this specific route 'z' in completing 'x' or 'y' task.
      Attached Files
      Youtube
      Machine Learning C++ Plugin
      Lindenmayer System C++ Plugin

      Comment


        #4
        Originally posted by SaxonRah View Post
        I will say this here, as I was going to start my own thread but i feel my thoughts are much more meaningful in this thread.

        Take this picture for example, the original poster said "Buddy doesn't know why, he just does what Cooper does." It's a perfect example of the difference of knowing what to do and why to do it.

        I don't feel like the any of the tutorials they(epic) have done so far, even remotely describe why to do something the way they(epic) tells you to. They just tell you what to do, and you hope for the best. I'd go even as far as to say almost every generic tutorial talk/lecture in general i've ever seen does a terrible job of describing why to do something a specific way. Epic's tutorials i feel are also in this boat. Not just c++ tutorials but bp's too. The how to do something is for documentation, the why to do something is for a tutorial. How to do something is completely useless if you don't know why you're doing it. This statement is completely vice versa-able, but the point is we have the how already (docs) we need the why to fulfill in the cracks left over from the docs.

        I feel like this is a problem with education in general, but I feel like epic should be aware and try and describe why you would take this specific route 'z' in completing 'x' or 'y' task.
        I believe that is unfortunately true. There are indeed very few good programming tutorials out there. Not just for UE4 but programming in general. Most tutorials are either an API reference in disguise or a recipe how to recreate something piece by piece. The only book about programming that gave me the impression that I really learned something about programming was a book about design patterns that was almost completely 'programming language agnostic'. All concepts were described with words and pictures and even though there were examples in C I could easily understand why the code was written the way it was. (I should note that I had never read or written anything in C at that point.) Transfering the learned things to my 'native' programming language was easy.

        Maybe something like that would work for UE4 as well. Start with the project you want to create. Explain the design patterns that are used to achieve that and how that fits into the engine framework. The actual implementation should be straight forward from that point and could be skipped by more experienced C++ programmers. And most importantly: explain why you decided to use that specific design and not one of the hundreds of other possible approaches.

        EDIT:
        I will add a short example of what could be improved:
        I am currently thinking about what would be the best way to implement a basic AI. I know there are behavior trees that are probably designed for that purpose and there is a quickstart tutorial that explains (well, it rather shows than explains) how to create a basic AI. But to be honest, I still do not know why I should use a behavior tree instead of scripting the whole logic in blueprints. I mean I need blueprints anyway and I feel comfortable using them. What are the advantages of using behavior trees or does the usefullness maybe depend on some external factors like the desired complexity of the system. All I took from the tutorial was that behavior trees are some kind of vertically arranged blueprint nodes. I am convinced that they are much more powerful and that there is a purpose for the coexistence of blueprint and behavior trees but at least I did not get it from the tutorial.
        Last edited by Praseodyl; 02-17-2015, 05:08 AM.

        Comment


          #5
          For me "Why" is the magic question when it comes to learning. Don't get me wrong I’m really very appreciative of all the assistance and guidance we've received, but unless I know why I’m doing what I’m doing then when what I want to do is slightly different to the video then I sometimes struggle.

          I think what would make it that better would be more explanation of the API, maybe something similar to a class library for both C++ and Blueprints, throw in some explanations and examples too. I don't like making similarities and comparisons with Unity as they are both in completely different stages of their life cycle but something similarly to Unity. Not there videos as they are much of a muchness but a list the functions and uses but more importantly that how, is what it can do and why it does it.

          When I was originally learning to programme (hell I even do it now) I would spend ages looking through the Java class libraries, finding out how things worked etc. I think something like that for both the C++ and the Blueprints would be a great help for trying to work out not just how but why we do what we do.
          RedMage Industries

          Comment


            #6
            Hi everyone,

            C++ documentation is actively being worked on by the documentation team. Jeff Wilson has posted on the forums several times about this topic and we realize that it is an area that needs some attention. Thank you for your feedback, are there any particular tutorials or documentation that would be particularly beneficial to you? I would be more than happy to pass that information along to be considered!
            Adam Davis | Marketplace Support | Epic Games
            How to report a bug? | Installation & Setup issues? | Answerhub Bug Reports | Twitter

            Comment


              #7
              I honestly never programmed but I digged in anyway because I felt I want to take advantage, at least for my Bachelor to work the Hybrid way. Now my experience took me now 4 weeks where I feel comfortable enough to create basic classes that help me to be reused or define some properties that needs to be spread through several BP Classes. So form there I can only say that it was fairly okay, with the things out there. Maybe I got lucky since I started with 4.6.1 where before some things were applied differently.

              But yes I would very much so would love to see much more, and the only things helped me the most were Ramas Wiki Posts in general.
              - Martin

              A Simple Prototype

              https://www.martinegger.org/

              Technical Producer

              Comment


                #8
                Adam:

                Frankly, the technical API documentation is pretty good, and having the Engine source code available is amazing. For experienced C++ programmers who know what they're looking for, life is pretty good.

                The problem is, you don't know what you're looking for when you're new. You don't know what you don't know, so to speak. I think the biggest bang for your buck would be more in-depth conceptual documentation. Not just "here are the steps to do X", or "here are the functions available on class Y", but pick an area, say Memory Management, Player movement, or AI, or whatever, and do a:

                - Getting started guide. A short high level overview that also tells you the things you should already know before diving in further, with links to resources where you can learn those things if you don't already know them
                - High-level architecture document that talks about the design from a 10,000 meter view, and also talks about the design choices that were made while creating it. More answers to questions that begin with "Why…".
                - "Recipes" for common tasks game developers need to do.

                You're already doing a lot of this kind of stuff with Blueprints, mostly in videos. Watching Zach or one of the other technical artists take us through a project is incredibly helpful and I always learn a ton from those videos (Kudos to that team all around). On the other hand, the C++ resources have been much more sparse, and when they exist, like the Intro video series - https://www.youtube.com/watch?v=vtcWrcscXos - they tend to be more step-by-step, with a relative dearth of "whys". They would benefit greatly from more discussion - what different macros and classes we're being told to use do. When should we use different parameters instead of the ones being used by the author? When might we choose not to use this construct, or what common cases are there were something different would work better.

                Overall, it would be good if there was more material with more depth. You're constantly producing great learning content for Blueprint, but it almost seems like you expect C++ programmers to roll up their sleeves and figure it out the hard way by poking through API docs and engine code. That's an option for those of us with more programming experience, but it puts up an incredible obstacle to newer C++ programmers or those who want to learn to write code.

                Comment


                  #9
                  Originally posted by Adam Davis View Post
                  Hi everyone,

                  C++ documentation is actively being worked on by the documentation team. Jeff Wilson has posted on the forums several times about this topic and we realize that it is an area that needs some attention. Thank you for your feedback, are there any particular tutorials or documentation that would be particularly beneficial to you? I would be more than happy to pass that information along to be considered!
                  I would like to see some solid explanation of engine "core" - what parts it includes, why and how they work together, just mega basic stuff. 75% of my journey into UE4 C++ was disassembling UE4 in pathetic attempts to understand how exactly such complex system is working, but without experience and guides(And there is none) it's nearly impossible. I've implemented gameplay stuff that I need, but I know almost nothing about engine itself :<
                  SuperGrid: Marketplace Page | Feedback Thread | Demo | Website
                  Level design and prototyping for newbies

                  Comment


                    #10
                    Originally posted by Adam Davis View Post
                    Hi everyone,

                    C++ documentation is actively being worked on by the documentation team. Jeff Wilson has posted on the forums several times about this topic and we realize that it is an area that needs some attention. Thank you for your feedback, are there any particular tutorials or documentation that would be particularly beneficial to you? I would be more than happy to pass that information along to be considered!
                    Thanks for hearing us out about this issue Mr Davis! =)

                    For me it is not the isolated topics like "How to make a material" or "How to animate a character" kind of tutorials that needs the primary focus. What Unreal (and usually other programs) lack is the knowledge gained from questions that are addressed and starts with "What", "Where" & "When". The "How" i.e. "how to step by step tutorials and documentations" on the other hand are essential of course, but not primary, rather secondary.

                    To give a good example of an excellent "What", "Where" & "When" documentation, we have the Qt C++ framework! Qt documentation has a really good grasp of every available class, containing information about the class usage, purpose, functions etc. Also the Qt documentation teaches you the basics about Model/view programming and related Qt classes to it, and also Qt features like the signal slot system.... and much more that I could type about but you get the idea already I guess. The Qt documentation gives ALOT of handy information that answers the "What", "Where" & "When" questions without even touching the tutorial world! Can't stress it enough that it is so MUCH easier to follow a tutorial about a subject when you only want to know "How" to do something when you already know the answers of the "What", "Where" & "When" questions.
                    The "What", "Where" & "When" questions usually describes the concept of a feature or tool, it's purpose and why Epic has design it the way they have.

                    What confuses me the most with Unreal is the "What", "Where" & "When" questions, when I figure out those question the HOW to do it usually make sense logically and in some cases comes naturally with some minutes of poking around.
                    BUT to learn the "What", "Where" & "When" questions with just poking around takes ages.... no really it takes freaking long time!

                    That's the best way I can currently put my perspective into words, hope I make sense of this subject to you (again from my perspective).
                    Last edited by HappyPie_PewPew; 02-17-2015, 01:59 PM.

                    Comment


                      #11
                      Originally posted by jeff_lamarche View Post
                      - Getting started guide. A short high level overview that also tells you the things you should already know before diving in further, with links to resources where you can learn those things if you don't already know them
                      - High-level architecture document that talks about the design from a 10,000 meter view, and also talks about the design choices that were made while creating it. More answers to questions that begin with "Why…".
                      - "Recipes" for common tasks game developers need to do.
                      This is basically exactly what we are working on currently.
                      Unreal Engine Documentation
                      Bored? Follow me! @ffejnosliw

                      Comment


                        #12
                        I'm actually picking through the API and source code and writing my own overview of C++ in UE4. its taken a few months to pick it all apart and get a sense of how it all fits together. almost there though now.

                        Mostly a lot of confusion comes when figuring out the purpose of certain classes. One example is the player controller which is designed to be the will of the player but has a controlRotation that controls the pawn's view. Also how the movement components, pawns and physics capsules are interrelated. The way I've been working it out is to make a list of the flow of operations from the input stack all the way though the controller->pawns->movementComponents->root and figuring out the reason behind the heirarchy. It's not easy! Sometimes the classes call on their movement components which in turn simply call back on their parents internal function. bit of game of cat and mouse. Once I'm finished, I'll have a nice flow diagram of how it all fits together.

                        I think a nice thing to do would be to make a movement component that was somewhere between a pawnMovementComponent and CharacterMovementComponent in terms of complexity.
                        Visual Effects Artist, Weta Digital, Wellington New Zealand
                        BLOG www.danielelliott.co.uk
                        @danielelliott3d https://twitter.com/danielelliott3d
                        Unreal Engine and VFX Tutorials https://www.youtube.com/user/DokipenTechTutorials
                        2015 Showreel: https://vimeo.com/116917817

                        Comment


                          #13
                          Originally posted by The Britain View Post
                          Why? The difficulty with Unreal C++ isn't the C++, it's the layer of API on top. If you know C++ and understand Blueprints, coding becomes much easier.
                          Unreal C++ is C++... don't confuse people
                          =========
                          My Tutorials:
                          Basic knowledge about Classes and UObject environment and stuff like that

                          Comment


                            #14
                            https://www.youtube.com/watch?v=zg_VstBxDi8

                            This is good example of what I would like to see in terms of C++ documentation (and thanks, for doing this video).
                            It shows what you need to know, to get started, not necessary how to build new button, out of context.
                            It might not teach you how to build button, but it will teach you where to find example implementation, and proceed from here.

                            With such huge code base as UE4, it's actually more important to know where and why, than how.
                            https://github.com/iniside/ActionRPGGame - Action RPG Starter kit. Work in Progress. You can use it in whatever way you wish.

                            Comment


                              #15
                              Originally posted by Jeff Wilson View Post
                              This is basically exactly what we are working on currently.
                              Well… carry on then.

                              Originally posted by Shadowriver View Post
                              Unreal C++ is C++... don't confuse people
                              Honestly, this really isn't an unfair distinction to make. I tend to think of Unreal C++ as a distinct dialect of C++ also. Unreal Engine provides a lot of functionality you would normally get from the language, standard libraries, or standard template library. Some of that is very basic functionality like memory management, strings, file management, etc. There are also very specific requirements to make your code work properly with the engine and editor.

                              Comment

                              Working...
                              X