Free Game Engines
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 as well as lots of online communities focused mainly on games development, that can help you.
First off, you have to know that creating games like GTA 5, Mafia 2 or Assassin's Creed IV, requires lots of knowledge, lots of people and too much time. However you can do very nice games, of the same quality of GTA 4 -or even better- but smaller in size. However if you can hire or join with other people in a big 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.
Of course you must know how to program. So I assume you already know a programming language. For professional games development, the best one is C/C++, it is also 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:
Free Microsoft Visual C++ 2013 Express
You can download Microsoft Visual C++ 2013 Express free of charge from the Microsoft website. It lets you 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 the 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.
You also 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 think these two are much 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.
It is highly recommended for commercial projects.
You can download it from here: www.panda3d.org/download.php
The official website of this engine is: www.panda3d.org
Many advanced rendering techniques now fully automatic:
- Special Maps: Normal Map, Gloss Map, Glow Map
- HDR Rendering: Tone Mapping, Bloom Filter
- Cel Shading: Threshold Lighting, Inking
- More to come
Powerful performance monitoring and optimization tools:
- Identifies bottlenecks, both CPU and GPU
- CPU time use decomposed into more than 250 categories
- Counts meshes, polygons, textures, transforms, state changes, etc
- Allows user-defined CPU-usage categories
- Tools for batching and state-change minimization
- Tools to merge textures and minimize texture switches
Full Python Integration
Automatically-generated wrappers expose full functionality of the engine.
- Highly optimized: all core functionality in C++
- Thoroughly-tested: two commercial MMOs in Python
- Panda3D structures garbage collected when using Python
- Manual and sample programs use Python
Just Works, Right out of the Box
- Convenient installer packages for Windows, Mac OSX and Linux
- Only one external dependency: working graphics driver
- Sample programs run right out of Start Menu
- No compilation step needed
Exposes Full Power of Graphics API
Modern OpenGL/DirectX features exposed directly to Panda3D user:
- High-level shader language: Cg
- Powerful interface between shaders and engine
- Support for render-to-texture
- Use of depth/shadow/stencil textures
Heavy emphasis on error tolerance and debuggable code:
- Extreme resistance to crashing, even when errors are made
- More than 5000 assertion-checks to catch errors early
- Reference-counted data structures minimize memory leaks
- Many tools to examine internal state (one shown here)
Mature, Complete System
Mature system used to deliver several commercial games.
Contains everything you need, not just the "sexy" stuff:
- Converters for older file formats
- Font file importers
- Tool to package games into redistributables
- Means to pack art assets into encrypted bundles
- Lots of other boring but essential stuff
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 engines, since it also includes some modules made by the Irrlicht community that can be downloaded. With Irrlicht and these addons you can develop games easily. Among the addon modules there is 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 full 3D and 2D applications such as games or scientific visualizations. It offers an excellent documentation and integrates all state-of-the-art features for visual representations such as dynamic shadows, particle systems, character animation, indoor and outdoor technology, as well as collision detection. All these features are accessible through a well designed C++ interface, which is extremely easy to use.
You can download it here: irrlicht.sourceforge.net/?page_id=10
Tool set: To make your games and applications development using the Irrlicht engine easier, there are some free tools to download from external pages. These tools and libraries are completely independent of the Irrlicht engine, but they are written by people of the Irrlicht community with Irrlicht compatibility in mind.
Download the tool set here: irrlicht.sourceforge.net/?page_id=279
Some of it features include:
- High performance realtime 3D rendering using Direct3D and OpenGL.
- Platform independent. Runs on Windows, Linux, OSX, Solaris, and others.
- Huge built-in and extensible material library with vertex, pixel, and geometry shader support.
- Seamless indoor and outdoor mixing through highly customizeable scene management.
- Character animation system with skeletal and morph target animation.
- Particle effects, billboards, light maps, environment mapping, stencil buffer shadows, and lots of other special effects.
- Several language bindings which make the engine available to other languages such as C#, VisualBasic, Delphi, Java.
- Two platform and driver independent fast software renderers included. They have different properties (speed vs. quality) and feature everything needed: perspective correct texture mapping, bilinear filtering, sub pixel correctness, z-buffer, gouraud shading, alpha-blending and transparency, fast 2D drawing, and more.
- Powerful, customizeable, and easy to use 2D GUI System with Buttons, Lists, Edit boxes.
- 2D drawing functions like alpha blending, color key based blitting, font drawing, and mixing 3D with 2D graphics.
- Clean, easy to understand, and well documented API with lots of examples and tutorials.
- Written in pure C++ and totally object oriented.
- Direct import of common mesh file formats: Maya (.obj), 3DStudio (.3ds), COLLADA (.dae), Blitz3D (.b3d), Milkshape (.ms3d), Quake 3 levels (.bsp), Quake2 models (.md2), Microsoft DirectX (.X)
- Direct import of Textures: Windows Bitmap (.bmp), Portable Network Graphics (.png), Adobe Photoshop (.psd), JPEG File Interchange Format (.jpg), Truevision Targa (.tga), ZSoft Painbrush (.pcx)
- Fast and easy collision detection and response.
- Optimized fast 3D math and container template libraries.
- Directly reading from (compressed) archives. (.zip, .pak, .pk3, .npk)
- Integrated fast XML parser.
- Unicode support for easy localisation.
- Works with Microsoft VisualStudio, Metrowerks Codewarrior, Bloodshed Dev-C++, Code::Blocks, XCode, and gcc 3.x-4.x.
- The engine is open source and totally free. You can debug it, fix bugs and even change things you do not like. And you do not have to publish your changes: The engine is licensed under the zlib licence, not the GPL or the LGPL.
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). It is possible to mix these materials in a scene without any problem and when using a material which requires features the hardware cannot stand, 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. Supported shader languages are:
- Pixel and Vertex Shaders 1.1 to 3.0
- ARB Fragment and Vertex Programs
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:
- Animated water surfaces
- Dynamic lights
- Dynamic shadows using the stencil buffer
- Geo mip-mapped terrain
- Bump mapping
- Parallax mapping
- Transparent objects
- Light maps
- Customizeable Particle systems for snow, smoke, fire, ...
- Sphere mapping
- Texture animation
- Skyboxes and skydomes
- Volume Light
Rendering in the Irrlicht Engine is done using a hierarchical scene graph. Scene nodes are attached to each other and follow each other’s movements, cull their children to the viewing frustum, and are able to do collision detection. For example, a scene node can be a camera, an indoor or outdoor level, a skeletal animated character, animated water, a geomipmap terrain, or something completely different.
This way, the Irrlicht engine can seamlessly mix indoor and outdoor scenes together and give 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 cylinders, cubes, etc. Objects can be rendered as polygons, wireframes or points, using triangles, lines, points and sprite primitives.
Currently there are two types of character animation implemented:
- Morph target animation: Meshes are linearly interpolated from one frame to the next. This is what is done in the Quake game series, and how the Irrlicht engine does it when importing .md2 and .md3 files.
- Skeletal animation: A skin is manipulated by animated joints. The Irrlicht Engine will do this when loading .ms3d, .x, and .b3d files. It is easily possible to attach objects to parts of the animated model. It is, e.g., possible to attach a weapon to the hand of a model, which will be moved as the hand moves, with only one line of code.
The programmer doesn't need to know all about this, if he/she doesn't want to. All he/she has to do is to load the files into the engine and let it animate and draw them.
Supported Render Features
Irrlicht supports all common 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.
- Predefined materials
- Solid with alpha blending 2nd texture
- Light maps with configurable pre-multiplication and additional dynamic light support
- Detail map
- Sphere map
- Environment reflection
- Transparency by adding the texture
- Transparency by using the texture alpha
- Transparency by using the texture alpha without blending
- Transparency by using the vertex alpha
- Normal maps
- Parallax maps
- Flexible blend mode rendering
- Material Colors (ambient, diffuse, emissive, specular)
- Line thickness (only OpenGL)
- ZBuffer write/test modes
- Per mesh anti-aliasing settings
- Alpha to Coverage
- Color masking
- Vertex colors with configurable interpretation
- Wireframe/Point cloud rendering
- Gouraud/Flat shading
- Lighting mode configurable
- Backface/Frontface culling
- Fog enabling per mesh
- Automatic normals normalization
- Texture coordinates repeat/clamp modes
- Per texture filtering (bilinear, trilinear, anisotropic)
- Texture LOD Bias
- Texture matrices
- Arbitrary number of multi-textures