The Last Shuttle is a desktop and VR space horror game inspired by Dead Space and Calisto Protocol. Play as Connie Williams, a moon base maintenance worker navigating catastrophe far from home.
Tools: Unreal Engine, C++, Blueprints, git/Github
Summary
The Last Shuttle is a space horror game for the desktop and Oculus Quest VR platforms, built in roughly 15 weeks as a Digital Gaming & Simulation project capstone by a team of 20 students. As the lead developer for the project I managed a team of three programmers and worked on some core implementations myself, as well as maintaining the game’s git repository and dealing with any conflicts and other issues that arose.
- Get The Last Shuttle from the itch.io page.
- View source via the GitHub repository.
- Check out the game’s trailer below.
Trailer
Implementation Highlights
Targeting both PC and VR platforms meant we had to put some thought into mechanics that would work well on both platforms, ideally without too much code duplication and while minimizing separate implementations for both platforms.
Interactions
Most primary mechanics in the game either derive from or are accessed by (in the case of the flashlight) basic interactions with objects. We wanted this system to be as simple to extend beyond the base implementation, so we could painlessly define new object interactions in blueprints.
An interactable door switch in the VR game build (outlined when in activation distance of the hand).
To this end we wrote a base InteractibleComponent
C++ class for all interactable objects to derive from, then a subclass that defers interaction behavior to a blueprint-implementable event function. From this class we created a template blueprint component that draws an outline to the screen when it’s ready to activate, which we could subclass to easily define new interactions.
On desktop this means the object is within a certain reach range and the player is looking at it; on VR, it means the right controller is close enough to interact with the object. However, instead of checking the active platform and these conditions from the interaction blueprints, this logic is done in the respective desktop and VR pawn classes and the interactable objects themselves work seamlessly without needing to know which platform is active.
Enemies
The Last Shuttle has a few enemies throughout the second level in the form of pesky space spiders, who will stop at nothing to prevent maintenance workers like yourself from traversing their newfound home. Spiders will wander their territory until they spot a player (or the bright flashlight beam, visible from further away). They’ll approach the player quickly until within range and leap, in an attempt to puncture the player’s suit (the space spiders are very intelligent).
Reginald Spider rounds the corner as the player fades out of consciousness.
The spider AI is essentially a decision tree written with Blueprints; it proceeds with whatever action it selected previously unless a higher priority action (ie leaping toward the player when close enough) is available, in which case it will stop what it’s doing and seamlessly switch to the new action.
The AI uses an Unreal NavMesh to move toward targeted locations on the ground and to pathfind to the player when it spots them. Once it’s decided to leap, it predicts the player position a little forward in time and calculates a trajectory to reach that point, then jumps along that trajectory (unless the path is blocked, in which case it idles briefly and either tries again or loses interest).