Harbingers of New Dawn


Spells Systems

In Harbingers of New Dawn, I was responsible for the multiplayer lobby, and for everything pertaining to spell casting. I also made some of the music for the game.


This project was created as part of the school curriculum.

Spell system


In Harbingers of New Dawn, my primary responsibility was the spell system and everything pertaining to it. Essentially, I had to create a system that could accomodate many different kinds of spells, all in the same system.

For this, the basic unit is the Spell Slot, which holds how many charges the slot currently has, the current cooldown, and the unchanging data, stored as a Data Asset.

Most spells work in a very simple way, when they are fired, an actor is spawned. For this project, I decided, for the sake of our designers, to make all actual spell functionality Blueprint configurable. As a result, it is very easy for designers to create new spells. Nevertheless, it of course had to take some time to make a new spell since a single spell needed something like 4 particle systems.

The spell selection menu.

Some spells would show extra cues, such as the storm spell in Harbingers of new dawn. When aiming with this spell equipped, the area which is being aimed at should be highlighted to show the player the extent of the spell. This was done using a decal.

In addition, there was a check for if the spell could be held down, such as for the ice ray.

Multiplayer Lobby


Since this was a multiplayer game, all of us programmers had to constantly keep the fact that the game was going to be multiplayer in mind. This meant that I gained a solid grasp of the Server-Client Relationship, RPCs, and Unreal's Networking API.

Using the Unreal Networking API

In creating the lobby system, I also used UMG in C++ to create the matching UI. This turned out to work very smoothly, and I had no major issues.

The system worked on LAN, not globally.

I also had to keep the Networking in mind when building the spell system because everything had to work properly and efficiently on the Host and the Clients.