top of page

Step Between

1st Place Winner GradEX 2019

Games Technical Design

Make your way through the game using your ability to instantly switch worlds to view the world in a different way. Solve puzzles, kill enemies and gather treasure along the way!

Step Between was my final year project at university, and as such is one of my pieces of work I am most proud of. Whilst it is a fun game in itself, the strong framework that is the base for Step Between allows new features to be added with ease.

Managers

There are a few managers essential to the running of Step Between. Each triggers events that are subscribed to by almost every visible object in the game. Most objects derive from a base WorldObject class, and it is this class that subscribes to most of the following events, hooking them to virtual functions for child classes to make use of.

Area Manager

To help keep processing power to a minimum, I created an area manager so that only the area the player is in would be active. It triggers a few events. When entering a new area, they are called in this order: AreaUnloading, AreaLoading, AreaFinishedLoading. Each of these can be used for subscribing and unsubscribing to events, as well as resetting values and initialising classes.

Area Switching

​Step Manager

This class handles stepping between the two alternate worlds. It makes sure the player doesn't step into an area that is solid in the opposite world, and calls events to detail the world being switched to as well the current switching state. It also handles the enabling/disabling of relevant colliders between worlds.

Characters

Each character, whether that be be enemies or the player, derives from a base character class. This class has in it a host of virtual functions that can be used in derived classes for many different things. These include:

  1. Collision events - virtual functions for landing on or leaving the floor, colliding with something above or to either side or stopping contact with them.

  2. World switching and area loading - Especially useful when creating enemies. Enemies can be made to change stats, visuals and even attacks between worlds. An easy enemy in one world may be lethal in the other!

  3. Animator value setting - Animator values that all enemies will have are implemented at this base level, but new ones can be added in the child classes.

  4. Taking damage

  5. Movement

Player Controller

Rather than controlling the player character directly, I wanted to create a player controller. There were a couple of reasons for this. Firstly, it would allow for easy implementation of a potential multiplayer mode, and secondly, controlled enemies could be used as puzzle elements themselves.

Player controller possession

Level Creation

Levels are created using the tilemap system. This, combined with many prefabs such as mechanisms, enemies and collectables, allows for quick creation of new areas.

bottom of page