Ruckus & Rascal is a chaotic couch co-op adventure where two
players have to use their characters strengths to make it to the
end of the level. The diner’s staff don’t like you walking
around in their kitchen and will try to catch you when they see
you! Can you make it to the end of the level without being
caught?
This is a student project made during my 2nd year at Breda
University of Applied Sciences.
My contributions to the project
During this project, I mostly worked on the enemies and
tools to customize their behavior. My biggest contributions
will be listed below:
Enemy AI:
I implemented the enemies and their AI. The enemies,
which are employees of the Deviants diner, try their
hardest to find and catch the players.
The enemies use sight perception, which means that the
AI characters will only start to chase the player when
they can see them. The AI characters also use audio
perception. When one of the players throws an object, it
will produce a sound, and if the AI character hears that
sound, it will try to investigate the area of the audio
source. This enables the players to distract the
enemies.
AI Perception:
AI characters use audio and sight perception. This means
that if the enemies see or hear the players, they will
try to chase after them.
Multiple AI behavior states:
The enemy AI has three states: wandering, chasing and
searching. The wandering state is used when the player
cannot see/hear the players.
The behavior exhibited during wandering can be
customized using the AI routine editor tool, as
discussed further below.
When the enemy has a direct line-of-sight with one of
the players, it enters the chase state, where it tries
to catch the player.
If the enemy loses direct line-of-sight with a player or
only hears a player, it transitions to the searching
state. During this phase, the enemy navigates to the
location of the last perceived stimulus and
tries to search the surrounding area by moving to random
positions. After a while, the enemy will go back to the
wandering state.
Enemies try to catch players:
Enemies chase players in order to catch them. When a
player is caught by one of the enemies, the player is
picked up and carried to a trash can, where they will be
stuck until they're released by another player.
A screenshot showcasing the AI routine customization
tool.
Tool for creating and customizing routines for AI
characters during wandering state:
In early prototypes, the wandering state behavior
was simplistic, merely moving AI characters to random
locations. This resulted in enemies feeling very
unnatural and unpredictable, making them too challenging
to evade. To solve this, I implemented a tool that
allowed designers to create and customize the wandering
routines for when the enemies weren’t chasing the
player. AI tasks could be added to a character's
routine, allowing every enemy to have a predictable and
unique behavior. All routine tasks can be reordered and
customized in the editor tool. These routine tasks
include inspecting items (picking them up and looking at
them), moving along a predefined path and walking in
random directions in small areas. Through playtests, we
found that this solved the earlier issues of enemies
feeling unnatural and too unpredictable.
Move-to random location task:
A simple task that makes the enemy pick a random
point within a radius which it will move to. The amount
of random positions that the enemy needs to move to
before moving on to the next task can be customized in
the editor tool.
Inspect-object task:
In order to make enemies interact with objects in the
level, the inspect-object task was added. This makes
enemies move to a specific object in the level, where
they proceed to pick it up and examine it. While this is
happening, the enemy plays an animation to indicate that
it's interacting with the object. After a couple of
seconds, the enemy puts down the object and moves on to
the next task.
Spline movement task:
In order to make the enemy's movement more predictable,
a task was added for enemies to walk along a spline.
Users can create spline paths using a spline tool. After
setting up the spline, users can pick the spline object
in the AI routine editor. The amount of loops around the
spline can also be customized. After the enemy has
finished all of its loops, it moves on to the next task.
A screenshot showcasing a pre-made spline path used by a
specific enemy during the spline movement routine task.
Level interactables:
In order to make the level feel more alive, objects were
added for the players to mess around with. Some objects
could also be used against the enemies. The objects that
I worked on are listed below:
Flammable stove:
A one-time use only object that the players can use.
When turned on, the flammable stove shoots out fire,
blocking the path of the enemies. This object can be
used to temporarily prevent enemies from reaching you.
After a couple of seconds, the flames disappear,
allowing enemies to pass again.
Heavy objects for squashing the enemies:
Enemies can be killed by dropping heavy objects on top
of them. This will squash the enemies, permanently
disabling them.
Jukebox object:
The jukebox plays background music. The players can
start/stop the background music by interacting with the
jukebox. When a song is finished, a new song is played.
The jukebox has a total of three songs.
The video below demonstrates two of the interactive items
that I worked on.
During this project, I also took on the role as lead programmer.
This meant that I actively contributed to our Scrum processes, as
well as ensuring that all other programmers on our team were
aligned and knew what to work on next.
Quick overview
Project Type:
Game Project
Platform:
Windows (itch.io)
Tools:
Unreal Engine 5.1
Role in Team:
Lead Programmer
Project Duration:
16 weeks
Release Date:
June 23, 2023
Team size:
12
Role in Team:
Engine programmer and Lead
Now available!
Like what you see and want to try it out yourself? Ruckus &
Rascal is now available for free on Itch.io!
Ruckus & Rascal on Itch.io