Harbinger is a real-time strategy game in which the player controls a necromancer.
On a quest to raise an undead army and vanquish good from the world, the player gathers souls from fallen enemies to raise his army and send deadly spells the enemies way.
Ultimately decorating the fallen city of Ulendorf with the heads of his enemies.
As the player starts out on a journey towards darkness, only an ability named 'Raise Ghoul' is available, which is the core mechanic. The player learns more spells through the game and increases the cap of the max amount of ghouls controlled.
In Harbinger we wanted the necromancer to be evil but the player to be fine with it. For example there is a quest where the player kills humans to stop them from burning corpses, as the necromancer needs them to raise more ghouls. But we phrased the objective to be 'The villagers are burning corpses, stop this madness!' So that the player would understand the necromancers perspective.
During each and everyone of the game projects I have been a part of, time is always an issue sooner or later, except for Harbinger. This was because we chose a very clear reference game and were very strict with having a visionary who had the final say in all discussions. Since no one in the group had made a real-time strategy game before this really helped us keep the scope down and I feel we captured the essence of what made these kinds of games fun back in the day.
There were times where things had to be cut, which has made me be able to "kill my darlings", and make the best of it. For example, me and my level design colleagues wanted to have collectibles in the game, granting passive powers.
The group decided that it was low prioirity but something we wanted to have if time would let us. I built my level with this in mind but there was not time enough for us to implement this feature, instead those areas were made into places where the player could raise ghouls without using any souls, making for a good trade off for exploring the level.
Design and pipeline
When making my level for Harbinger I knew I wanted to make a level leading up to a harbour city and ending with multiple smaller camps that the townsfolk had set up. After making a top-down in Photoshop I imported it into a Unity project and projected it onto a terrain. This made it easy to make the basic shape of the terrain in no time.
I then exported the heightmap from Unity and imported it into World Machine. In World Machine I could generate mountains with erosion on them around the maps edges to later import it back into Unity. At this point I made a basic prototype of all areas where there would be gameplay so it could be tested in our game engine.
Actually playing the map for the first time made me realize that having multiple camps the player had to clear out felt way to tedious. So I changed it to a swamp instead with only one camp with a more epic fight which felt like a much better ending to the level.
When creating battles I had a script containing the entire level, every trigger and every enemy.
If the player entered a trigger a function in the script sent a string to a high-level AI similar to 'The Director' in Valves 'Left 4 Dead' , telling it how hard the upcoming fight should be and how many enemies the player prefferably would have to fight.
The AI then spawned enemies with these instructions in mind aswell as the players HP, Mana, amount of ghouls, etc.
It was a very fun project that really brough us together as a group and one that I am very proud of.