“I’m interested in learning programming but I’m not sure how or where to start.”
This is an interesting statement, often come across by most programmers on forums, blogs, social media and pseudo-forum sites and most of the time the answer is the same. What I want to do is answer the question from a game programing perspective, firstly to disclose I’m not a professional or a graduate as yet however from my various searches and intrusions and questions asked and read on the above mentioned site I have gathered a fairly complete idea of what is requested. So lets begin leveling up.
Armour – Get the right Hardware
- Samus and her trusty Powersuit
Chances are since your reading this that you already have the necessary hardware requirements covered. But if you’re looking for facts and figures this is what I would recommend. These requirements are future proof so as your skills improve and you start shifting towards more graphically and mathematically complex games you don’t find yourself needing to upgrade your machine to use a more powerful development environment.
- Computer that has a 1.6GHz or faster processor
- 1 GB (32 Bit) or 2 GB (64 Bit) RAM (Add 512 MB if running in a virtual machine)
- 3 GB of available hard disk space
- 5400 RPM hard disk drive
- DirectX 9 capable video card running at 1024 x 768 or higher-resolution display
- DVD-ROM Drive
Most netbooks support these specifications and are a cheap low-cost investment. I would also recommend getting a netbook which can be connected to a monitor (most netbooks already offer this, I think?), preferably one which supports a resolution of 1280 x 1024 pixels.
Weapons – Basic Sword to the ultimate Blade
There are a few ways to tackle programming, the easiest and most direct route would be to learn Python. Python is a simple, dependable and compact language where most complex code is already done for you, it has a few popular graphics libraries (Pygame, Pyglet), which have been tried, tested, taken apart and put back together. I strongly discourage you to start of in Python, I dislike the language you can read about it here, other than the reasons mentioned in that blog post I feel that Python, particularly in game programming gives a false sense of accomplishment which will cause disappointment as you start to expand your horizons and find that other lower level languages add a new level of complexity.
My recommendation is to start by learning “the C language“, it has a much steeper learning curve but allows you much more flexibility and a wider variety of libraries, game engines and scope if you decide to go professional. It also allows you to branch out to most other popular programming languages like Java, Objective – C, D, C#. It also allows for natural progression to learning and using C++, the professional grade language used by your favourite game programmers or development houses.
Level 01 – Learning C
The easiest way to learn C is to learn by example. Start by taking a book read chapter, do the examples and then the questions and repeat. This is going to be tedious, difficult, and tiring but by the end you should have covered:
- Pointers (Very Important)
- Reading / Writing to Files
- Structures and Unions
Level 2 – Learning C++
Using the same method as before. You should cover the following:
- Operator Overloading
- Function Overloading
- Exception Handling
Level 3 – Data Structures & Algorithms
Once you get comfortable with Level 1 and 2 your ready to progress to level 3, the most important level in game programming. This is absolutely brutal and probably the hardest part of programming but the most essential, efficiency, searching and retrieval of data, decision trees and many others. Learning a few of these topics wont hurt.
- Linked Lists
- Searching & Sorting Algorithms
- Hash Tables
- C++ Standard Library
- Boost’s C++ Library
Level 4 – Graphics Library
At this point you have a couple of options, you can continue going slow and steady or jumping right in. If you want to continue going slow and steady you can try learning SDL, it’s a basic graphics library that allows you to create 2d games and even simple 3D ones, it is a tried, tested library which is being prepped to work with the iPhone.
The other alternative is moving straight to the meat of game programming and start learning DirectX or Open GL.
The third option that you have is to use a game engine, there are plenty of options depending on your requirements 2D, 3D, Isometric. Engines that have a large user base and well written tutorials are the Unity Engine, Unreal Engine, Panda3D amongst many others.
By this point if you have covered and are familiar with many of the intricacies of a programming language and graphics library and or and game engine your well on your way to becoming a game programmer, the road is hard and difficult but make google your best friend and you’ll be able to bring you ideas to life in no time.
If you have any questions or think that something is wrong do let me know.