As previously promised, here is another update covering more gameplay related information. For this, we have our Senior Game Designer David Sallmann sitting down once more to explain to you how we approach weapons and shot types in the game to make weapons interesting, varied and most of all, fun!
PROTOTYPING WEAPONS -
FROM CLUNKY TO CHUNKY
THE INITIAL APPROACH
When we first started prototyping weapons, each designer would put his or her weapon concepts to paper, and one of our programmers would hard-code that weapon. This made for a slow and clunky process, as coding takes time, and when the designers wanted to test different things, this required changes to the code further slowing down the process. We could also only change certain values, but not fundamentally alter the way a specific weapon works.
This wasn’t ideal for prototyping, which is about quickly (and messily) tinkering with different concepts and checking whether they pan out in practice, how they compare to alternate approaches and how they interact with other concepts.
THE MODULAR SYSTEM
To remedy that, we overhauled the entire approach to creating weapons. Instead of coding each weapon individually, we designed and coded building blocks for the weapons that don’t do anything meaningful on their own, but can be quickly assembled and modified via scripting by the designers to create a staggering variety of weapons. Coding that system took a few days, but in the end, we saved a huge amount of time, resulting in dozens of weapons as opposed to a mere handful, and way crazier weapons to boot.
Pictured above, a Shotgun type weapon wreaking havoc in a group of goblins! Yeah!
So, how do those building blocks work? To assemble weapons, we distinguish between projectile patterns and the projectiles themselves. A pattern can contain any number of projectiles. Whenever that pattern gets triggered, all the projectiles listed under that pattern are fired. We can set the rate of fire, the angle of each individual projectile, whether that pattern is triggered by pressing the fire button or by other conditions (e.g. on impact of a specific projectile), and more.
The projectiles themselves are a bit more complex, listing properties such as speed, range, size, damage, force (for knockback, knockdown, launches etc.), as well as special properties such as being affected by gravity or bouncing off level geometry.
Pictured above, projectiles from a Designer perspective. Lots of numbers.
They also have optional conditions and consequences, like “when you hit an enemy, despawn”. Those are key to building crazy weapons, because we can use those to trigger more patterns, which can contain projectiles that trigger other patterns, and we can branch and loop those as we wish. So instead of the boring (but necessary) “despawn this projectile on a hit”, we can also do things like “spawn pattern X on a hit” or “transform into pattern Y on a hit”. We can use a range of conditions for that, be it range, time, number of bounces, or what you hit.
This allows for crazy chain reactions like a rocket that pierces enemies and triggers an explosion every time it hits, which spawns smaller rockets that rain fire on everything below. You can combine those elements in any way you wish, so if you want the aforementioned rockets to shoot shotgun shells instead, you can. If you want those shotgun shells to bounce and transform into cannon balls, you can. This was just a random example of course; not every concept is useful, meaningful or sound, and… hmm. Maybe I should prototype that.
There will be an update about Ravensdale as a setting again soon. We are planning to give you a little more insight into the world. We are working on a little surprise in that regard!
As some of you may have heard, we are having another gaming session. Just as a quick reminder, it will take place August 15th, and we invited a bunch of people to have fun with us, slugging it out in good old shooter-fun. Sarah will be raging. :D
That's it for now friends! Enjoy your day, enjoy the update and all the best!
The BFG Team