top of page
Kopia av SpiteBanner_edited.jpg
Game Genre

Action RPG

Time

14 weeks of half speed

Team size

22

Engine

CatBox

My role

Player/Audio/Math

My contributions
  • Player

  • Audio functionality

  • Screen to world position

Player

The player character functionality was a joint project between me and Alexander Rosendahl. I handled the ranged attack, the whirlwind ability that went through so many iterations and the berserk ability. I also started with the movement but as I slowly transitioned more and more towards sound the responsibility for the player eventually got transferred to Alexander.

Axe Boomerang
On the return it accelerates so that it will always eventually catch up to the player. The cooldown is not fixed but is instead limited by the fact that the player only has a single axe and has to wait for it to return. You can see it in action in the audio section as I show that it has fully working 3D sound.

Fimbul Winter Storm

Fancy name for an ability we originally called beyblade. We originally modelled it after the classic whirlwind ability but as the project went on we slowly modified it to what it is now.

Bärsärk

This is our ultimate ability. It was originally planned to just be a buff ability but we modified it so it does damage on triggering as well as giving movement speed, attack speed and lower cooldowns on all other abilities.

Audio

For this project we had a dedicated external sound designer, Albin Wrede, so I had to step up our sound engine game to match his output.

 

The Game Assembly had provided a wrapper for the FMOD API but it was missing several features as well as having a few broken features.

The first thing that was requested from me was the ability to use 3D sounds. FMOD has built in support for it and it should have been an easy feature but it was one of the things that were broken and as a rookie sound programmer it took me roughly a week to find out that the old call to the API for some reason did not work. Once that was fixed it was pretty much smooth sailing.

Our sound designer also used parameters quite liberally which gave us some amazing features such as layered music that would adapt to the moment and all sound getting muffled when at low hp thanks to a global parameter.

A big shout out to Albin for being so amazing. 20 minutes before the deadline for the final submission we noticed we were missing one sound effect. He still managed to deliver and give me enough time to actually implement the sound.

Converting Screen to World Position

As the game is a Diablo style action RPG one of the core features is to be able to move and attack with the mouse. We needed a way to calculate what we were clicking on or hovering over in order to even start this project.

There are several ways to solve this but the way I solved it was to convert the mouse position from a pixel point to a -1 to +1 range on both x and y axis. Then using the cameras view matrix and world matrix I could convert it to a position on the near plane of the camera frustrum which could be used to get a direction vector that could then be raycasted with to see what the first hit would be.

I will admit that this gave me more of a headache than it should have but it was mostly due to me not fully understanding how it all worked. In the end I solved it and could even reverse engineer the other way for Henrik Park to be able to place health bars accurately above damaged enemies.

It might not be the best or prettiest solution to the problem but it worked for us.

bottom of page