Games Design or Games Programming?

If you’re anything like me and you are a programmer, as well as having a flair for designing computer graphics, then you will, like me, come to a point in your gaming career where you need to make a serious decision.

Do I become a games programmer?

OR

Do I become a games designer?

 

It is a very hard decision to make for someone who enjoys both. Personally, if I went down the purely design route, I’d feel like it was too simple and not enough of a challenge. However, after choosing games programming, I realise that this subject is a challenge and sometimes just a little bit too challenging! What with the vast amount of languages to learn; the different syntax, properties and functionality that comes with each one. Additionally, all the external libraries you must learn and how to implement them. You learn all of this only to find a few years down the line that a new library came out or a new language, undoing all your hard work.

Coming to this realisation made me think, “Can I really do this for the rest of my life?!”. Obviously, the answer was no. I have had many jobs that revolve around repetition and quite frankly, it bores the shit out of me. I like a challenge, don’t get me wrong, but as long as that challenge keeps my mind engaged and keeps my interest, rather than giving me a headache! As much as I love programming (and I really do – more than anything else!), I want an easy life and I want a really fun job. My idea of fun is not maths and physics and formulas (let’s be honest) – but rather building things. When I was a kid I loved building things! Playing in the mud all day long and building a little house out of tree branches and twigs was my idea of a good time (I was a strange child)! That passion for building things has followed me throughout my life and anything from re-arranging my furniture to spending countless hours on The Sims building houses, really gives me a warm fuzzy feeling inside. LOL. I don’t actually play the game, I just build loads of houses!

I mean, there are tons of other avenues you can go down should you wish to, such as: 3D modelling, animation, audio, QA testing, etc., but that would seem such a waste of all of your skills.

Wouldn’t it be cool if you could merge the skills you have in to one job? Like a “designer+programmer” person?

Well, it’s taken me many hours and lots of research, but I’ve finally found a path in the games industry that allows you to do both!

Level Design is a great way to incorporate both your passion for programming and design. It gives you free reign to build your own levels within a game. Using your design skills, you can come up with some really cool, unique and ambitious new layouts for new games. Additionally, your programming skills will aid you when it comes to writing the scripts for those levels. Scripts such as spawn locations, trigger events, re-spawn locations, checkpoints etc. In other words, very little repetition involved, as every level in the game and every game you build will be different. Imagine creating all the different levels in Skyrim – the cities, the wilderness, the caves! Or GTA – the highway, ocean, strip-club! You can already see how your imagination could run wild in this kind of field.

I don’t know about you, but that does sound a lot more fun to me! So if you are having a hard time deciding what route to take in your gaming career, research level design and try your hand at building a few levels yourself (bear in mind, it is not your responsibility to create the artwork that will be placed on the prefabs, that’s the artists job! So don’t spend hours trying to draw a derelict house in Photoshop. You are solely responsible for the layout and design of the overall level).

So, I have decided to pursue a second qualification in games design once I finish university. That way, I will be in an extremely design-driven and creative job, but at the same time still be able to use my logical thinking and problem solving skills to create really advanced and awesome looking levels! Obviously, having a qualification in both is not necessary, but that’s just how things worked out in my personal case. If you want to be a Level Designer, ideally you want to do a games design degree and study scripting on the side. Don’t do what I done, unless you really don’t know what route you want to take and want to do both to be sure!

Good luck!

Advertisements
Games Design or Games Programming?

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?)

cogs-one-big-and-two-small_318-41835

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