In computer programming in general, some types of features and requirements occur commonly. For computer game programming, there are often features for new games that have things in common with existing games. Software Design Patterns are reusable, computer-language-independent templates for how to solve common problems.
Not all design patterns are needed for all languages (for example, some computer languages may have features that already provide an easy way to solve a common problem). In this chapter, we'll explore several common design patterns in the context of Unity game programming in the C# programming language.