As it happens I haven’t been through all of the content in the RPG course yet Stephen, I tend to just dip in and out of the courses to help people on the forum.
Regarding tips, that’s really quite broad and will invariably be different for each person. In my own case, going back almost 20 years (ouch!), I would say that one of the things which helped me learn was having something of my own to which I could apply what I was trying to learn. Long before online forums were two a penny I had wanted to add one to a gaming site I was looking after at the time, I decided that I would create one myself. This became my project. The content I needed to learn was in a lot of books, but I’m not one of those people who can just sit there and turn page after page, I need an example/project that I am interested in/care about to drive my own enthusiasm.
Each feature I added felt like an enormous success, in reality, it was probably very poorly written code, but what I was doing was forcing myself to learn. “Ok, so now how can I do this?” etc, and perhaps for that evening that would be the thing I would go off to try and work out. As time goes by you will find yourself writing similar pieces of code, similar approaches to doing things, these can be refined over time and improved on as you learn new ways of doing things.
As I say, everyone is different and learns at different rates and will grasps concepts more quickly/slower than the next person. It is important to remember that this is FINE. In the courses provided by GameDev.tv, where I suspect, if you are like many other students, you will gain the most from the courses, is if you take each game and really try to extend it yourself. Don’t focus on what you don’t know. Focus on what features you would like to add. Even if you don’t have all of the answers right now, chances are you will be able to ascertain the difficulty of some of the features, rate them, then order them, then fire through the easy win items first. Get a series of small success, it will drive your enthusiasm and confidence.
Share the projects you have created with the community, ask for feedback, pop a code example up of how you achieved something and ask “Does anyone have any thoughts on this?”, see what other people have to say, everyone will be at a different stage of their learning journey. Feedback on the projects is a great way to cultivate new ideas for the same games, and even if its a feature you don’t really want to add to the game, the “Ok, so how would I do that?” could be a really nice challenge in its own right.
When you get stuck, give it a little time, then take a step back. Perhaps you come back to it the following day, but step back, just take a break, do something else, let your head relax again for a bit. The number of times I have spent hours looking at a problem in the past only to give up on it later one night and then reluctantly look at it again the next morning, with fresh eyes, and realise a solution instantly is ludicrous, but it happens. Sometimes we can be our own worst enemies, for lacking the confidence in the way we are doing something, or berating ourselves for not working something out quickly enough. If there’s something you’re not grasping, stick at it for a little bit longer, see if its possible to break the problem down into smaller pieces, see if there is an achievement to be had from one of the smaller pieces before solving the whole issue. If you have spent some time on it, have been stuck, have taken a break, have tried again and you’re still stuck - ask for help. It’s not always something that comes easily to people, especially when those people are unknown, but this is a really friendly and supportive community and frequently people give up their time to help other people, from all around the world, with all different backgrounds, experience and abilities - its great. Likewise, when you can, reciprocate. There is a lot to be had from helping to answer other peoples questions, its also a great way to stretch yourself and learn.
Finding a suitable place / time is also handy. If you can find a quiet spot away from other distractions and be strict enough to sit yourself down and do the work, even if for just 20 minutes before you go off and do that thing before coming back and having another 20 minutes. Try to increase that duration as you continue (check out Pomodoro if you have any procrastination habits). Turn the phone off, or leave it in another room. Get the things you’re going to need ready and have them their with you. Comfortable chair, comfortable lighting. It may all sound a bit fluffy, but if you’re not comfortable you’ll be thinking more about how hard that chair is than on the code you’re trying to write, or straining your eyes in the darkness with just the glare of the computer screen at 2am.
Be kind to yourself. Try to focus on what you have achieved when you sit down for a coding/learning session, rather than what you haven’t. If there’s a little grey area on something, make a note of it, make that tomorrows goal, reward yourself and celebrate each little victory as they come. By doing so you will remain more positive, you’ll feel more confident in tackling the harder challenges and you’ll remain motivated to continue your learning journey.
There’s lots more I could go on to mention for projects, working in teams and so on, the above is perhaps more aimed at an individual. No one size fits all, so a lot of the above might just be obvious, not-relevant, or non-sense, but if there are a couple of things in the above that stand out for you, I hope they are of use.