Hook & Throw
Hook & Throw is a two player couch-coop adventure game. Each player controls a unique character with a single ability. One can hook and the other can throw. The game is set in a world where the romans used steampunk technology to conquer Europe, and a pair of steam-powered vikings have to use their wit and skills to take back their land.
Role – Scripter, Game Designer, Level Designer
Engine – Unity3D
Duration – 7 Weeks
Team Size – 9
As a scripter my most noteworthy work was:
- The hook mechanic
- The throw mechanic
- Various interactive objects
I also worked on other tasks such as implementing audio, UI, animation and level selection.
There are two design pillars in Hook & Throw:
- Core coop. The entire game and its design is built on there being two players that must work together to beat it.
- Core ability. Each character is defined by a single ability.
Following these two pillars we decided that the abilities must complement each other, making it possible for players to achieve things together that they cannot do alone. Working with opposites solves this problem neatly. Having one player that can move things towards it (hooking things) and the other move things away from it (throwing things), makes for a very clear role distribution.
However, these abilities are not very interesting without objects to manipulate. To solve this we based the gameplay around spacial puzzles that one must use objects in the environment to solve. Having such a design space opens up many possibilities. We could now add things on top of the core design without disrupting it. Examples of this would be burning boxes that take enemies out in an instant, and chargeable batteries that could then be used to open doors.
To give the player a feeling of weight and power the throw has a windup mechanic that affects how far the held object will be thrown. The character also slows down as it charges up, which enhances the feeling of weight. During the development I noticed that players found it hard to aim far away from their character. This was because of the inaccuracy of the motion controller. I solved this by lowering the rotation speed of the character as the length of the throw grew
When a object is picked up it is set as a child to the player. The movement of the object now does not take collision into account. To keep the player from being able to shove objects through walls I create a spherecollider that ignores the player but collides with everything else.
To show the player which object they will pick up I give the potential pickup an outline. This not only shows player which object will be picked up, it also shows what can and cannot be interacted with.
In early prototypes of the game the player would have to align themselves so that the hooked object went into the enemy. Compared to the simplicity and fun of throwing things into enemies this was not very rewarding. I needed to make the hook more dynamic. I did this by having the object move towards the player by adding a force to it and also letting the player move around while pulling. Combining these two things let the player flail objects around in a very satisfying manner.
Aiming at objects far away from the player can be very difficult in a top-down game. I wanted the player to be able to hook things while moving, without having it be a difficult task in and of itself. The hook script now always checks for nearby object that are in an acceptable angle and range from where the player is looking. It then sorts through these objects, and chooses the one closest to the where the player is aiming.
Much of the gameplay relies on having interesting objects in the world to manipulate. All interactive objects inherits from a class that has the interfaces for hook and throw. This makes it very easy to create new objects with special features. Damage in the game is sorted into categories such as Fire, and Electric. The following objects makes use of this.
Electric objects are charged by electric damage and can then be used to either damage enemies or used as batteries to open doors.
Flammable objects deal massive damage and spreads the fire onto other flammable objects.