this is an Excellent article, the way its set out with the vids and pics. very technical but not rambley. I learnt alot out of it.
Bob would have been proud
Congratulations Lukas:) Amazing piece of 3D parametric shader:) thank You for sharing Your knowledge:)
Fatshark is a very professional company. You can feel this as soon as you enter the room to have a little peek into their new game Warhammer: End Times – Vermintide (official website). The demo we’ve seen at Gamescom 2015 was incredibly polished. The team obviously did a lot of work crushing bugs, integrating innovative ideas and testing gameplay. Once you play the game you can tell that all this effort was not spent in vain.
Warhammer: End Times – Vermintide plays like a fantasy version of Left 4 Dead with more gore and fun co-op mechanics. It’s one of those easy to pick up and hard to master projects that will no doubt find a lot of fans in the Warhammer community and among online action lovers. It’s a game of very high quality that just needs some months to get to the perfect golden standard.
Fatshark also has a big name in the middleware market. This team was behind Bitsquid engine, which was later sold and turned into Autodesk Stingray. We talked to the company’s CEO Martin Wahlund and learned more about the games and technologies Fatshark helped create.
From Northplay to Fatshark
The company did indeed start off as the subcontractor Northplay, which was founded in 2003 by a few key people who still work at Fatshark. During the course of 5 years, we consulted and developed games for several companies, including Headhunter Redemption (SEGA) and Ghost Recon Advanced Warfighter 1 & 2 (GRIN/Ubisoft).
In 2008, Northplay evolved into Fatshark, where we continued to do subcontracting work for PC and console, including Bionic Commando Rearmed 2 for Capcom, Lead and Gold and the War of the series for Paradox, as well as our self-published titles – Hamilton’s Great Adventure and Krater. In recent years, we have slowly moved away from subcontracting assignments and into more self-publishing projects, both with Bloodsports.TV and with our upcoming title Warhammer: End Times – Vermintide, our biggest project to date.
The Power of Stingray
Stingray, or Bitsquid as it was originally known as, was founded in 2009 by Fatshark, Tobias Persson and Niklas Frykholm. The goal was to create a flexible, scalable and multiplatform engine. We knew it was important to develop the engine close to a game developer but still with integrity so it didn’t get caught up in game releases and forced into bad short sighted decisions. The first title that was released on Bitsquid was Hamilton’s Great Adventure for PC and PS3. More titles has followed such as War of The Roses, Krater, Helldivers (Arrowhead GS), Gauntlet (Arrowhead GS), Warhammer: End Times – Vermintide and so forth.
The engine in itself is not tied down or created with any specific game in mind. It can be very hard to know in what end to start with your game if the engine does not provide you with any specifics on how to implement your features. Luckily Stingray comes with a set of sample projects to get you started or you just start from a completely blank page of LUA if that is what you prefer. In the end the engine is very well suited for many different types of games and with source access you will be able to customize the engine to your needs.
Building Vermintide with Stingray
The main feature of Stingray that we benefit from is the flexibility in how we implement our gameplay features. Stingray provides users with multiple ways of implementing features, either using the visual scripting language Flow, scripting using a very extensive LUA api or diving into the C++ parts of the engine for the more advanced users. With the ability to use and combine these three options to our liking Stingray really gives us all the tools we need implementation wise to create a great game. Stingray also provides a modern PBR based renderer to make sure our assets look really great in different lighting conditions.
Hot reload of code means you can program while the game is running, and just press a button to see the changes in game. This makes iteration very quick, you never have to wait for compilation times.
The Stingray engine also provides an extensive toolset for level designers/artists/animators and sound designers and together with an unprecedented interoperability with other Autodesk tools the content creation pipeline is really solid.
Getting Fighting Mechanics Right in Vermintide
We have had a sick amount of prototyping, especially in how the enemy Skaven AI interacts and positions themselves around the players, and to get the right impact feel of the weapons, which is very hard to do in first-person. While we had learnt about melee action while working with War of the Roses and War of the Vikings, one of our biggest challenges with Vermintide was to create a visceral first-person experience, seeing as this player perspective was completely new to us.
We tried different types of solutions for how to get the enemy not to overstep the player, intersect each other or become too robotic in their movement, when adjusting to player movement. The combination of first-person melee, co-op and a horde enemy amplifies these problems several times. Having first-person field of view in comparison to third-person view means that the player only sees a fraction of what threats are around.
Co-op means that players constantly shift positions around each other, forcing Skaven AI to adjust and move around the players. Horde enemy means that we have a lot of enemies that have to adjust. We developed several versions of a so-called slot-system where the enemy registers positions in slots around the players to handle this. The Skaven can reach any area they players can, by jumping or climbing, as well as areas that are completely inaccessible to the heroes, which also required a lot of prototyping.
To make sure a level played is different each time in terms of flow and pacing of enemy threats, spawns and hordes, we iterated and prototyped on our so called conflict director system. It reads how well the players do and presents threats to them to keep the game engaging, but not tiresome.
Code wise there has been lots of optimization lately. Having 50-70 enemies running around means that the simplest task they perform gets very costly in CPU power. We had to rewrite several systems so they could utilize more of a modern CPU.
Many of the key people working at Fatshark are very enthusiastic about the Warhammer fantasy world, both painting, playing and even competing with their armies. Our game director therefore decided on a whim to contact Games Workshop with our proposed idea just to see what they would answer. They turned out to be incredibly positive to the idea, and with the help of the money we got after having sold Stingray, we were finally able to create the game we had always wanted to make.
The Challenges of Building a Co-Op Title
There will always be challenges with each genre of video games, and co-op titles are definitely among them. But even within the co-op genre, different games will emphasize different features, and thereby face a unique set of challenges.
In our case, it was about finding a balance and constantly designing the game to encourage cooperation. With our heroes, it was a matter of creating strong personalities with unique weapons that were still adjustable to the players’ gameplay styles without destroying what made up their core. It was about showing the value of each hero, while at the same time making sure that each potential team setup work seamlessly.
For the Skaven, it was a matter of staying true to the lore while simultaneously picking out professions that encouraged collaborative gameplay in the players, making them dependent on each other while at the same time not reducing the epicness of the hero they were playing. We needed to design the environments in such a way that the Skaven could navigate on a completely different plane than the heroes, be it on rooftops or through sewer systems, while attempting to use subtle cues to guide the player through each mission.
Building Levels and Assets
We actually uploaded two dev blogs awhile back where we discussed how we created the gothic dark feel of Warhammer and designed our levels to reflect the heroes and the enemies. So if you want the more extensive description regarding how we did this, I would suggestion reading through these:
The short of it is that both of these aspects (true to the Warhammer atmosphere and strong gameplay) were two of our core pillars when creating Vermintide. We knew we could not under prioritize either of these if we were to succeed with the idea that Vermintide represented. So we made sure from the beginning to do our homework on the Warhammer world (which was easy considering that so many of us already knew so much) and go about creating assets that really felt like they belonged to this dark and gritty world.
By focusing on creating a detailed but not too cluttered environment, we were able to create a level of immersion that could easily suck the player in. In parallel with this, we tested various environmental set ups, piecing together a mission using various combinations of, for example, open areas, height shifts and choke points. By testing out the environments, we were able to find combinations that worked especially well for a specific setting.