UPDATE: The Feykin won!
It may be hard to believe, but Warcraft 3: The Frozen Throne, released in 2003, is still having content being made for it in 2016. Most of it is by the fans, but there’s also new official content seeing the light of day, with more said to come. I assume this apparent ‘revival’ of the title has something to do with Blizzard’s foray into the motion picture industry. As a fan of the game for all those years, I can only be excited about this.
I’ve been modding Warcraft 3 on and off since it came out, and have recently gotten back into it after failing repeatedly to get hooked on Starcraft 2’s modding scene. Every time I went back to Warcraft 3, I learned something new, and this time around I took an interest in learning JASS, the scripting language used in Warcraft 3. I am primarily a graphic designer, so programming has not really been something I was particularly concerned with, but I had a vision I wanted to bring to life, and that could only be realised if I learned to code. I don’t consider myself a developer, by any stretch of the imagination, but I was sufficiently acquainted with JASS to be able to comfortably create the things I could think up.
Enter The Hive Workshop’s Techtree Contest number 10.
I’ve always dreamt of making my own RTS game. I remember as a kid I would draw bases influenced from my time playing Command and Conquer, adding my own alien twist to it to make it mine. In Warcraft 3 this is entirely possible. There are some great mods out there that have inspired me to make my own, but something like a total conversion of the game requires a lot of time and effort and usually multiple people working in concert. The task becomes even harder when you keep in mind that no one is getting paid for this, so motivation can run dry pretty quickly. The Techtree Contest of the The Hive Workshop, to me, is like the lite version of modding on that scale. There is still a lot of work that goes into it, but creating one faction simply does not compare to modifying an entire game.
I’ve participated in Techtree Contests before, and actually won first place for the ninth one. I wouldn’t presume to call myself an expert on the matter, but I at least hold some insight into what it takes to make a race.
The theme for contest number ten is ‘Mythology’, a theme I was not particularly fond of. The reason is that mythologies are already established sets of stories, and despite the wealth of custom 3D assets available for download on The Hive Workshop, getting the right model with a particular background remains a challenge. The only wiggle room you have is on how you interpret mythologies, which is ultimately what I did. I also cast my net wide to make sure I had enough coherent material to work with; the mythology of my choice was British Folk Tales, and the race I made was the Feykin.
Before I go into the meat of the matter, I’d just like to point out that I didn’t use any guides or templates while going about this, which is something you’d might want to consider. As it turns out, I’ve had a lot of overlapping roles in my unit composition, so this may have been unwise to just go into without proper planning. What’s done is done, I suppose.
The way I go about making a race is to identify a mechanic that will more or less be its signature move. There can be multiple such mechanics but my focus is generally on base-building, which is why when I think of the Undead faction, I think of how they summoning structures instead of building them up like the Orcs. When I think of Humans, it’s the fact that multiple Peasants can team up to speed up the construction of a building. For the Night Elves, the Wisps get consumed when they create an Ancient-type ‘building’. The same difference can be seen with how each race is provided food. Every building that serves that specific purpose have a secondary function, like the healing Moonwells of the Night Elves and the Ziggurats of the Undead that can be upgraded to defensive structures.
As a general rule, I like to avoid copy-pasting mechanics as much as I can, and so for the Feykin, I did away entirely with workers and made the starting building (usually categorised as a ‘Town Hall’) deal with that. The Feykin Town Hall is the Fairy Ring, a circle of mushrooms with a pillar of light at its centre. With the concept in mind, it was time to get technical.
There are certain limitations to the way things are hard-coded in the Warcraft 3 engine that make some things impossible, which means you will have to come up with workarounds. In this specific case, ordering a building to do the construction of other buildings simply doesn’t work as buildings cannot move to the construction location (engine stuff, can’t be helped). There are certain ways to circumvent that, like using an area of effect ability instead – but I wanted to retain the grid placement style so I would know exactly where my structures were going to appear at. The method I came up with was to catch when the Town Hall was ordered to build, catch the X and Y coordinates of the order point, and create a dummy builder that would do the real construction. As an added aesthetic (which will eventually become a mechanic in itself) I made it so that a trail of mushrooms would crop up and grow from the Fairy Ring towards the structure in progress. The rate at which they appear and grow coincide with the construction time of the building.
In the video below you will see how building works (at an accelerated rate), as well as the food source of the Feykin, which emits healing spores every 15 – 20 seconds.
Next came the collection of resources. As far as that went, it was a case of figuring out how to harvest Gold and Lumber without workers. Gold was easy enough – I simply used the Haunted Gold Mine of the Undead, removed its ability to accept workers, and automated the whole mining process that was triggered by an ability. Every 5 seconds, a gold coin would fly out of the mine and zoom up a beam of light, granting you 50 gold.
The lumber part took slightly more brainstorming, but it was actually rather easy to make. I used a library called GetClosestWidget to make the tree-harvesting building (called the Enchanted Meadow) catch the closest tree that after 30 seconds would get magically felled and a walking tree would assume it’s place. This living tree would then be ordered to cast a close-ranged ability on the Enchanted Meadow. Once the game detected that the ability was execute, the living tree would die, granting the player 50 lumber. To make sure the tree had to be in the centre of the Enchanted Meadow to cast the spell, I had to set the collision size of the building to a low number. Coding complications came up when I found out the Meadows close to one another could potentially pick the same tree, so I went to my friend Retera who made me a system to handle grouping up trees. If a tree is in said group, then that means it is being worked on, prompting the Meadow to harvest another tree.
Not content with just shaking up the building and harvesting methods, I decided to change how Feykin units were brought onto the battlefield. The idea I went with was that humans and fairies lived in different worlds, and so the training process was actually an act of summoning fairies from the fairy realm. I wanted it to look fancy, so I thought up a way to do just that. In the end, the concept I went with was like a supply chain; any structure that trains units would take 5 seconds to pop out a glowing orb that would in turn make its way up the mushroom trail (based on the unit’s build time) that connected the building to the Fairy Ring. Once it reached the edge of the ring, it would zoom upwards towards the beam of light and get replaced with the unit it was meant to summon. You might think this process is entirely cosmetic, but there is a mechanical application to it that makes it different – an enemy can prevent a unit from being ‘trained’ without having to destroy the production building itself (by destroying the glowing obs). This makes a Feykin base under siege difficult to defend, but the advantage is that the Feykin can summon units almost like products coming off a conveyor belt at a factory. The trade-off is safety for speed and economy as there is no need for multiple unit-production buildings.
Most of these have been accomplished using dummy units. Dummies in Warcraft 3 modding is a very common thing. It’s essential for the more complex systems. One such system is Missile, by Hive user BPower, and it uses dummy units to create completely controllable projectiles that behave exactly like their in-game counterpart. The only drawback to such a system is that units (dummies or otherwise) tend to be relatively taxing in performance, so abusing it is not recommended or your frame rate may suffer. The application, however, provides so many possibilities that I couldn’t help myself.
Using Hive user Bribe’s Damage Engine and the aforementioned Missile, I was able to make a defence structure (the Adder Stone) that attacks using a group of small fairies. Each fairy constitutes an attack ‘charge’ and so the more charges there are, the more attacks the Adder Stone is able to sequence together. The way it works is rather simple – the Adder Stone itself has a very fast rate of fire, but this is used purely as a trigger. Damage Engine will detect and nullify every attack an Adder Stone makes, which in turn prompts the game needs to check on the fairies. If there are any idle fairies, then I used Missile to use a fairy as a projectile. Once the fairy connects, the Adder Stone inflicts a coded damage to the enemy that isn’t nullified. To ensure that the Adder Stone’s damage stays even, the speed at which the fairies fly off and return is based on their distance to their targets.
Once the fundamentals were taken care of (excluding bug-fixing and polishing), it was time to work on the units and heroes. Because of the nature of the theme, coming up with enough units and heroes to fill a normal Warcraft 3 roster was particularly challenging, so I had to narrow it down to a smaller number. While I would have liked to made something to equal the vanilla races, I was fast approaching the contest deadline and decided that what I had will have to do.
I started with the units – I won’t go into details here (maybe I’ll save it for another article) since the biggest difference from the vanilla races went into base-building. I made their abilities and tried to balance them as best I could, but certain things can only be fixed during testing. As I was developing the units, I had two heroes that had already been made, but didn’t have any abilities. It would turn into a back and forth from unit to hero until I was satisfied with the abilities they all had. Once the Feykin army was complete, I made all the upgrades and researches that they would use and finally added the finishing touches, like placing mushroom rings around buildings to indicate their team colour. The bug-fixing came last, and it had already come to the last day of the contest. It was time for the submission.
If I had to go back on that project, would I have made different choices? Possibly – with the way I designed the Fairy Ring, everything it builds is connected to it, so if it dies, everything else does. That doesn’t account for the fact that unit-production buildings cannot function if they’re not attached to a Fairy Ring. The Feykin race has one too many weak points for my own taste, but at the end of the day, when you have limited time and resources, you can only do so much. However, I would say that the theme has been the biggest hurdle I’ve had to overcome. I am not one who enjoys working with so many restrictions – and creative work demands freedom, as far as I am concerned. I’ve heard the argument that restrictions breed a new brand of creativity, but I’ve never been the biggest fan of that concept. In spite of it all, I would be lying if I said I wasn’t proud of my work. It took time and effort, but in the end, I was able to at least present something worth while, in my humble opinion. Here’s to hoping the Feykin wins.