Submitted by GuybrushThreepwood on April 2, 2010 - 08:48.
If you ever dreamed about creating your own games, that is possible now, thanks to the Internet, the availability of the required tools and resources and some communities focused mainly on games development.
First you have to know that doing a game like GTA 4 requires lots of knowledge, lot of people and time. However you can do very nice games, of the same quality of GTA 4 or even better but smaller in size -but if you can hire or join with other people in a project maybe you can achieve something similar and sell it.-
But either if you work with other people or you prefer an individual project you have to know a few things and download some tools and applications to make your game.
First I assume you already know a programming language. For games the best is C/C++, or at least the most used in commercial games and the most flexible.
If you already know how to program in C/C++ you can download Microsoft's free compiler:
Microsoft Visual C++ 2008 Express is currently available for download, free of charge, from Microsoft's site. It allows you to create programs for the .NET framework as well as native Win32 programs. It comes with an optimizing C++ compiler, linker, debugger, static libraries (including the Standard C++ Library and STL), and Microsoft SQL Server 2005 Express Edition. You can also get either the MSDN Express Library or the full MSDN Libary if you wish. The MSDN Express Library provides documentation for both the IDE as well as the .NET framework classes. The full MSDN library, designed primarily for the full version of Visual Studio also includes information about the Win32 API. If you wish to create native Win32 programs, you may need to download the Microsoft Windows Platform SDK separately and install it. It requires Windows XP, 2003, Vista (or their x64 versions).
Also you need a game engine or a graphic engine. There are commercial engines like Renderware (the one used for GTA games up until GTA San Andreas or The Sims 3) or the Gamebryo Engine (used for the Elders Scroll IV: Oblivion); but they are extremely expensive (we are talking about more than U$S 100,000 in many cases). But there are also free game engines that have the same or even more features than a commercial one. Don't ask me why many people stick to the commercial approach, I don't know the answer; but the fact is that you can do the same things. They are developed as open source tools or in many cases as freeware products created by people who really love the game industry; by the way, thank you guys!
So here are, in my opinion, two of the best free game engines available (there are other popular ones like OGRE and Crystal Space but I believe these two are better):
Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is Open Source and free for any purpose, including commercial ventures, thanks to its liberal license.
Panda3D is a powerful rendering engine for SGI, Linux, Sun, and Windows. The core of the engine is in C++. Panda3D/DIRECT provides a Python scripting interface and utility code. Panda3D can be used with or without Python.
Panda3D originated at Disney, and is still being used for their commercial games. Disney's Pirates of the Caribbean is the most recent addition to their lineup of games based on Panda3D. In my opinion it is among the best, being more flexible than most engines available (even commercial ones) as well as more rich in features.
It is highly recommended for commercial projects.
Full Python Integration
Automatically-generated wrappers expose full functionality of the engine.
Just Works, Right out of the Box
Exposes Full Power of Graphics API
Modern OpenGL/DirectX features exposed directly to Panda3D user:
Mature, Complete System
Mature system used to deliver several commercial games.
Irrlicht is an open source graphic engine (the difference between a graphic and a game engine is that the latter includes a set of engines that manage graphics, physics, sound, input system, artificial inteligence, networking, memory, scene graphs, among other features; it INCLUDES the graphic engine as one of its features). But in the case of Irrlicht, it comes with a few more features than common graphics engine, since it also includes some modules made by the Irrlicht community that come be downloaded, whereby you can make games easily; like a sound engine, a physics engine, etc.
The Irrlicht Engine is a cross-platform high performance realtime 3D engine written in C++. It features a powerful high level API for creating complete 3D and 2D applications such as games or scientific visualizations. It comes with an excellent documentation and integrates all state-of-the-art features for visual representation such as dynamic shadows, particle systems, character animation, indoor and outdoor technology, and collision detection. All this is accessible through a well designed C++ interface, which is extremely easy to use.
You can download it from here:
Some of it features include:
Materials and Shaders
To be able to create realistic environments quickly, there are lots of common built in materials available in the engine. Some materials are based on the fixed function pipeline (light mapped geometry for example) and some are relying on the programmable pipeline (normal mapped/parallax per pixel lighted materials for example) todays 3d hardware is offering. It is possible to mix these types of materials in a scene without problems and when using a material which needs features the hardware is not able to do, the engine provides fall back materials. However, if the built in materials are not enough, it is possible to add new materials to Irrlicht at runtime, without the need of modifying/recompiling the engine. Currently supported shader languages for this are:
There are lots of common special effects available in the Irrlicht Engine. They are not difficult to use, in most cases the programmer only has to switch them on. The engine is constantly extended with new effects, here is list of effects which are currently implemented:
Rendering in the Irrlicht Engine is done using a hierarchical scene graph. Scene nodes are attached to each other and follow each others movements, cull their children to the viewing frustum, and are able to do collision detection. A scene node can for example be a camera, an indoor or outdoor level, a skeletal animated character, animated water, a geomipmap terrain, or something completely different.
In this way, the Irrlicht engine can seamlessly mix indoor and outdoor scenes together, gives the programmer full control over anything which is going on in the scene. It is very easily extensible because the programmer is able to add his own scene nodes, meshes, texture loaders, GUI elements, and so on.
The geometry creator gives easy access to simple gemetrical bodies, such as cylinder, cube, etc. Objects can be renderes as polygons, wireframe, or points, using triangles, lines, point and point sprite primitives.
Currently there are two types of character animation implemented:
The programmer doesn't need to know about all this, if he doesn't want to. All he has to do is to load the files into the engine and let it animate and draw them.
Supported Render Features
Irrlicht supports all general render features needed for high quality rendering of materials and effects. Besides a few exceptions, all features are supported in all hardware accelerated APIs, and some are supported by the software renderers as well. The following list contains all supported render features of the current version of the Irrlicht Engine. Please ask for extending this set to certain features required.