Switcharoo


Switcharoo

Switcharoo is a two player cooperative 2d platforming shooter, where both players share the controls for one mech. One play controls the movement, while the other controls the shooting. At any given time, the players can swap roles.

Details

Time:             May 2019 - Aug 2019
Team Size:   6
Tools:            Unity, FMOD
Role:              Technical Designer, Programmer

Switcharoo is a two player cooperative 2d platforming shooter, where both players share the controls for one mech. One play controls the movement, while the other controls the shooting. At any given time, the players can swap roles.

Details

Time:             May 2019 - Aug 2019
Team Size:   6
Tools:            Unity, FMOD
Role:              Technical Designer,                          Programmer



Contributions


  • AI Behaviour
  • AI Design Tools
  • Level Design Tools

During the development of Switcharoo, I worked alongside a second programmer, as well as the artist in charge of enemy designs, and the level designer. 

With the artist, and the level designer, I designed, and developed, the behaviors of the enemies in order to match the artist's concepts and also to allow different types of behaviors for the level designer to work with. Together, we completed 10 different enemies, each with their own unique behaviors, and animations that displayed their current states.

Design



Shooting and platforming were equally important to the experience as cooperation, which acted as our pillars of gameplay. As a player would only have a single role, either shooting or moving, both pillars would contain enough gameplay to keep the player entertained, regardless of which role they were currently controlling.

The decision was to allow a certain player to damage a specific enemy, with the other player unable to, ie. the robot player could only damage robotic enemies, and not alien enemies. As a result, the enemies were split into two different groups. As either player shouldn't have too much of a different experience from the other, enemy behaviours should be similar to their counterpart.


3 basic enemy behaviours were created to allow for replayability, while also creating 4 unique behaviours to add to the small variety. This presented the opportunity for the players to play as the other mech type, to battle these unique enemies in a different playthrough.



Enemy AI


The ai was designed so that a few behaviours could be created, which could then be mixed and matched to create different types of ai behaviour to experiment with.

By creating this system for the AI, the layout for each ai was similar to each other, which made managing them, during runtime, much clearer, then if each different AI behaviour was hardcoded.

For the 4 unique characters, this system ran alongside some unique scripts made specifically for that AI.

The ai was designed so that a few behaviours could be created, which could then be mixed and matched to create different types of ai behaviour to experiment with.

By creating this system for the AI, the layout for each ai was similar to each other, which made managing them, during runtime, much clearer, then if each different AI behaviour was hardcoded.

For the 4 unique characters, this system ran alongside some unique scripts made specifically for that AI.






For example, the swarm AI is a combination of the flying enemy, and a new swarm behaviour script.


One of the unique enemies was a soldier robot, which would follow the player, if they were within their bounds. As a result of being a grounded enemy, they would not be able to simply phase through the terrain to follow the player. Thus, I created a navigation system that would allow the AI to follow the player.

Because this game was a sidescrolling platformer, each node would need to know if they were an edge node, or if there was a node above them that was within reach. Doing this gave the AI the ability to safely drop from heights, jump up to a platform above, or jump across a ravine.

Take aways


Through this 4 month long project, I was able to strengthen my collaboration skills with another programmer, as well as with other disciplines. I also learned how to be less attached to my ideas, as they may not be used for the final game. Although an idea may be great, does it fit into the design? If not, then it doesnt need to be in the game.