top of page

Slime Guy

- Primary Roles

Programmer, Producer

- Date

September 2023 - Present

- Release Date

Spring 2025

Slime Guy is a roguelite dungeon-crawler, except you play as a seemingly weak slime with powerful slime abilities. Powerup by obtaining new abilities and relics to build out your strengths, traverse through procedurally generated levels, and battle your way to save your kidnapped family.

Steam Link

Procedural Generation

roomgen.gif
  • Based on the Wave Function Collapse Algorithm

  • Given a list of room types (Wave, Event, Shop, etc...) and generates a random order in a queue

  • Starts by placing nodes for each room in the scene

    • Each new spawned node checks for existing neighbor nodes, and walks in a random empty direction​

    • Nodes are stored in a 2D array with dimensions set in the inspector​

  • After all nodes are placed, the algorithm places prefab rooms from scriptable object lists on top of the nodes

    • When a room is placed on top of a node, it checks the neighbors of that node so it knows which room to place​ and takes the room type from the top of the queue generated at the beginning and goes into the corresponding scriptable object list to grab the room

I chose to do the algorithm as more of a Semi-Procedural almost lego block placing aglorithm because of the time constraints on the project at the time. We were only 6 months into development in 2024 and knew we were supposed to have an expected release in April or May in 2025. Because of this fact, I opted to implement a solution that would generate random maps for us but with pre-designed handcrafted pieces that could be put together by checking which rooms can be placed next to each other and also checking the bounds set for the map.

Relic Upgrade System

  • Uses parent abstract Relic Class which is a Scriptable Object with functions that every relic needs to have

  • Different types of relics have separate classes

    • Stat-based relics contain the stats that are to be changed in the code

    • Status augment relics contain a reference to the status effect that needs to be augmented

  • Some relics when all collected merge into another powerful relic

    • The Relic Manager has a reference to each merge relic and the merge relic itself has a reference to each required relic to merge​

      • Whenever a relic is picked up or acquired, an event OnPickup fires and tells the merge relic to check if a required relic is equipped​

I created this scriptable object system for the project to be scalable and allow for fast implementation of new upgrades in the future, as some of the designs given to me are similar, so I opted to create an implementation that could allow me to code 1 script for 3 relics, or 1 script for 10 relics in some extreme cases. I also had to keep in mind that I needed to easily access data for the relics, such as their UI Icon and name which I needed to display in multiple different UI menus. 

Code Snippets

image.png
image.png
image.png
image.png
bottom of page