A game engine is a software framework that allows developers to create video games and simulations.
Most video games are created using third-party engines, such as Unity or Unreal. But creating your own game engine gives you first-hand insight into the different types of technologies that make games and interactive simulations possible.
These types of technologies include graphics rendering (the ability to display 2D or 3D graphics and environments), physics simulation, artificial intelligence, collision detection, memory management, and more.
Every trimester, DigiPen students work together in multidisciplinary teams to develop a professional-quality game or interactive simulation. During their second year, students create a game engine from scratch.
Here’s a quick look at what goes into building these custom engines. We’ll also highlight other fields and applications where the same skills can be utilized beyond games.
1. Learn a programming language
At DigiPen Europe-Bilbao, computer science students are taught C/C++ programming from their first trimester on campus. C/C++ is a popular language for custom engines, as it provides full control over the memory resources available and how they are managed. Careful memory management is especially important for optimizing the performance of demanding software like real-time simulations and games.
Moreover, this programming language is used in a wide range of professional sectors, such as:
- Automotive industry
- Self-driving algorithms
- Engine control unit (ECU) coding
- Vision and image recognition sensors
- Artificial intelligence (AI) and machine learning
- Car simulations
- Medical simulations
- Natural phenomenon simulation
- Virtual reality
- Medical training
- Military training
- Flying simulation
- Cloud computing
- Banking applications
- Computer science
- Graphical user interface (GUI) based applications
- Operating systems (MacOS and Microsoft Windows)
- Browsers (Firefox, Google Chrome)
Thus, it is ideal for students to learn to build their very first custom game project engines in C/C++ to better understand the low-level programming concepts necessary for building performant software.
Students start off by writing code using nothing other than a C/C++ compiler and notepad. Once familiar with the foundations, they learn how to program using an integrated development environment (IDE) software package such as Microsoft Visual Studio.
2. Data management
Understanding how to sort and manage data determines how efficiently information can be organized and processed. This includes learning how to implement the most appropriate systems, logic flows, data structures, and algorithms for a given problem.
3. Computer Graphics
Now that a student has learned how to efficiently organize data, the next step involves learning how to effectively render information in the form of images on a screen. Computer graphics modules focus on the process of turning mathematical representation of objects into the interactive and realistic 2D and 3D graphics that we see when playing a game. Students will also learn how to work with graphics processing units (GPUs) to rapidly render out images to a device’s display.
The skills students acquire in the field of computer graphics have many applications beyond just games. Examples include:
- Computer art
- Commercial art
- Cartoon drawing
- Logo design
- Computer aided drawing
- Design of buildings
- Design of automobiles
- Image processing
- Game industry
- Movie industry
- Special effects
At this step, a developer will integrate GPU libraries like OpenGL, DirectX, or Vulkan into their game engines. These massive libraries serve as the interface to interact with the GPU hardware, tapping into their powerful parallel processing architecture to churn out rendered images at breakneck speeds.
To create a functional graphics system, students will need to have good knowledge in computer graphics algorithms and rendering techniques, along with familiarity in one of these GPU libraries.
4. Implement math, physics, and game simulation functions
With a solid data management infrastructure in place, the next step in building a custom engine is to develop code that will allow these data to be updated in real-time. This gives the custom engine functions that can introduce movement to the game or simulation to make it come alive. Examples include character motion, collision techniques (so that game elements respond correctly when they interact), and other physics simulation systems such as gravity.
From a player’s point of view, this is where they can begin to see characters and objects moving and interacting with each other inside the basic simulation, according to their controls. All this is possible because of the complex math and rules systems programmed into the engine.
Real-time simulations can be used in a large variety of non-gaming fields, such as:
- Weather modeling
- Biological sciences
- Engineering simulations
- Chemical reactions
- Electric power simulations
- Fluid mechanics
- Finite element method (FEM)
5. Implement game logic and systems
To improve the engine, students also learn how to build easy-to-use tools for their team members to work with. These can include level editors for designers or functions that allow team members to import files, such as art assets, from other programs. Upgrading a basic simulation program into a multifunctional game engine depends on the project’s needs and requirements.
At the end of this stage, the team should have a workable game engine that can support a fully functional game or interactive simulation. This engine can be applied to any type of activity sector such as automotive, health, or construction to name a few, in addition to video games.
6. Efficiency and optimization
Finally, this last step is where developers can fix bugs and issues to ensure software stability. Now that they have something up and running and available to test, this is a good time to optimize the engine code to improve performance for their game or simulation. Since these projects need to run smoothly for a good user experience, developers have to really optimize the engine to ensure the game is fully playable at a standard refresh rate of 60 frames per second.
As you can see, building a custom engine from scratch is no easy feat. Doing so usually spans two trimesters, where the first is spent on engine building, engine interface, and coming up with a workable prototype of the project. During the second trimester, students then focus on polishing and optimizing the software once all the features have been implemented and assets have been imported into the game or simulation. At the end of the day, students learn to become competent software developers with strong problem-solving skills.
These problem-solving, programming, and debugging skills can be applied to many other sectors, including:
- Electronic hardware
- Powertrain systems
- Combustion engine
- Fuel cell
- Artificial intelligence
- 5G/6G networks
- IoT (Internet of things)
- Digital social innovation