I HAVE A MOCK INTERVIEW IN 20 MINS so have a summary of every game programming pattern except 6. You can find out more about them here, as that's what I'm summarising from
Putting an extra layer between the input and the execution that allows you to swap out what each input actually does at run time, it also means that the input doesn't call the execution directly meaning you can delay it. Most known for its use in undo and redoing actions.
Pulling all common data from an object which will be displayed multiple times, loading it into memory once and referencing this data wherever it needs to be displayed on screen. Each instance of the object will hold its own unique parameters but will be far more lightweight. E.g. when displaying trees the model and basic data will be held as common data and only loaded once. but the position will be stored in the instance
Using events to decouple different systems in the game. A script sends out an event and any class which may need to know about it will add a listener with an attached function to implement if that event is called. Doesn't require classes to explicitly know each other, and the broadcasting class shooting off the event needs no knowledge of its listeners.
Creating a parent class with base virtual functions with the basic functionality for a given set of objects, then overriding those functions in its child classes for custom behaviour (if necessary). Means that a set of objects always has the same function names for another class to call on and reduces how much code is needed when child Classes do not need to override functions to their own implementation.
A class which can only have one instance and has global access to it. Is initialized at runtime and only if needed. However they're global, discourage concurrency and encourages coupling
Creating a set of states and transitions (finite state machine) with different functionalities and behaviours you can switch between when certain conditions are met. You can only be in one state at a time.
Having two frame buffers, one displaying the current frame and another loading the next one. It then swaps the frames one in once it's fully loaded rather than writing over the current frame which can lead to rendering errors.
Functionality that loops so long as gameplay is active e.g. update or tick (called each frame), fixed update (called at a fixed interval 50 times a second)
All a game objects behaviour is kept within its own update rather than the main game loops update. The main game loop calls on these update functions each frame and then the object handles its own behaviour.
Storing requests in first in first out to prevent them being processed simultaneously. Allows for control over when certain actions happen.
Instead of inheriting from a class directly, have two classes which reference each other, one which stores the objects base data that's similar across all objects (e.g. animal, pathfinding) and one which stores specific information and implementation (e.g. Breed) allows for creation of lots of different breeds just by changing parameters instead of creating new inherited children of animal
When primary data (e.g transform data) changes on an object it sets its flag to dirty which means it and it's child objects needs updating. Rather than redoing and updating calculations every frame when the data is the same as before.