Thursday, October 27, 2011

2D C++ Game: Part 2 - Prerequisites

Note: If you are not interested to read any of this and want to get straight to the prerequisites then please scroll down the post.

» Application Programming Interface ( API ):

▪ What is API ?
In simple words, API is a interface used by programmers to communicate with the hardware. In game programming, we will be needing some way to of draw graphics on to the monitor via graphics card and play music/sound to our speaker via sound card, that is where API will come into the action.

▪ What APIs are there ?
DirectX and OpenGL are two APIs widely used when it comes to game programming.

DirectX is developed by Microsoft and made to run only on Windows platforms, whereas on the contrary OpenGL(Open Graphics Library) is developed by Khronos Group and is cross platform i.e it can run on various platforms. DirectX takes care of both graphics and audio where as OpenGL is solely for graphics and lacks audio, but not to worry there are other APIs which can be used alongside, like OpenAL (Open Audio Library) made by Creative Technology which can be used along with OpenGL. Anyways, I don't want to run into details about each API as its a very vast topic. For detailed explanation there is always Wikipedia. I have enclosed a link, in case you would want a comparison between both DirectX vs OpenGL.

While browsing through various forums, I found out that for years there have been heated arguments when its comes to topics like DirectX vs OpenGL, both have their own fanbase. Deciding which one to use becomes a big headache for the people who are new into game programming. Anyways, I am not going to use any API directly instead I will be using a multimedia library/game programming library.

» Multimedia Library/Game Programming Library:

▪ What is Library ?
Library is a collection of resources which may include various pre-written subroutines or classes, values etc to carry out specific tasks.

In simpler words, imagine it as a multivitamin capsule. Consider each vitamin packed inside it as subroutine or class which carries out specific task. I know it sounds lame.

▪ Which Game Programming Library to use ?
As by now you must be able to guess what Multimedia Library means. Its a library solely made to handle operations related to multimedia such a graphics, audio, input etc. Library acts a wrapper for various APIs. Using APIs directly can be a very tedious task, which can create complications for the people who are new to game programming.

Using library simplifies the task and prevents a lot of  headache, for instance if you want to create a window and draw a line, all you do is call a function to initialize a window and call xyz function to draw line and pass xy parameters and you are done.

Once again when its comes to choosing which game library to use, is debatable. Everyone will suggest with which they are comfortable. Anyways, there are loads of game libraries out there, some using DirectX or OpenGL and even both. I suggest you to choose a library which suits your project needs and is well documented and has a healthy active community which in long run, will help you in your learning process. There is nothing so called best gaming library. Everything has its pros and cons, ultimately it depends on your requirements and how well you utilize the resources.

▪ Damn, just tell me already what game library are you going to use ?
I am going to use Allegro (Atari Low LEvel Game ROutine) Library. Allegro is a cross-platform, Open source library mainly aimed at video game and multimedia programming. It is capable of  handling common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform. However, Allegro is not a game engine: you are free to design and structure your program as you like.

Allegro 5.0 supports the following platforms:
■ Unix/Linux
■ Windows
■ MacOS X
■ iPhone


▪ 
Why Allegro ?
It is just  my personal choice, as I said before choose a game library that has proper documentation and has a healthy community. You can google 'game library', there are loads of other game libraries as well.

▪ Why use Allegro game library, why not make our own ?
Allegro takes care of all the low level tasks like I mentioned before , making a library from scratch to handle these can become very tedious. The whole point is why not use something that has been refined since years. I chose to use game library because I want to put all my focus on building game mechanics.

» Which C++ compiler to use ?
This is completely based on your personal choice but I would recommend you to use Microsoft Visual Studio or Code::Blocks because Allegrowiki has step by step installation guide of these two IDE's, so better to get started right away, instead of wasting time figuring out how to install. I have used Visual Studio and Dev C++ in the past so, I will be trying Code::Blocks this time.
(NoteIDE stands for Integrated Development Environment)


▪ 
Installation Guide:
This tutorials shows you how to install different IDEs and compilers.

Windows
■ Windows, Visual Studio 2008 and Allegro 5
■ Windows, Visual Studio 2010 and Allegro 5
■ Windows Vista, Code::Blocks 10.05 and Allegro 5

Mac OS
■ OSX, Xcode 3, Framework
■ OSX, Xcode 4, Framework

Linux/SVN
■ Fedora and Allegro 5
■ Ubuntu and Allegro 5
■ Debian and Allegro 5

----------------------------------------------------------------------------------------------------------------------------------

List of prerequisites:
Finally, its about time. Let's sum it up and get started.

» C++ : You need to have a working knowledge on basics of C++ and object oriented programming.
» C++ IDE : Code::Blocks
» C++ Compiler : MinGW
» Game library : Allegro
» Graphics editor : Microsoft Paint, GIMP

0 comments:

Post a Comment