Simplifying complex systems with abstraction
Abstraction is unarguably the most fundamental skill anyone in any design area must develop. It is through abstraction that you identify the relevant aspects of the application, or in our case, the game. It’s especially by using good abstractions that we design good classes by understanding what should be exposed and what should be hidden from user classes and other peers on the team.
For instance, when we are making a game project in Godot Engine, the actual implementation details in C++ of each feature, node, or class are not relevant. What matters the most is what is exposed to us by the Godot Engine’s API. Another example is shaders. It’s not important to know how a GPU works on a hardware level in terms of how electricity turns into graphics, but rather, what is available through a shaders API so we can create nice-looking visual effects for our games.
Abstraction is about knowing the goal of the class and...