Project Categories

Project Setting Professional
Team Size ~30
Role(s) Gameplay Developer
Languages C#
Software/Tools Used Unity (engine), Visual Studio (code), Git/Gitlab (source control)
Status In Development; own role complete
Time Period October 2021 - April 2022


That Damn Goat is a local multiplayer party game developed at RIT MAGIC Spell Studios by students and faculty revolving around themes of chaos. Players can use abilities based on their themes as well as gadgets they can pick up during play, all while avoiding a goat that has a multitude of its own abilities to mess with players.

My work focused on gameplay development, often focusing on implementing character abilities and other mechanics related to gameplay. For the Fall of 2021, I improved aim assistance, added player 'roadrunner time,' and implemented several character abilities (with some post-implementation modifications after design updates). For the beginning of the Spring of 2022, I first focused on bug fixes and improvements to general gameplay. Later in the semester, I worked on environmental buffs for several characters, which included implementing a system for handling environmental buff volumes being destroyed on map changes to ensure players reset any modifiers they gained from buffs/debuffs.

In my last week for Goat, in under 15 hours I created a custom input event system for multi-user UI navigation, which anchors player indicators to their own selected elements on the menu and could anchor multiple players to the same UI element. Along with this I had to rebuild the entire game menu (which includes several custom UI elements, a main menu, game options screen, audio screen, ready-up screen, and loading screen) in order for it to work with this new UI navigation.

My Work

General Gameplay

  • Added an effect where player hangs in air for brief moment before falling off ledges/surfaces/etc so they can go back if walking off a ledge was a mistake (sometimes referred to as "roadrunner time")
  • Expanded upon "roadrunner time" to also allow for jumping for a brief period after losing ground so players don't have to be frame-perfect
  • Added player related logging which tracks ability uses/usage through a round, gadget uses/usage, character changes, knockdowns
  • Various bug fixes
    • Includes bugs related to player slowdowns, such as strafing on flat surfaces being overwritten by a false check, and a gadget and a hazard both causing permanent slowdowns because of OnDestroy not calling OnTriggerExit (added helper class to handle tracking players for this)
    • Includes bugs present only on builds (such as cameras looking into space at the start of the game because of an exception interrupting player setup caused by a race condition in Unity's Start()), involved a few hours of builds to narrow down the MR/commit that started the issue and setting up build debugging to determine the cause
  • Added ways for various aspects of the game such as ability states, status effects, objects created from abilities, tweened movement, etc., to be reset when starting a new game round

Character Mechanics

  • Improved auto aim (original: shooting projectiles toward current player target's position; change: aiming to their future position), while also adding an aim assist functionality to smoothly curve projectiles toward a target with a limited angle
  • Modified an existing character's ability from simply spawning a growing AoE stun to have a sort of lift up then slam down to spawn AoE
  • Implemented a character who uses a lasso-like vacuum which pulls other players toward the character; adds physics to Unity line renderer which, using previously added aim assist, grows/shrinks a number of segments, and moves line segments with player (the further the points are the less it moves)
  • Implemented a character's ability which spawns a hazard that slows other players down on projectile collision, projectile using aim assist code made for an earlier character (this was later modified to be a direct status effect rather than a hazard, see later point)
  • Implemented a character which uses a jetpack that can recharge while the character is grounded (implementation also supports a delay to recharging, disabled for now by design)
  • Modified a character's lasso-like vaccuum by grabbing crown objective automatically on grab, and instead of modifying target transform with lasso, tween them in an arc over and behind the player
  • Added small generalized status effect system using particles and system.linq (for a struct associating an enum status effect with the relevant particle system) that starts and stops with tween timers in the relevant callers
  • Implemented status effect system with existing characters, including previously implemented one which was modified from spawning a slowdown hazard to causing a direct status effect slowdown on a character
  • Implemented character's environment buff where volumes affect player speed; modified existing multipliers so that they stack cleanly and easily with *= & /= even while they are in their own speed-driven ability
  • Implemented environment buff for a character where other players slip on ice with a degree of randomness based on their speed
  • Implemented environment buff which enables a hazard on a player that can stun other players; this buff also allows the buffed player to walk through certain doorways that will stun other players
  • Modified a long-existing environmental water buff/debuff so that it uses the afformentioned modifier system rather than setting its own modifiers and ignoring any speed modifiers on the player


  • Improved responsiveness of camera with player movement input to avoid fishtailing and allow for tighter rotation when the player moves in a circular manner
  • Improved map RNG by using a pre-shuffled queue to ensure maps appear to be chosen with equal randomization
  • Created a custom input event system for multi-user UI navigation implemented with a fully rebuilt game menu


These are some samples from the project.



That Damn Goat is © MAGIC Spell Studios LLC

TDG Twitter Profile