I should start off by going into a little detail about what I have done so far in terms of learning and development down the comp sci/programming path I am taking. However, a little side note should be added first. I actually bought my first Udemy course back in March of 2015 (if I recall the search through my bank statements correctly) and due to full-time work and being the father to a nearly 1-year-old child I dipped in and out of this for well over a year. Due to placing my learning on the back burner a couple of times and because I hadn’t been making too much ground, each time I picked it back up I was basically learning the basics all over again. So when I started everything up again with renewed vigor and excitement this Summer, it was almost like the very beginning all over again. Two years since I started, I had managed to make my way to the starting line. Impressive.
Okay with that aside, I’ll make this post somewhat informal and give what could be called a link dump of everything I have used/am still using to learn from day 0.
Disclaimer: I am still very much a novice and any sort of review I give of any of these resources should be read with that in mind.
In other words, you’ll need more than just a pinch of salt
Originally, just as with the start of most ventures, I had no idea where to look for help, so did a few internet searches for “best resources for learning to program”, “how to make video games” and others in the same vein. From these searches, I (extremely naively) decided that a good idea would be to download Visual Studio then sit and read through all its documentation beginning to end. Luckily I didn’t even have to start down this road as that evening whilst relaxing on YouTube, I was treated to an advert for a Udemy course called Learn to Code by Making Games – Complete C# Unity Developer. I watched the 4-minute advert, the welcome video, and free sample videos on Udemy, then sat on the idea for a day and purchased the course the next evening.
The Complete C# Unity Developer course formed the foundation on which I would build the rest of my learning. It helped me to nail down the answer to my first (and somewhat biggest) question, that of which language to learn. C# seemed to answer all the things I wanted. It’s a language that can be used to make a variety of applications but also lends itself very well to video games and has a large community backing it with plenty of resources for learning. The course is one of many run by Ben Tristem, and is a great starting point for someone with little to no knowledge of programming and game development, or specifically C# and/or Unity. I won’t go in depth and give a full review of the course as that’s not the point of this post (or even this blog necessarily) and there are an abundance of other places that do this far better than I could (one example being Risk of Tayne’s excellent review of the course). What I will say, however, is this course and the community behind it gave me the opportunity to really get out as much from it as I was willing to put in. The Udemy website is made in a way that promotes student communities on each of the courses hosted there, but, as with all of Ben’s courses (I’m a big fan and have bought more since), the community aspect is really pushed to its full potential. I found that as I was going through the course, I was constantly wanting to further explore what was being taught and to truly get a grip on concepts that were being brought to my attention. It was on the Udemy course forums and GameDev.tv’s forums (a community website set up by 3 Udemy instructors) that I had the majority of these questions answered and was guided to many more resources to further my learning.
One of the resources I had shown to me was the fantastic Brackeys tutorials on YouTube, in particular, the tutorials for C# basics. I have gone back to these videos multiple times when I forget something or need to properly wrap my head around a concept. If you haven’t come across Brackeys before reading this and are into game development (specifically C# and Unity) definitely give the site a thorough look through. There are even tutorials for Blender and a whole bunch of free assets available. It helps that Brackeys himself is extremely charismatic, making him a joy to watch and code along with.
After finding out about Brackeys, I thought poking around on Youtube for playlists of people making games from scratch or explaining programming concepts would be a great idea. It mostly wasn’t. Don’t get me wrong, there is a huge amount of fantastic learning based material on Youtube, but aimlessly searching through the piles and piles of mediocre content is a terrible idea. To start with I had no idea what was good advice and what was considered bad practice or “hacky”. So when I found a video that I thought was informative, I could never be sure of how useful it actually was. This problem was compounded by the fact that I knew I would more than likely be skipping over videos with great academic content, due to their presentation being sloppy or unengaging.
All this aside, I did find a little gem in my blind travels through YouTube, the videos of Barnacules Nerdgasm. More specifically, the Codegasm playlist, which was a series of walkthrough tutorials for creating simple applications using C#. I was drawn to these videos, for a number of reasons. The main reason being, that within 40 minutes to an hour you could have a working application, one that you could then modify yourself because you are guided step by step through the code and understand exactly how it works. Just as with the Brackey videos, I stuck with these videos originally, because of how entertaining the content is and how charismatic and relateable Barnacules is himself and still head back to his channel frequently for new content due to its high quality.
I’ll put these next few books and courses into list form because I’ve realised it’s hard to seamlessly segway between ideas, as I’ve been trying to do above and in general I’m a poor writer (which I aim to address whilst going forth with this blog).
Fundamentals of Computer Programming with C#: this is a wonderful and extremely in-depth guide through the C# language. Not a simple night time read at 1,112 pages but seeing as it’s in pdf form and completely free you can read it wherever and whenever. It was written by 20+ authors who have taught or worked in the industry and is aimed at absolute beginners. I haven’t even got a fraction of the way through this book but I don’t know why you wouldn’t want to use something as thorough as this, especially when it’s free.
Begin To Code With C#: this book is my favourite out of everything I’ve read. It takes you from the very beginning concepts and walks you through, consistently stepping up the difficulty just as you feel you are getting comfortable with the content. Rob Miles has spent 30 plus years teaching at the University of Hull and has written many books in this manner. I personally love this book because of the sheer amount of example applications you create, and the sections in which you are asked to push the boundaries of what you’ve been taught, actually get you to modify applications you’ve made previously.
C# Basics for Beginners: by Mosh Hamedani, on Udemy. This course sets out to explain C# basics in a very concise manner. Mosh is a fantastic teacher and has an intermediate and advanced set of videos that cover more difficult topics and concepts. The course consists mostly of pairs of videos wherein a topic is covered in theory using slides. Then a “demo” is given where the theory is put into practice in Visual Studio and you’re able to code alongside Mosh.
Beginning Game Programming with C#: by Dr. Tim Chamillard. This was the first course I took on Coursera and was different from anything else I had done up until that point due to it being a Massive Open Online Courses (MOOC). Most MOOCs are free to take (usually with a pay incentive in the form of a certificate) and tend to be taught by tutors at universities or people employed in industry (the latter usually being a course related to the job they are in). There are courses that have set start dates and work on a week by week basis (such as this one) and those in which you set your own pace. I enjoyed this course because it allowed me to work to weekly deadlines but also gave me the opportunity to push ahead should I be able to, allowing me to stay engaged if one week was easier or even make up some time should I know I had busier weeks ahead of me IRL. I should also point out that this course uses MonoGame instead of Unity so had a very different approach to anything I had been using up to this point and, even though I haven’t finished it, opened up different aspects of learning and concepts I had yet to know existed.
Unity 3D Tutorials: by Unity. These tutorials are fantastic because they come from Unity themselves. I have gone through the Roll-a-Ball and Space Shooter tutorials (an example of Space Shooter below) and have begun the Survival Shooter Tutorial. If you have zero knowledge of Unity or know the fundamentals these tutorials are fantastic. The learning curve was perfect for me, at no point did I get bored with content or get truly stuck. In fact, at times I felt like I was being grabbed by the hand and sped through concepts whilst having things explained in such a manner that they were easy to understand and get to grips with. The likes of creating an endlessly looping background in the Space Shooter tutorial seemed way beyond my abilities but the manner in which it was taught got me through it with relative ease. Sure I may have to go back and rewatch when I eventually use that again in something I create myself, but I know it was no hassle to implement and only my poor mental retention is to blame. One key point about these tutorials that is worth nothing, is the forums attached to each of them. I had some issues with a bug I came across in the Space Shooter tutorial that I couldn’t fix no matter how hard I worked on it. A handful of people on the forums threw idea after idea at me in attempts to help me fix it and about a week and a half into our back and forth the issue was found and corrected. Some sites just don’t have this community aspect and even though it took a number of days, the fact that there were people there to help with this issue has kept me doing these tutorials. A little side note here, the issue was to do with how my components were stacked in the inspector within Unity. In my naivety, I had reordered them to be alphabetical and in turn be easier to sort through. Little did I know this changed the order in which scripts attached to certain components would wake up and run. The space shooter game (note: it was initially built as a desktop application so wasn’t intended to be played online. I put it up so a couple of friends could try it, but without knowing how to build it for web deployment there are issues with UI elements being off the sides of the main screen and the fact you have to hit the fullscreen button to see the main game area.)
Everything listed above I have used up to this point and will go back to as and when I have bits of free time, but below is what I will be spending most of my time pursuing in the near future. This isn’t to say that it will stay this way, as the main concern for me is to be constantly expanding and pushing the boundaries of what I can learn.
Learn C# Code by Making Games – Complete Unity Developer 2.0: is the follow-up Udemy course to the first course mentioned at the start of this blog post. It is still run by Ben Tristem, but is an updated version using a newer Unity version and creating different games. As of posting this course is still having new content created and added to it on a semi-regular basis. There are currently 18 hours of content and I am about 3 hours into that so it will definitely be appearing in future blog posts. Especially as I am looking to adapt one of the games created in this course into a full release game at some point in the future.
College Algebra and Problem Solving: by Arizona State University on edx.org. I grabbed this free course because I’ve enrolled in a Computer Science degree (more about that another time) and I know that my math skills need brushing up significantly. I have only recently started, but can see the benefit of it already. They use the ALEKS program to figure out exactly where you are at with your maths skills. You answer an initial set of questions and from that, they know what subjects you still need to learn and set you up with small explanation and question pairings to do so. I haven’t done any mathematics since GCSE level (except that in Physics A Level) so have hundreds of topics to learn and brush up on.
Okay, if you’ve made it down this far you seriously deserve a round of applause. This was never supposed to come close to the essay above and took me way too long to write due to real life commitments (work, Christmas, kids etc). It was a valuable learning lesson and I’ll definitely have to plan what to write before diving headfirst into something similar in the future.
I hope everyone’s had a very merry Christmas and, seeing how it’s now December 31st a happy and prosperous new year.