A game engine is a system designed for the creation and development of video games. The leading game engines provide a software framework that developers use to create games for video game consoles and personal computers.
The core functionality typically provided by a game engine includes a rendering engine for 2D or 3D graphics, a physics engine or collision detection, sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, and a scene graph.
The process of game development is often economized, in large part, by reusing/adapting the same game engine to create different games, or to make it easier to "port" games to multiple platforms.
Game engine can also refer to the development software utilizing this framework, typically offering a suite of tools and features for developing games. At the very least a Game Engine should have a rendering engine. This may sound redundant, but the rendering engine is what is responsible for handling memory management and buffering for images and 3D objects that are being displayed on the screen. Some of the more robust engines, such as Unity will include many other components such as:
- Support for 2D and 3D rendering.
- Physics and collision engines.
- Built-in game loop, with hooks for your game logic.
- User interface key mapping and other UI components.
- Animation engines.
- Audio engines.
- Multiplayer and networking tools.
- Virtual reality tools.
- Lighting, shaders, shadow, object materials, and other visual components.
- World editors.
- Artificial Intelligence (AI).
Each of these tools enables rapid development without requiring highly technical and specialized programming skills. It allows the game designers to focus on the game, and not always reinventing the wheel.
If you are setting out to start a development project, it might seem obvious the advantages of using a game engine. But there are still some scenarios you may not want to use one. Typically, these will be very specialized and more advanced project requirements, such as.
leveraging an as of yet unsupported hardware device, or fine-tuning some software components that are at the core of your design. Typically for those starting out, it's a boon to learn to develop within a game engine. If you're still not sure whether you should be using a game engine in your project, here are some advantages to consider:Prototyping will be far quicker. You'll be able to get a playable concept, within days. Quickly learn the game development concepts, such as world lighting and animation, without getting stuck in a lot of the technical details.
Leverage advanced technology. The gaming industry is constantly changing, and new technology such as VR eventually makes its way into the game engines. Deploy to several gaming platforms with one build. Most game engines support exporting to multiple platforms, such as Windows, Mac, PlayStation, Android, iOS