#godot #team #lead-designer #technical-design #vr #shader

This is my third team project and the first one where I was the wearing the lead designer hat. However I was pretty confident on my ability to guide my teammates, the composer UnconsciousMotifs and SFX designer BatFerro, given the amount of synergy we already have acquired together.

As if that weren't enought it was also our first VR project. Needless to say, we learned a lot from it in terms of UX, VR development systems and complex object interactions.

The idea

You want to build a tower that can reach the heavens, but hordes of angels will try to stop you in your building progress. It is a reinterpretation of the story of the Tower of Babel, we got inspired by the theme of the 1-BIT JAM #4 "Tower".

Gameplay

Can be easily explained like this:

  • You use items and weapons at your disposal to survive from the hordes of angels that come and try to destroy the tower.
  • When you survive a set amount of enemies you are brought to a mysterious merchant where you can are able to buy new weapons and upgrade your tower.
  • Repeat untill your tower is powerfull enough to withstand the final horde of angels.

The enemies

At each level of progression the hordes of enemies will be composed of different kinds angels. Each of them with a different movement pattern.

To achieve many diverse movement patterns I created a modular system based on a few mathematical functions that I could use during the design to achieve my desired outcome. Some combinations were quite bizzare and behaved in funky ways but I'm still proud of this.

The weapons

At each encounter with the merchant you could purchase one or more weapons and upgrades.

WeaponTypeProgress NeededRetrospect notes
BricksThrowableStarting weaponReally annoying to use, you have to pick them up, one by one from the floor at the start, bad UX
HammerMelee / Throwable1st shopThe idea of a melee weapon is against the design of the enemies whenever they are near it's too late for melee, useless first item
CrossbowLong Range2nd shopReally good feeling weapon, but annoying reloading mechanism, you have to physically grab the new arrow from the table and put it into the holder
HarpLong Range2nd shopThis behaves similar to the crossbow, but you don't need to reload it, to shoot a note projectile you need to play 4 notes in sequence in rapid succession
CannonLong Range3rd shopTo reload it you need to open the barrel, chuck a bunch of cannon balls inside, close the barrel and press a button. It feels really rewarding but it has the same issue as the 2 weapons above
Electric HammerMelee / Throwable3rd shopJust a useless variant of the hammer, it electrifies enemies in the range of the first hit, pointless at this point in the game

These weapons all have problems, some clash with the enemy design, others involve very repetitive and exhausting tasks that in a VR experience can be really annoying to perform for long times. Fortunately the game doesn't last too long, just 20 minutes, but still a problem I will try to address in future projects.

Aesthetics

We were on a really strinct schedule, only 2 weeks, and in the team I was the only one with some sort of modelling and graphical skills, so we had really little time to create complex models and textures. We also had to stay within the rules of the jam, so we needed to only have 2 colors.

To solve that issue I worked on a posterization and dithering effect heavily inspired by Return of the Obra Dinn. This art style is achieved using two GLSL shaders:

  • Shader 1: Downsampling, Depth-based edge detection, 1-bit posterization using luminescence, and ordered dithering.
  • Shader 2: Paletteswapping

The original idea was to gradually change the two colors during gameplay to convey intensity whenever the enemy got nearer or the enemies were too much. The idea was left unimplemented for lack of time, but in some capacity the dynamic soundtrack already helps with that goal.

Altough on a flatscreen the effect may seem dizzying, I think I found the right balance as to not make it annoying, so in VR it feels really nice.

If you have a VR headset and at least a GeForce GTX 1660 Ti you can run it!