There is often a degree of confusion lurking around them. Just like most modern that no longer have absolute definitions, there are also some technical words that don’t have any hard boundaries defined when it comes down to their definitions. And hence, the confusion. Though both of them are a part of the game development glossary,
Before game engines came into existence, games were written as a single entity; which means, if you wanted to build another game, you had to rewrite almost entire codes again. There were a lot of other concerns as well while writing games. Sometimes the games were designed from the bottom up to optimally use the display hardware. Any attempts to create data-heavy designs, which an engine needs, were sabotaged by the memory constraints. The codes of most of the games had to be thrown out and could not be used for the development of new games. It was because of such constraints, that games in the 80s were hard-coded and had smaller graphics data and a lower number of levels.
After the golden age of arcade video games, the video game companies adopted a common practice of developing an in-house game engine that could be used with other software. The term game engine rose in the 1990s, with the rise of 3D games like First-person Shooting (FPS) Games. The games like Doom and Quake became so popular that instead of writing the entire codes from scratch, the designers licensed the core parts of the game and built their own graphics, characters, and levels on top of them.
To understand what a game engine and a game framework is, let us first understand what a game library is.
Game libraries are various data and codes that are compiled and intended for reuse. Libraries are programs that are written by the developers that can be called by the developer on demand. Libraries can have different functions and can be written for all purposes separately like a math library would provide functions and calculations like vectors and matrix for mathematical purposes. Just like that, an image library has the function of providing and writing images in the desired formats like jpeg or png as and when required.
A game framework is a couple of libraries that are put together. With the help of the right tools and the right kind of frameworks, you can start creating a game. All the libraries come together in a framework to resolve an issue or to complete a task. They help overcome the difficulties of making and writing a game. A game framework speeds up the game development work. Not only that
- A good framework can also offer you a good community support
- It includes physics and collisions to speed up the development process
A game engine typically saves a lot of effort of the game developers and gives them a lot of bandwidth to work on the other aspects of the game. To optimize the development of video games today, a game engine consists of a collection of software or APIs which include the game loop or a 2D or 3D rendering engine.
In addition to all the game frameworks and libraries that a game engine has, 2 crucial things that it must have are:
- Scene graph
- A world/level editor
Some of the components of a game engine are:
- Rendering engine
It is either by using one of the methods like rasterization, ray-tracing, etc. Rendering engines are built on one or multiple rendering APIs like Vulkan, Direct 3D, or OpenGL. There are certain libraries that are created to get access to input devices such as a mouse, keyboard, network card, sound cards, and joystick. Software renders were used earlier before the hardware-accelerated 3D graphics came into play. Software rendering is still used for rendering still images where real-time performance (FPS- Frames Per Second) is given a lower priority to visual accuracy.
- Audio engine
This component of the coding library consists of the various algorithms that load, modify, and manage the output of sound through the sound system at the listener’s end. The most basic functions that the codes are written must perform are to be able to load the sound/ audio files, decompress them, and then play them on the sound system available. Some of the most advanced systems produce pitch adjustments, oscillations, Doppler effect, echos, etc.
- Physics engine
This engine is meant to simulate the laws of physics as realistically as possible within the game. It is used to simulate the Colossians and the physical force, acting on everything that is present in the game. This engine is at work in all the games since every action has a motion and a result that has to be stimulated by this physics engine.
- Artificial engine
- The codes for this engine are written by some of the specialists who have adequate knowledge. This is also because this engine is mostly specific to the game that it is created for. It is also extensively used in games where agents in the game need to find paths. Navmesh or navigation mesh is used to speed up the behavior.
One can build an engine on a framework, however, you can never build a framework on an engine. A framework comprises lower-level libraries that you can use to build or workaround for individual tasks like sound, graphics, etc. They are designed to do perform the tasks that are common in games.