Kliederen met Knuffels (Stuffed Animals Mess)
Kliederen met Knuffels is a game about actions & consequences. The players start by making a mess with paint & stuffed animals. Afterwards they have to find the now hiding stuffed animals. A cleanup ensues, followed by bedtime. Given this is also a linear game with defined game phases I have used my phase system for this game as well.
For the messing about with paint phase I have worked with particles; I have modified a Unity setup of the particle pool using 1024 particles. Every time a stuffed animal moves a certain amount it sends a call to the ParticlePool with its location and an index used for colour. The ParticlePool then takes the next particle from the pool and places it at the correct location with the correct colour. After all 1024 particles have been used the system loops and starts at the first particle again.
Below is a video of the system in action, the ball is used to simulate a single player on the interactive floor platform.
Below is a combined snippet of the core of the particles handling.
The second phase includes a grid based mechanic where a path of footprints appears. By standing on a footprint it gets cleaned, after all footprints are cleaned an object with potentially the stuffed animal in it spawns. Due to time constraints I have chosen pre-defined paths (instead of on-the-fly generated paths with pathfinding). These paths are defined in the editor, chosen at random in runtime and rendered on a runtime generated grid. The grid is generated with each tile as a gameobject. Every tile has two assignable sprites where I display the animals’ footprint on.
Shown left is the grid/path mechanic as drawn by the designer, on the right is the grid I generated in code. Below is the code used to generate the grid, a single path and a part of the implementation to show how it is set up & used.
This is what a single path looks like in the editor and ingame. It is easy to create multiple pre-defined paths for the game to choose from.
Phase System (used in multiple games)
One of the requirements of all the linear games we’re building is that every chapter can be skipped & restarted. For this reason I’ve built a phase system which controls the flow of the game. Every chapter (defined by the designer) is programmed as a phase. Phases have a Reset method, a Start method and an End method. Every phase implements this abstract phase class.
- With the ResetPhase method you make sure all objects are set to their initial state needed to start the phase.
- With the StartPhase method you first call ResetPhase after which you can start the implemented sequences a phase runs through.
- At the end of the phase you call the EndPhase method which fires the event OnPhaseCompleted. The PhaseController handles this event, makes sure the next phase starts (if there is one) and cleans up.
I used this phase system for all linear games that I’ve build which is three in total.