Modern Game Engine - Theory and Practice #01 introduction
date
Mar 10, 2022
slug
mge01
status
Published
tags
Game Engine
summary
From Getting Started To Practice
type
Post
What’s is Game Engine?
My Definition:
- Technology foundation of the Matrix
- Productivity tools of creation
- The Art of complexity
While the concept of a game engine in Wiki is too general and abstract, in this course we define a game engine as the basis for realizing a whole set of technologies for virtual worlds, and as a stage for displaying people's creativity.
A game engine is a very complex system, and even very simple games require different components of the system to collaborate with each other to achieve basic game functions, such as rendering images on the screen, simulating the process of character combat in a physical system, controlling the interaction between players and characters in a control system, and enabling multiplayer interaction in a networked system.At the same time, it is important to emphasize that game engines are not the same as rendering systems, and in fact rendering is only a small part of modern game engines.
The goal of a game engine is to simulate the real world in as real time as possible with limited computing resources and bandwidth. Real-time is one of the important differences between game engines and other studies in graphics, and most of the computation of game effects is compressed to about 1 ms.
Game engines aren't just used by game developers, modern game engines can serve designers and engineers as a productivity tool. For developers, game engines need to provide highly scalable APIs to meet the development needs of different types of games. At the same time, game engines need to be collaborative to make it easier for teams to communicate and work together. Game engines also need to consider compatibility after technology upgrades, so architectural design is especially important for game engines.
Miracle of Modern Computer Technology
Game Engine Technology Covers All Major Area of Computer Science. A modern game engine is a very large system that brings together almost the entirety of computer science from the underlying hardware to the application side. In a sense, developing a modern game engine is as difficult as developing a modern operating system.
History of Game Engine
Game engines are a very young concept from a historical perspective. Early games didn't have a dedicated engine, and the developers aimed to achieve relatively complex gameplay with limited computing power and storage space.
As the video game industry as a whole grew, it was discovered that it was possible to reuse certain code and separate and abstract concepts, which led to the early game engines.
The recognized father of game engines is John Carmack, and his return to German headquarters (Wolfenstein 3D, 1992) can be considered the first game developed through a game engine. John Carmack later developed Doom, which defined the FPS game type. He also allowed other companies to develop commercial games through authorization, which established the business model of game engines.
The emergence of modern game engines is attributed to the development of GPUs. With the increasing demand for graphic rendering, people have developed computing hardware such as GPUs to separate graphic operations from CPU logical operations. By optimizing highly parallelized graphics operations, people have achieved full 3D gaming for the first time.
The increase in computing power not only improves the quality of game graphics, but also poses a variety of challenges for game system development. Today's game engines already have a huge category, and many game developers even have their own game engines. In addition to game engines, there are many companies and teams that specialize in the functionality of a subsystem, including physical simulation, acoustic simulation, rendering, and so on.
How to study
Because the development and design of game engines involves almost all knowledge categories of modern computer technology, so in this topic (about 20 chapters), we just take a step-by-step look at how to build a game engine and the cutting-edge technology of modern computer science that game engines are assembled incorporated.
Our core goal is to build a Body of Knowledge Framework, not to dig deep into a domain.
Content
- Basic Elements
- Engine structure and layers
- Data organization and management
- Rendering
- Model, material, shader, texture
- Light and shadow
- Render pipeline
- Sky, terrain, etc
- Animation
- Basic concepts of animation
- Animation structure and pipeline
- Physics
- Basic concepts of Physics System
- Gameplay applications
- Performance optimization
- Gameplay
- Event System
- Scripts System
- Graph Driven
- Misc. Systems
- Effects
- Navigation
- Camera
- …
- Toolchain
- C++ Reflection
- Expose variables and functions used in theeditor.That is, the game creation tool will use aform of reflection (or similar) on the code provided by the developers, which then allows itto expose parts of it in editors for designers.
- Data Schema
- Adata schema is the formal description of thestructures which a system is working with.
- Online Gaming
- Lockstep synchronization
- State synchronization
- Consistency
- Advanced Technology
- Motion Matching
- Motion Matching is a simple yet powerful way ofanimating characters in games.Compared toother methods, it doesn't require very muchmanual work once you have a basic set-up:there is no need to structure clips in graphs, tocarefully cut or synchronize them, or to explicitlycreate new transitions between status.
- Procedural Content Generation(PCG)
- PCG is a method of creating data algorithmically asopposed to manually, typically through a combination of human-generated assets andalgorithms coupled with computer-generatedrandomness and processing power.
- Data-Oriented Programming(DOP)
- DOP is an exciting new paradigm that eliminates theusual complexity caused by combining data andcode into objects and classes. In DOP, you maintainapplication data in persistent generic data structures separated from the program's code. Youuse general-purpose functions to manipulate thedata without mutating it. This approach rids yourapplications of state-related bugs and makes yourcode much easier to understand and maintain.
- Job System
- A job system manages multithreaded codeby creating jobs instead of threads.
- Lumen
- Unreal Engine 5's new fully dynamic globalillumination and reflections system that isdesigned for next-generation consoles. ltrenders diffuse interreflection with infinitebounces and indirect specular reflections inlarge, detailed environments at scales rangingfrom millimeters to kilometers.
- Nanite
- Unreal Engine 5's new virtualized geometrysystem which uses a new internal mesh formatand rendering technology to render pixel scaledetail and high object counts.