Tag Archives: web games

Get into Game Programming

10 Nov

Information, especially finding good information takes time and patience especially since it is spread all over the internet, creating and maintaining a list of this is hard and extremely time-consuming. This guide attempts to educate you in-game programming, how to start, what to do and eventually how to break in and build a portfolio.

About Game Programming
The games industry, is a very profitable, very competitive industry. It has very high barriers to entry, because it is a very difficult field. Programmers are constantly learning and becoming fluent in programming languages, scripting languages, game engines, graphics engines, tool kits, directx, opengl, openal, ai, various API, SDK’s, methodologies, math etc. By keeping the barriers at such a hight they manage to separate the motivated (ie. those who want to get in) and those who just feel like it (ie. those who think its cool, easy or are just lazy). A few things that you should know are the long stressful hours through out development and more so during milestones and crunch time, salaries are also not high by comparison to other fields of development.

But it has its advantages, programming games is very cool and a lot of fun and like me I’m sure other programmers hobbiest or professional get that happy, fuzzy feeling when they see something they created being played and enjoyed by others. It is also a very dynamic work environment where you are surrounded by like-minded, smart and creative people, the work itself is challenging and no two problem are the same. More importantly these people will get that obscure Star Wars or Doctor Who reference 🙂

How to Start
At the heart of any game is the engine, which does the herculean task of rendering images and processing input. To have any interactivity at all you need to know how to program.

Which Language should I use?
You have countless choices of programming languages to learn for a variety of platforms, fortunately these languages all quite robust share common elements, learning one means that you can quickly pick up and learn another in a relatively short time.

I have adopted a five star system where one is the easiest and five the hardest, these are my opinion and I have tried to make them as beginner friendly as possible.

Compiled Languages
C ****
Regarded as many as the greatest of modern programming languages, It is very robust and portable, the same code can be ported to Linux or Windows with very little changes being made. It has a community online whom you can get help from and countless tutorials and lessons. You have access to thousands of libraries written over the last 30+ years that will make life easier. Used to be the industry standard.

C++ *****
This is the industry standard today, it is used in almost all major platforms from the PC to the Pandora. As a result of its wide spread use it is a very powerful language that is a superset of C, as a result you have access to thousands of libraries written for C and the thousands more written for C++, can write extremely portable and reusable code thanks to Object Oriented Programming features such as data abstraction, encapsulation, polymorphism, and inheritance. Unfortunately it is not one of the easier languages to learn.

Java ***
Java is a strange language it is not exactly a compiled language and nor is it an interpreted language.
I’m not entirely familiar with and nor am I fond of Java and this may colour my opinion. It is a very powerful language but its scope in-game development so far has been extremely limiting, however it is used for a lot of web-based games, applets, mobile applications and the Android OS contains sections of code written in Java. It is not very difficult to learn in fact John Carmack suggested that beginners start learning programming using Java, as you can immediately start making simple 2D games, but unless utilized properly it is very slow.

C# ***
This is Microsoft response to C++, it is a very robust language and you can port your game from the Xbox 360 to the PC or vice versa with almost no trouble. It is a fairly easy language to learn and also integral to the industry. You also have access to XNA framework which is used by companies to make Xbox Live games. You can easily create Windows applications with speed and without hassle compared to the other languages.

Interpreted Languages
Python **
Python is a hybrid, an extremely powerful language with EVE Online being coded entirely in Python, Civilization 4 also has python bindings as a part of it to allow the mod community to easily modify and create for the game. In my opinion python has not exactly found its place in the industry because it can do so much, but common uses for it are in scripting and indie gaming.

Lua **
I have never used Lua so I am unable to judge it, but from what I read and the few tutorial I checked out, it is not very hard to learn and a very strong scripting language.

Order in which to learn
This is by no means the best order to learn the languages, but it allows you to get familiar with the concepts of programming and the methodologies without getting bogged down and hopefully motivate you to pursue the other.

1) Python
2) C
3) C++

I have not included Java, C# as you can study those after you master the languages above. Java and C# have been excluded particularly because they were created to make the developers life easier tend to lull beginners into a false sense of security as a lot of the backend and low-level development is hidden. While this has its positives in the hands of an experienced programmer in the hands of a beginner it can cause all sorts of headache and code bloat. There is a reason that C++ is the industry standard not just in games but also in various fields of software development because of its low-level access.

Lua is not mentioned as until you have knowledge on programming you wont know how to include it in your game.

A word of warning though, once you learn the three languages above you still have a very long way to go before you can make a full 3D game or even a 2D one, most of the code you will write in the beginning will only run on the command line. But don’t fear once you master the basics you can advance to the fun stuff.

Which Books should I read?
The following is a set of Books that I have read, No review is given just how easy is it to follow, also most of these are not about game programming they are about learning the language.

Language Title Author Ease of Use
C How to program in C Dietel *
C The C Programming Language Kernigham & Ritchie ***
C++ Accelerated C++ Koening & Moo ***
C++ The C++ Programming Language Stroustourp ****
C++ Beginning C++ Game Programming Dawson **
C++ Thinking in C++ Vol. 1, 2 Eckel ***
Python Learning Python Lutz *
Python Programming Python Lutz **

Check the following for more recommended books with review.
Daniweb Recommended Books C

Daniweb Recommended Books C++

Peer Reviews

Reviews and Recommendations by Yaustar – Also has link to free ebooks

GameDev Books

Which Online tutorials should I follow?

In all honesty it is better to follow a book rather than a tutorials as it may lead to shortcuts and bad habits, but a few that I check out are:

Language Website
Various http://www.functionx.com
C/C++ http://www.cprogramming.com
C++ http://www.cplusplus.com

I N33dZ t3H h3lP?!!@??
First off, never start a forums topic like that, your going to get banned. Secondly read this.

The best forums for programming help are:
Daniweb
Gamedev
GameCareerGuide
CPlusPlus

In the next few days I will add information on game engines that will be a natural progression to what you’re learning and a proper list of web resources.

Feel free to comment, question, suggest or criticise.

Quake Live Beta Open to All

22 Feb

Good news to Quake fans everywhere the Quake Live will be open to the public for beta testing on the 24th February. The servers are going to be down while they remove inactive accounts.

Quake Live is a modified version of Quake 3 and will be a free ad supported web based game. If this proves successful we may see more titles taking this route, if I am not mistaken The Witcher developers are trying the same for their flagship title The Witcher.

Quake Live Screenshot

Keep checking the dev teams website for more details.

%d bloggers like this: