Architect Your Engine - I. Overview
- Yi Yin
- May 1, 2018
- 1 min read
This time let's talk about something more abstract. A game engine, or any interactive engine, is a complex system, by which, I mean:
- Subsystems: it has various various types of subsystems.
- Connections: it has various types of connections between each subsystem.
A complex system contains subsystems and components, while a subsystem contains subsystems and components. Finally, a component is a functional unit that executes a narrow and specific field of functions, and it is not supposed to be divided anymore:
System := Subsystem+ | Subsystem+, Component*
Subsystem := Subsystem+ | Component+
Component := (a non-divisible functional unit)

Therefore, to make a game engine, we need to do two things:
- Clarify the boundary of each subsystem (e.g. script interpretation module, audio module, graphic module, etc).
- Establish the minimum necessary connections between each subsystem.
In this section, I'll discuss the first part - how to separate each module by its abstract functionality. Please pay attention to the 4 words in bold font: every one of them is necessary, especially "minimum necessary connections" - we can not omit any of the three. I'll talk about that later in the discussion of the MVC paradigm.
In the next three posts, I'll go over the principle of subsystem-separation and connection setup, and after that will be a brief summary as well as some extension topics.
Comments