Godly is a twin-stick shooter set in Greece during a summer holiday when Hades also decides to hit the beach along with a trusted band of monsters! For you to be able to go back enjoying your vacation, Hades needs to be sent packing back to the underworld!
Godly features lots of powerful items you can pickup and customize your character with and a map generator creating new environment to explore each time you play!
Production Time: 7 Weeks
Team: 4 Designers
Godly is a twin-stick shooter set in Greece during a summer holiday when Hades also decides to hit the beach along with his trusted band of monsters! For you to be able to go back enjoying your vacation, Hades needs to be sent packing back to the underworld!
Godly features lots of powerful items you can pickup and customize your character with and a map generator creating a new environment to explore each time you play!
The character consisted of several components. This is helpful since it split out the logic so that each script would handle its own thing, avoiding super classes and increasing readability. Tying them all together was the player controller who mainly handled input and passed it out to each of the components.
The character movement script handles movement, rotation and gravity based on directions given by the controller.
The combat environments in Godly are quite small and don’t leave much room for error, so it was important that the player could turn their full attention on the action and not to the controls. Therefore I made the change in movement direction and rotation almost instantanious to give the player a responsive feeling as they zip back and forth firing away at enemies.
Customization was a big part of this game, it added replayability through experimentation and exploration, it offered new dynamics in the gameplay and enhanced the game’s summer holiday theme.
It was important for us to be able to add new items at any time if we had a solid idea. Therefore I created an equipment manager with arrays of different equipment slots and indexes that was able to save and load the current equipment between scenes.
Each equipment had a slot regarding which part of the body they belonged to and an item index. Based on these two values, the equipment manager would find which mesh would be activated on top of the character mesh, also enabling any scripts on that equipment piece. To finish off, it checks if the equipment slot was previously occupied and if so it drops the previous item onto the floor.
Player interacting with luggage and picking up a pair of headphones with some bangin’ tunes!
Finding and picking up loot is a great way to incentivize exploration. Scattered around levels, the player can stumble upon Hades luggage. Inside it lies a wide variety of equipment that grants the player a new visual element and sometimes new awesome powers.
To open it I wrote an interact function for the player and an interface that is used for both the luggage and the item pickups inside.
To give the player some presence in the world and offer them more feedback, I added sounds to whenever the player took a step. However, due to the player being able to aim and walk in any direction, the animation blend tree became very complex.
This meant that animation events wouldn’t work since multiple animations blended together would all try to make a step sound at the same time. Raytracing wouldn’t work either since the foot placement wasn’t accurate to an actual foot step.
To solve it, I instead used animation curves. In each animation I drew two curves, one for each foot. Whenever that foot touched the ground, the curve reached the value of zero.
This gave me a window to compare the values each frame. Whenever the curve currently is above zero and the previous is below zero, I raytrace a short distance from the foot to make sure you are actually touching the ground before playing the sound effect.
I was then able to tie in another item into this same system, a pair of shoes sparking fire underneath each step of the player.
Not only does it create a cool looking effect, but also damages enemies that stand in it. Making it a very powerful item that can be used to create fiery circles around ranged enemies or tricking melee enemies to chase after you on a blazing trail.