This is a very sensible post containing very sensible information about a very sensible topic. But, and this the fun bit, that sensible skill of coding in a language like C++ can be high-jacked and used to create monstrous abominations of grown up games! A bit like the one I have been banging on about on the journal for a while now…
The problem that I face at the moment is that I’m not a real live boy. I am the Pinocchio of game development, wooden, due to the fact that the only tool I know how to use in any depth is Unreal’s Blueprint visual scripting system. A fantastic and very elegant, powerful way to make complex stuff, but, ultimately too specific to the Unreal engine and therefor by definition, not transferable. There is also the other problem of Epic’s code hobbit running off down the narrow, dank and dim dungeon corridor clutching a whole host of advanced engine features in its grubby, slimy little digits. His little raspy voice can be heard echoing back toward this wooden boy and it says ‘You’ll never get these extra features, like the adventurers before you, you will perish as the hand of the Compiler!’. First off, who is this Compiler and second, I’m ready! You hear me you little slippery hermit? I’m ready!
On a more serious note, one of my SMART goals is to learn C++ and so I thought I would talk a little about how I am going about that and how I am finding it.
The Course and the teacher
The course is laid out in a real ‘lets start at the beginning’ format. Perfect for someone like me that knows a bit, but could really do with starting again and filling in all those little things that I kinda know, but don’t really. That turned out to be a LOT of things. The course covers:
- Installation and Setup
- Curriculum Overview
- Getting Started
- Structure of a C++ Program
- Variables and Constants
- Arrays and Vectors
- Statements and Operators
- Controlling Program Flow
- Characters and Strings
- Pointer and References
- OOP – Classes and Objects
- Operator Overloading
- Smart Pointers
- Exception Handling
- I/O and Streams
- The Standard Template Library (STL)
- Bonus Material and Source Code
You can see from the list above that it is structured well and covers all of the topics that I would need to learn about in order to take my learning further and make a career writing this stuff. I can also say that Frank is a very good presenter, calm, knows the material well (I know thats expected but not all Udemy courses can boast this), and above all, he is available to the students. I have reached out a couple of times now and got the help that I needed.
So where am I?
I have been following the course for a while now and I can write basic programs and use functions, classes and statics. I have been using the STL a little, and I understand vectors and the benefit of using them over arrays. I am comfortable writing slightly larger programs, that I already know are actually very small programs! I can make little games and have completed many of the challenges that the course has set. I also have a good understanding of classes and the various constructors including the copy and move variety. I do need to refresh myself of some things as I go along but for the main() (little joke there…) I am doing fine and progressing well.
What I struggle with
I have found pointers a little difficult to use. Use, not understand. I think that once you understand the whole memory allocation thing in enough detail to at least know that memory is divided into addressable cells and that you can access and otherwise use that address just like the information that is stored at a location, then you get it. But, sometimes, its just a bit painful to try to visualise exactly what you want to do with the bloody thing and getting the syntax to match that.
Are you done yet?
Short answer? Ha! Like I ever give those! No, I’m not finished. I have got to the section about operator overloading and I am really enjoying learned about that as it feels kind of ‘advanced’ and for me, it is. I like to feel that I always just a little outside my comfort zone and that I am learning something that is just a touch out of reach. Then, suddenly, it clicks and I have grabbed it! Time for something new… I think that I will have this course completed in the next 3 or 4 weeks considering the other commitments that I have at the moment.
And after this?
Well, ‘after this’ is not really the way I would say it because the answer to that is C++ in Unreal but I am already looking at that now. So I think that what will happen is that I finish this course so that I learn enough just about C++ and then the time that is allocated to that (about 7 hours per week) will then be rolled up in the time that I spend currently on the Unreal flavour of C++ (also about 7 hours a week) bringing the total to 15 hours per week. Love a good ‘off by one’ error. Little array joke there to end on.