Skip to content

About

bob the axotolotl saves his friends and detoxolotls his home

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

231 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Detoxolotl Bob

Help Bob save his friends by cleaning them with the power of friendship!

A cute little precision platformer game made with a custom game engine and physics system.

Milestone Videos

Asset Attribution

Milestone 4

  • Creative components: particle system (20%), advanced integrated assets (20%), game balancing (10%)
  • Our user testing feedback throughout the milestones can be found here: User Testing Feedback

Particle system

  • Two types of particle effects can be made currently: dust (can be seen floating around the game in the background and foreground) & trailing particles (used on our attack bubbles)
  • All emitter types can randomly generate particles with varying attributes (velocity, scale, color, opacity) within a certain range
    • It isn't necessary to allow for variance (can set to 0), but it allows for more dynamic and interesting effects, so I've used the allowed variation in all of our particles
  • Particle emission fully accounts for the scenario in which multiple particles need to be emitted per step (eg. need to emit every 50ms, but each step is approx 100ms)
  • There are multiple layers of particles: background particles, level particles (above game components except attacks), foreground particles (above everything except UI)
    • Background and foreground particles persist on level change/restart but level particles are removed
    • Each layer of particles uses instance rendering, providing the position, scale, opacity, and color per instance (1 draw call per layer since there are things that have to go in between)
  • Particle safety padding: This is a variable I have for the maximum offset that particles are allowed to travel without being removed
    • This allows for particles to be generated just off screen and move onto the screen for better immersion

Advanced integrated assets

  • We have various cohesive assets that are integrated into the game
    • The player, enemies, and other entities (along with their animations) are all self-created pixel art with a consistent style
    • The background elements and tiles are edited pixel art assets edited to fit the underwater motif
    • Music and sound effects were chosen with a consistent theme in mind

Game balancing

Milestone 3

Complex prescribed motion

  • Fish + some squids move in bezier curve

Basic story elements

  • 3 animated cutscenes: intro, first time you see a crab, after you defeat the boss
  • You can press 'E' to skip the cutscene, this is meant to be a debug feature only.

Simple rendering effects

  • Our sprite shader has a glow effect which uses the formula for screen in graphics processing programs.
  • We did use the glow in Milestone 1 to showcase linear interpolation, but we have extended it for this milestone to be able to loop back and forth between two colours
  • This glow gets applied in 2 ways on our player sprite:
    • When an enemy collides with the player (default: interpolates between two colours then stops glowing)
    • When the player's health is low - below 1/3 (looping: loops back and forth between two colours infinitely until removed)
      • This can be either due to player input (shooting water lowers the bar) or due to collision with an enemy (will be shown after the collision glow)
  • You can also see the health/water bar flashes too when player health is low
  • The screen shader has been adjusted to add a vignette so we can nicely fade in and out when player's health is low as well

Reloadability

  • We have 3 save slots!
    • Press 1 to save into save slot 1, press 2 to save into save slot 2, press 3 to save into save slot 3
    • Press 4 to load save slot 1, Press 5 to load save slot 2, Press 6 to load save slot 3,
    • This will be supported by a menu later on, but for now it is just a key based system
  • The game does not automatically save on exit (in case you want to save scum??? or replay cutscenes)
  • Saving will save Bob's current HP, the level he's on, as well as if he's seen any cutscenes or defeated the final crab boss
  • Reloading will put Bob back to the save file's HP, re-spawn Bob at the checkpoint of the level he is on
    • Note there's no visual cue for where the checkpoint is due to time constraints, but they're marked with 8 in the level json file.
  • If Bob has defeated the final boss and saved, going back to the boss arena will not respawn the boss
  • Enemies and breakable blocks will be respawned regardless of if you've cleaned them prior to saving for the true roguelike experience^tm
  • if there's no related save file then nothing will be loaded and the game proceeds as normal
  • save files are under /data/

Milestone 2

Mesh-based collision system

  • The player has a mesh, and we use the mesh to handle collision with enemies
    • NOTE: player-tile collision is currently being handled by a rectangle, not the mesh
  • Assumptions:
    • Convex-only, no concavity as of this milestone
    • The bottom of the mesh is completely flat so it is easier to handle player-tile collision with the mesh in the future
  • Mesh-based collision is using SAT

AI Documentation

Decision tree:

Image of our decision tree

FSM:

Image of our FSM


© 2025 Ruby, Lisa, Mark, Grace, David, Eric. All rights reserved. This repository and its contents may not be copied, modified, or redistributed without permission.

About

bob the axotolotl saves his friends and detoxolotls his home

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages