Ratioactive
Ratioactive (rat • ee • oh • active) is a 2D arcade shooter where you play as a rat in a cheese-infested kitchen and fight through waves of evil cheese, collecting points as you go. Buy weapons and obstacles and survive for as long as you can. The game features 17 different weapons, many of which are silly takes on real-world items.
Ratioactive was a project I created with a friend over the
summer of 2023. It is heavily inspired by the likes of Call of
Duty: Zombies and Enter the Gungeon for it's gameplay aspects
and combat systems.
I created the project in Godot 4 using Godot's GDScript
programming language. All the code was written by me including
the combat system, purchasing system, enemy pathfinding and
attack systems, and the data-driven weapon system. I handled
many game design decisions like interaction design and assisted
in level design. Additionally, all game-engine-sided things such
as level colliders and building the project in Godot were done
by me.
One goal for this project was to begin experimenting with
data-driven design. For my implementation in this particular
project, I used Godot Resources, which are lightweight data
containers that hold information like weapon texture,
positioning, and weapon statistics (ammo, damage, etc).
Working with creating a data-driven item system is something
that I have carried with me to many projects since Ratioactive.
I find it to be highly efficient for creating multiple types of
items and can see the applications in other games like Minecraft
or Call of Duty where many different items can boil down to:
Texture, Model, Statistics, or other data points. Abstracting
these things can make development much more efficient.

Here is an example of the data-driven weapon system. With the
system I set up, new weapons can be made easily via an inspector
rather than everything being hard-coded. This accelerated
development and made new weapons quick to create.
The link to the code driving this process can be seen here.
Another goal in this project was to use A* Pathfinding in a
project for enemy AI. I used Godot's built-in navigation agents
to act as a way of learning how to interact with such a
navigation system. Using this system, I created navigation grids
where the enemies could walk on and set their target
periodically to the player's position. The enemies would try to
avoid walking into each other as to avoid bottlenecks at
chokepoints like doors.
In creating the enemy AI for Ratioactive, I learned a lot about
enemy pathfinding rules, A* Pathfinding, navigation algorithms,
and some about goal-oriented AI programming (GOAP). In the end,
I ended up not using a GOAP system for my enemies, but I found
it highly interesting and took notes for future projects.
See the video for the enemies in action as well as general
Ratioactive gameplay.