GODLY

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!

                Engine: Unity
Production Time: 7 Weeks
                   Team: 4 Designers
                              6 Artists

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!

                Engine: Unity
Production Time: 7 Weeks
                   Team: 4 Designers
                              6 Artists

DESIGN GOALS

  • Customization should allow players to choose between power or expressing themselves.
  • Exploration is optional, but rewards players who like to look behind every nook and cranny.
  • The game should have replay value, both through the levels and the items they discover.

MY ROLE

I was the lead gameplay scripter, working closely with our level- designer & programmer to develop the game’s flow. I also worked with our artists to implement 3D models and FX.

Most notably I implemented the player character, equipment manager, loot and other miscellaneous features.

PLAYER CHARACTER

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.

The character with a bag of rocks on his back and Cupids underwear on his head, giving him some sweet health regeneration.

EQUIPMENT MANAGER

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.

Equipment Manager Inspector

Player interacting with luggage and picking up a pair of headphones with some bangin’ tunes!

LOOT

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.

MISCELLANEOUS

STEP SYSTEM

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.

The animation blend tree

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.