This month’s Give Me Lessons will be about a subject that is essential for those who don’t have free years and lot of professionals for development.

Engines.

What is a game engine?

There is no better term to define a game engine than using it’s own name. Mechanic for games. Let’s say you make a platformer, where the character can walk, jump, collect items, and have to escape enemies. The game works perfectly, it has been launched, and it is a hit. Soon enough you’ll want to make another game with some differences, while still being a platformer. He walks, jumps, collects items, and escapes. Instead of doing the programming all over again, you create an engine that will help you create this game, and other games to come in the future! There are several types of engines for different types of games. In general, engines help with the physics, sound, and so forth.

To sum it up: A game engine is an application that helps you create the game while being organized, while keeping things simple, and being able to reuse code.

Should I create my own engine?

It goes without saying that if you create an engine for your own needs, it will work better than something made for somebody else’s. But creating an engine takes a lot of development time, which could have been used developing the game itself with an existing engine.

What is the best engine?

There is no such thing. There are hundreds of engines, and each are good for different purposes. The question that should be asked is:

How do I choose the right engine for my project?

Before thinking on the engine, you must have a lot of the project planned. Ask yourself this questions:

  1. What platform(s) will my game be available on?
  2. Is my game going to be in 2D or 3D?
  3. What is the genre (platformer, racing, RPG, etc)?
  4. What programming language does my team have the most knowledge with?

With these questions in mind, you can pick an engine you feel more comfortable with, and will satisfy your needs.

What’s next?

Once you’ve selected or created your engine, it’s time to start working on your project!! Read the documentation and spread it to your team. Another good idea is to go after some frameworks. Frameworks are libraries already made that will help you when you’re programming.

Do you suggest engines in particular?

Yes! Here are some that have been quite popular recently:
Away 3D OpenSource engine that is used for 3D Flash applications. Your advantage is to use all that Flash Player and Adobe Air can offer you. Its Programming language is ActionScript 3 (AS3).
Box 2D Physics engine. Originally made for C++, nowadays you find it used in many 2D games.
Cocos 2D It’s more of a FrameWork than an engine. But it has been ported to many languages and nowadays it’s often used for mobile games.
Flixel Another Flash and ActionScript 3 engine. Its highlight is the ease of creating PixelArt games. Pretty good for mobile games.
Game Blender The OpenSource Blender software, for 3D modeling, grows bigger and bigger. Game Blender is an add-on to that program that helps you creating games made entirely in it.
Torque Torque is a 3D engine that allows easy integration with assets and scripts using C++.
Corona Made to create 2D games for mobile. Its programming language is Lua, and one of its advantages is that it can export a version even for Kindle.
CryEngine Often used for 3D AAA games. Was made famous by it’s high quality graphics. It has a monthly subscription for indie developers.
M.U.G.E.N. A classic that never loses its shine. Pretty easy to create an arcade fighting game.
Unity 3D Has been claiming developers fast! It’s famous for having several programming languages, options to export for several platforms and having a huge Asset Store (a place where you can find extra content to use).
Unreal Engine Unreal Engine has been taking some market share between indie developers. It also has a monthly subscription and it takes 5% of gross revenue.
RPGMaker Another game development classic, RPGMaker makes it easy to create RPG games. Perfect for classics, but it gives you the freedom to expand its gaming experience to what fits your project best.