Learning Unity

Unity game engine

Hello programmers! I came across a really useful website that offers online courses for a reasonable price. www.udemy.com is a great resource for students and has many thousands of courses to choose from.

I bagged myself a really awesome course on using the Unity games engine for £30. View the course here: Unity course. This course has hundreds of in-depth tutorials on how to use Unity and would probably take you a good couple of months to complete, providing you spend a couple of hours a day on it. What I like most about it is it actually teaches you C# and shows you how to integrate scripts in to Unity. I needed something like this for a game mechanic I’m bulding for work experience. I hate that moment in programming where the logic is in your head, but you don’t know what to type!

Using Unity is so easy, however scripting in Unity is a slightly different story if you have never used the engine before. You really need to learn the pre-defined functions Unity has to offer, the additonal classes that are needed and what they do and really how to make objects communicate with each other.

In C++ this is as simple as passing pointers and references around, but in Unity it is implemented or coded slightly differently, albeit you’re doing the same thing.

So if you don’t know anything about how the game engine comes together, when it comes to scripting you will struggle. Not with the logic, but with the actual code. This is one of the most suckiest parts of programming, in my opinion. It’s like trying to program using OpenGL without knowing anything about it.

However, with the help of this course, I’m very quickly learning the Unity engine and C# combined (always great to learn a new language!) and my progress and knowledge of Unity is improving at lightning speed.

So if you want to learn Unity and haven’t used the engine before, check out the course (above) and you will very quickly be able to make some awesome games!

I would recommend you have a good knowledge with programming things yourself before you learn a games engine though. For example, in C++ you should be at a level where you completely understand pointers, references, memory management, design patterns, OOP and everything in-between. You should be fairly advanced in at least one language and coding should come naturally, to the point you no longer have to think about it. Reason being you might pick up some bad habits or get too used to using an engine and then struggle with the logic of pure hard-coding. It would be like learning how to code backwards and could confuse you massively. Always learn how something is built first before you use it- just a tip- it works for me and helps me learn much faster!

Learning Unity

The COG Framework

As I am now entering my third year at university, I have decided to build a framework that allows me to create all kinds of games fairly easily. I am finding myself repeating code more and more and want to encapsulate all game specific code in one place, so that I can reuse it and create as many games as I like, of any genre and any kind. I also love programming (if you hadn’t already guessed) and want to learn as much as I can about it and so COG is kind of a side-hobby of mine, to help improve my knowledge of C++ and certain programming libraries. I decided to call the framework COG, as it seemed quite fitting! (What is a cog?)


COG will be a framework built for games programmers, allowing them to create 2D and 3D games fairly easily, with little to no effort involved. COG will be similar to a robust games engine, although it will be generic in the sense that many different kinds of games can be created (2D/3D, tile, isometric, side-scroller, third person shooter, etc.). I will create pre-defined functions and classes to make this magic happen. For example, creating a 2D Isometric game map will be as simple as:

COGMap::Instance()->Create2DIsoMap(...pass awesome parameters that do cool shit here...)

At present, I am using the Singleton design pattern for all my managers, which I believe is slightly more flexible than static classes (debatable, I know), however this may change if I find a better way. COG will fully support libraries such as SDL, OpenGL (including the GLSL language), GLFW and all the other major libraries used primarily in 2D/3D games programming.

COG will also include fairly advanced C++, namely design patterns, including finite state machines, object factories and manager classes, which will make use of the singleton design pattern (for now). There will also be serialization support, allowing objects to be saved and loaded. Data-driven design will be readily available, allowing programmers to store/read data from binary, text and XML files and pass the data to functions, variables and so on.

The COG Framework, as you can imagine, is going to take me quite a long time to build! My aim is to have it completed by the time I graduate (less than 2 years away). Once I have built the framework it will be available for download on my official games portfolio website www.kimmyofficial.com, completely free, so keep checking back. I will be posting regular updates on my blog and am open to any feedback people might have (whoever stumbles across this blog and happens to be games programmer!). If there is anything you might wish to see included within the framework that will help you in your journey to becoming a games programmer, please leave a comment below or email me via my website above.

The COG Framework