Preface
Hello there! I’m Henrique Campos, also known as Ludonaut, and in this book, we will talk about a topic that always intrigues me: design patterns. Specifically, in this book, we will talk about object-oriented programming design patterns. The idea behind this is that there are numerous problems regarding design that are common, so instead of reinventing the wheel, we can stand on the shoulders of giants and rely on tested, time-proven solutions. But in doing so, we are going to take a non-conventional path. You will learn the following from this book:
- Create reusable and scalable code that follows SOLID principles
- Identify common game development issues and apply industry-standard solutions
- Understand feature requests and how to turn them into concrete solutions leveraging design patterns
- Analyze game development pathologies to figure out underlying issues
- Architect reliable systems that are understandable, intuitive, and scalable
- Structure professional, collaborative game systems that are easy to maintain
We will use our imagination by role-playing a game mechanics engineer who is responsible for implementing requests from a fictional game designer. This allows us to work in a similar context to real life, where a designer responsible for the creative direction of a game, comes with game design requests that a programmer should implement. In this process, we will create a complete platformer game with a player, an enemy with complex artificial intelligence, interactive objects, multiple levels, music, and more.
By the end of this book, you will have a solid knowledge of how to create reliable architectures for your game’s code bases that you can scale and reuse knowing exactly what its points of pressure are and how to solve potential problems. You will also understand that design patterns should not be used as an initial approach to implementing features; instead, they are used as solutions for problems that arise as we develop our games. In this process, you will learn refactoring techniques that will save you time and energy.
As a friend of mine says: an amateur knows how to create new code, and a professional knows how to fix old code. In that sense, the skills you will learn from this book will help you avoid the urge to make things from scratch and instead deal with ugly and messy situations, thriving through them and leaving a trail of elegant and scalable solutions.
Throughout the book, we will use Godot Engine 4.3, by the time of writing, the latest version of the rising star open source project that has been getting the industry’s eyes. To make the onboarding easy, we will use the built-in text editor and GDScript as the main tools. Godot has many built-in features that help us implement the design patterns we are going to see. In some cases, such as the Observer pattern, Godot provides the implementation and all we have to do is use it, but we must understand the principles behind it.