Heist

Overview

In Heist, one player, the thief, must sneak into a museum and steal as many valuables as they can before escaping. The Security Security team must guard the valuables. The game is round-based, and places a heavy emphasis on stealth an deception. There will be no guns or killing in the game. In order to win you'll have to use a combination of communication, gadgetry, stealth, and patience.

I'm currently building a simple gameplay demo in order to playtest and refine the core mechanics as well as improve my  skills with UE4 Blueprints. So far I've built the core stealing and capturing mechanics, as well as full network replication for players and objects in the level.

Stealing

The Thief will win the round if they can escape with a specified set of valuables within the round time limit. The more valuables they can steal, the more cash they will earn.

Catching the Thief

The thief can be spotted at any time by the Security team. If 2 players spot the Thief, the round is over and Security have won. While the Thief by default can run faster than Security players, their movement speed will also decrease for each additional valuable they steal.


Map entities

Currently the game is coded entirely in Blueprints. I plan on dipping down to C++ when it comes time to implement some of the more sophisticated features, such as the item inventory and more advanced network replication.

I'm designing the level entities with future modding in mind. For each entity that is placed in a level, the mapper is provided with a high degree of customization.

Current placable entities:

  • Team spawn points
  • Valuable (objects on the map that the Thief can steal)
    • Can be provided with any custom static mesh
    • The amount of time it takes to steal the item can be customized
    • Mapper can set the amount of points awarded, and whether this piece must be stolen in order for the Thief to win
    • Whether or not the valuable will trigger a silent alarm
  • EscapeZone
    • Thief must touch this volume to escape once the requisite items are stolen
    • Number of stolen items required for victory

Blueprint examples

Stealing

The 'Valuable' Blueprint has a trigger volume which, when touched by a player, will assign a reference of that Valuable to a property on the player's character.

782314099d82eb4c00142344c20d4573

When the player holds the appropriate input button, and a 'Valuable' is set on the Character, then the stealing process begins. 

The work of displaying the progress bar widget, as well as cancelling the progress if the player steps out of the trigger volume is handled in the Character blueprint. When progress is completed, the item is removed from the map and added to the player's item count.

24de0a3a1f22a7889f4f4e48e9160a0f

'StarStealingValuable' function

88ffcb9a9126c04d4c8da408d30365e9

'FinishStealingValuable' function

Cd09864c122fba7a2ffb9148a3a7b77d

Hosting and Joining games (accessible from main menu)

Server hosting is handled by UE4's Create Session API, which is accessible via Blueprints. This isn't as fully featured as the C++ API, but for MVP purposes it gets the job done. I will likely rewrite the session code in C++ in the future.

B6eab125d303c91edcccd49fd81962d9

Spawning players after joining a game

4231435fcea6c03c77874e3f4d0717fa

Joining a team

1826d0f1254d6b1362568047e289d757

Controlling team joining events between server and client

642e8313ac8d960a759a6e443cb0582b

Managing state between clients and server

658ab2e29131b44ce61bf78c5b795d9d