1. Brigador Killers
  2. News

Brigador Killers News

Welcome to 2024

We’re a little delayed in sending the first BK update of the year, but for good reason.

First up, four new miniatures are available for purchase from the Stellar Jockeys merchandise store: Buckmasters, Forks, Powersuits and Daves are up for sale. Further details after the jump:

https://store.steampowered.com/news/app/274500/view/3739732875058752728

Our entire range of minis and several other items have also been reduced in price for the entire month of February. If you’re interested in supporting our development efforts, consider picking up an item from our store while the sale is on.

Second, we have news about BK over on Itch.io. This doesn’t mean you won’t get development updates on BK as usual, but nothing substantial is appearing here on Steam just yet.



For the time being the comments and discussion board on itch.io are disabled. If you wish to discuss all things BK, please do so in the new dedicated Brigador Killers section of our Discord server.

Third, a bit of housekeeping. If you’re on our mailing list but haven’t been receiving newsletters lately - please check your junk mail. If you haven’t been receiving newsletters lately despite subscribing, sign up here.

We keep an archive of every monthly newsletter on our site that you can see here so any newcomers can take a look at our backlog.

Come back later this month for a more substantial development post.

A Year In Review


The past twelve months have been very busy for Stellar Jockeys on multiple fronts, so we’re going to briefly run down most of the stuff we made just for Brigador Killers alone. Before we do that…



[h2]THE RELEASE DATE[/h2]

Brigador Killers will not come to Itch.io in 2023. Due to how many other things we had going on, such as the surprisingly high demand for the Brigador pewter scale miniatures in the summer, and all the complications that come with adding new systems to Brigador Killers’ engine, we’re pushing the Itch.io release into early 2024.

One of the reasons why is from our experience with the first Brigador game. During its Early Access period and subsequent reviews in 1.0 and beyond, a very frequent criticism from players can be boiled down to “Looks cool, but what else is there to do?”. The first time that happened with Brigador in EA, it led to months of crunch in order to bring the game more in line with player expectations. Since we don’t feel like doing that a second time, we’ve spent our energies on making things that will hopefully rephrase any potential criticism of BK to “Looks cool, but there is too much to do”.

With that in mind, let’s look at some of the new things that were made in the past four quarters.

[h2]Q1: AIMING REWORK, MORALE & SUPPRESSION, CLUTS AND NEW ANIMATIONS[/h2]

One of the first “big” tasks for BK was to tackle the aiming system and we think we’re on to something with the rework. Our dev update at the end of March 2023 showed off the new lock on system. Here is footage from our YouTube channel in case you missed it.
[previewyoutube][/previewyoutube]
For this aiming rework to not feel off, we also needed to have what we call the “bloom box” which we can enable with the debug menu.



This square represents the spread of a firearm as the players aiming reticle intersects with building props. In this example the gun’s bloom box is smaller at closer targets and bigger further away. Note that having a high-spread weapon is not necessarily a bad thing when other new systems like morale and suppression are factored in, because guns (and the bullets they fire) can affect those two systems. Detailed explainers on these things will eventually be put out but the very short version is having a mean gun can intimidate enemies into doing things like hitting the ground or running away.

CLUTs, or Color Look Up Tables are screenspace shaders. That means they can change how the color looks on your screen. Rather than try to explain at length how it works, it’s easier to just show you an example of a test CLUT at work. Apologies in advance for the flashbang.



When the player gets into a vehicle, or in the above case a wheelchair, a CLUT can be applied immediately in-engine. This will allow us to give certain loadouts a particular visual flare like night vision goggles or an infrared filter.

Lastly in the first quarter of this year various animations were completed for “Dave” such as flinch and death animations.



Implementation of such animations was not without the occasional bug, however.



[h2]Q2: PIERCE & PENETRATION, SOME NEW PROPS AND KICKING THINGS INTO OTHER THINGS[/h2]

Pierce and penetration are separate systems that can overlap in a variety of ways both with each other as well as with above-mentioned morale and on-impact damage. The short version is this: pierce dictates whether bullets can “go in”; penetration dictates whether bullets can “go through”.



The easiest way to explain pierce is with a table. The first two columns of values below are example values – what matters is the third and fourth column.



So long as your bullets are strong enough to pierce through the impact resistances of NPCs or building props, you’ll be able to deal damage to those entities.

The penetration system is separate to pierce. If a bullet’s penetration value is less than or equal to the target’s penetration resistance, then the bullet is absorbed by the target entity. If a bullet’s penetration value is higher than the target’s penetration resistance, then a bullet will pass through the target entity. Again, another table:



You’ll probably have guessed that any time a bullet successfully passes through an entity, it loses some of its penetration value. To best demonstrate this, here’s a line of over 20 dummy NPCs with a cannon round going straight through all of them at about half game-speed.



The shot’s penetration value is high enough that it can pass through about half of the line. Once the cannon round terminates, it does additional damage via the subsequent explosive AOE, eventually leaving only the last six NPCs still standing who took a small amount of damage from the outer ring of the explosion. Did we mention that explosions also have pierce values?

Some new props were made in this period too.



And you could start kicking NPCs about.



[h2]Q3: DIALOG TOOLS, THE CISTERN AND OTHER ART ASSETS[/h2]

While the summer faded, BK’s all-new narrative systems were introduced to the engine. A lengthy post titled Let’s Learn About Storylets was written back in September 2023 that covers the topic at length that we encourage you to read, especially if you’re curious to the mechanics of how games like Hades delivers its story.

On the art asset front, the first version of The Cistern was shown off in our Discord server.



The Cistern will be an important location to the player throughout BK’s campaign. Visually it draws inspiration from Saitama’s storm sewer system in Japan.

We also got plenty of rocks which will be very useful in dressing up outdoor areas.



And with spooky season looming, we figured a jump scare featuring Ed’s mascot “The Hundo” was in order as well.



[h2]Q4: VEHICLE EJECTION, GIBS AND SQUIBS[/h2]

To close out the year, as of time of writing it is now possible in the BK engine to throw oneself from a vehicle in motion. For dramatic entries, of course.



Mind that you can also be thrown off a vehicle if you take too sharp a turn or too sudden an impact.



Such behavior might be a useful way to get around certain obstacles, particularly if those obstacles happen to be explosive. Speaking of things blowing up, we also got various gibs for props and NPCs…



…and blood squibs that may need to be toned down a little.



[h2]WHAT ELSE IS IN STORE?[/h2]

More 1:144 scale pewter miniatures are coming to our merch store. Four new sets of miniatures will be added: one box containing 2x Buckmasters; one box containing 2x Forks; one box containing 4x Mongooses, 2x Dorothys and 2x Pellinores; and one box of 24x Loyalist infantry aka “Daves”. They’ll get their own dedicated post when they’re actually live but here’s a glimpse of an assembled Fork and Buckmaster.



All the new blister packs get new stickers too, as a treat.



Lastly, we’ll be reducing the prices of all of our merch items for the holiday season, so keep your eyes peeled on our socials or Discord server announcements channel if you’re looking to snap up an SNC Zippo lighter from our store at a discount.

And that’s it! Thanks for sticking with us throughout the year; there’s so much more to show you in the next.

[Banner image illustration by @flyingdebrisguy]

What Planning On Paper Looks Like

The above quote is attributed to Paul Rand who was a famous graphic designer responsible for numerous corporate logotypes.

You may have already seen the allprops tour with Dave video that was posted several months ago which featured building assets from a few areas in Brigador Killers. If you haven’t seen it, watch the first two sections to get context for the rest of this post.

[previewyoutube][/previewyoutube]
Neither the video nor the post for it talked about the conceptual origins of those buildings for BK. To rectify this, we asked the artist responsible for a lot of the props in that video, Igor, to dig up some of their pencil and paper sketches for them along with penning a few thoughts behind each one. Click the images to expand them in your browser.

[h2]slide_1_hrush[/h2]

This was my first assignment on BK. The Hrush, short for "Khrushchevka", represents modest modular housing widespread in Sady districts. To make it I decided to simply appropriate the Type I-335 Apartment Block, a fairly ubiquitous design in the former USSR, and accommodate it for the game, both structurally and stylistically. It wasn't a particularly hard feat, since two adjacent cells can be believably downscaled to fit into one game tile. However, the Hrush also represents a particular shift in environmental design philosophy between Brigador and BK, a shift that will complicate things later on. Due to the doubled output resolution of sprites, we're now making most of the large buildings as sets of interconnected props, akin to the mansions from the previous game.
[h2]slide_2_hotels[/h2]

Nossian Hotels are essentially the Hrushes of downtown Mar Nosso, the design of which is heavily inspired by US hotel architecture of the 1950s-1970s, particularly that of Miami. Making them was a bit more involved, since the right balance should be struck between fancy and mundane elements – all to prepare for the eventuality of an unruly mapper overusing one particular prop style.
[h2]slide_3_offices[/h2]

Mar Nosso Office Buildings. Glass and concrete. The 80s. The original design document proposed by yours truly said Nosso should feel open and uncomfortably clean, in contrast to the cozy misery of Sady. The first and the most straightforward idea here was to explore classic cyberpunk influences of Japan and Hong Kong. It clashed with Jack’s vision of a more neoclassical downtown. A compromise was found in turn-of-the-90s postmodern architecture. As with the hotels, a proper ubiquitous set requires many mundane modernist and internationalist elements, and US 80s office building architecture came in handy here. No need to go crazy yet.
[h2]slide_4_mcmansions[/h2]
McMansions. You know ‘em, you hate ‘em. This was the moment where cracks in my psyche started to show. See, it's actually not that easy to make something as tasteless, as tacky and as stylistically inconsistent as a modern American McMansion when you have a degree in the field of architecture combined with very little experience of actually working in said field. This sheet represents one of my numerous attempts grasping at the plethora of contradictory styles and influences used by modern American architects tasked with building what are meant to be the most pretentious-looking houses in the country.
[h2]slide_5_office_postmodern[/h2]

Postmodern additions to office buildings for Mar Nosso. This is hell. A particular late capitalist kind of hell fueled by late 80s pop/rock playlists. Go on. Just make a regular facade piece and put a giant bronze vase on its roof. Make a giant ionic column, but inverted. As long as it fits the 16x16 feet footprint and sufficiently blocks sightlines at the infantry level, anything goes. There Is No Law Here by Makeup and Vanity Set starts playing as teammates try to cheer me up.
[h2]slide_6_technotop[/h2]

At this point I'm fully equipped to make products, not just assets. Remember that high topiary tile from Brigador’s suburbs/subwall_13-24 particularly liked by mappers? The one made of a combo of green wall and pieces of a Pak 40? Let's just make an actual thing out of it. So I did. No, it doesn't make any sense to encapsulate a piece of topiary into a proprietary plastic frame inspired by those trendy products I saw in the 1987/88 edition of The International Design Yearbook, but most startup ideas nowadays don’t make any sense either, so I'd say we're even.
[h2]slide_7_fabhabs[/h2]

The FabHab. Cheap modular housing for general colonial purposes. Hugh casually mentioned styrofoam. I know everything that needs to be done. The Metabolism architecture movement and the Nagakin Tower in particular serve as inspiration. All I need to do is to make a more cruel version of it. That, and a catchy name. Jack suggested FabHab. Pre-Fabricated Habitat. Perfect. Ship it.

[h2]Holiday merch store discounts coming soon[/h2]
Later in December we’ll be reducing the prices of all our items, including all the pewter miniature models, from mid-December until mid-January. If you’d like to support our development, consider picking up an SNC Zippo or a t-shirt. We'll announce via our Discord server and all the other usual places when the price drops are live.

Thanks for reading.

How gibs are generated in Brigador Killers

For this month we’re going to explain how the Brigador Killers engine handles the emission of gib sprites from entities during gameplay. In other words, this.


We’ve established in previous news posts that all you’re looking at on screen are flat 2D sprites and that BK’s systems can overlap in interesting ways to create unexpected outcomes, but we haven’t touched on the data end of these things.

First off, to save on space, both the Brigador and the BK engine store all assets in a large collection of compressed data called a pack file which has the exciting name of assets.pack. By using the game’s debug panel, we can look up these assets via the Pack file tab. At time of writing there are roughly 19 thousand assets categorized into 60+ different “resources”. Sometimes these assets are .png image files (such as the various sprite sheets for all the building props and characters) but a large portion of them are JSON files which allow us to specify the values of all sorts of various things in a human readable manner. Most of the screenshots in this post are of the game’s debug panel, which is a version of Dear Imgui that among other things allows us to look up and iterate on data values during a game’s runtime without having to make a new build of the game.


The JSON for a specific unit can be made up of several JSONs itself. For instance, let’s look at foot_loy_bd_01.json, which is the JSON file for a typical enemy infantry unit, and which turns out to be made out of a lot of JSONs.


The keen of eye will notice that, yes, infantry in Brigador Killers are all technically mechs behind the scenes - anything in assets/data/vics/units is a mech, be it the player in a carmine suit or an NPC-controlled forklift truck. This is just how the game data is organized. From this list of JSONs, we want to inspect the unit’s salvage, which is a file called salvage_foot_01.json.


Here you can see not only even more JSONs attached to this one, but also the types of values that can be assigned to its salvage “hulk”. A unit’s “hulk” is what is left over after its health has been fully depleted. Vehicles that have been destroyed will leave a wreck, which is usually just the top part of the same model but desaturated to give the appearance of burned out armor. From the above menu most of the values are set to zero, as the hulk left over is for a body instead of a chunk of metal, but for purposes of player reactivity, hulks will still have some amount of health. Tangentially, infantry units as seen from the opening GIF will go through a series of animations as they are being attacked, which is not handled in this menu - that’s part of what’s called Flinch, Suppression, Flop and Weapon Stability, which looks like this:


Getting back to the gib sprites, we look at what’s assigned for the on_damage_pyro, which is pyro_blood_mist_01.json, which is emitted by infantry-type NPCs and is a pyro-type resource.


Within that JSON we look for the gibs assigned to that pyro, which leads us to gibs_blood_mist_01.json. Explosion layers and lights are for “bigger” pyro effects. For instance, a gas station blowing up will need a fireball attached. Three layers down we have arrived at the resource that handles the attributes of blood sprites that an infantry NPC will emit on receiving damage: gibs_blood_mist_01.json


Here we can see what type of sprite has been assigned and how the animation for that sprite is set to play. We also get to decide how many blood mist sprays shoot out from the unit and at what speed, height, angle etc. These numbers are kept low for infantry gibs but, if we want to get silly, we can crank the numbers up and end up with something like this.


Again, the use case for more flamboyant gibs would be the destruction of a bigger entity like a heavy vehicle or a building prop that will have their own pyro and gib effects. Note again like in the first GIF at the top of the post an entity will do more than just shoot out a blood mist spray - just like a practical effect in movies, a “squib” also plays out to leave a blood stain on the ground. But unlike movie FX, we have to account for more situations than a carefully staged scene. Therefore one of the many other things to bear in mind with making these gib effects is that they have to have different “spreads” depending on what caused the hit. Here for instance is what happens if we put a bunch of infantry NPCs in a straight line and attempt to drive a heavy caliber round through them.


On top of the fireball explosion sprite and the bloom of light for the explosive bullet, you’ll notice that there’s some uniformity to the ground spatter. This is because the sprites will only shoot out from an entity a limited number of ways. It would be too expensive (and a waste of time) to have our artists render out every single possible angle. Instead, the hope is that the gibs are done in just enough ways that the player fantasy is maintained.

Thanks for reading, and happy halloween!

LET'S LEARN ABOUT STORYLETS


We’ve mentioned that one of the criticisms the original Brigador frequently received is along the lines of “Cool mechs, but what else is there to do?” If you haven’t been following our development updates since they began, part of what we’re doing as a response to this is adding elements of progression like acquiring unlocks within a map, rather than the previous system of spending money in a menu outside of the action. What we haven’t talked about yet is how Brigador Killers is presenting the narrative - and yes, modders will have access to these tools.

(By the way, whoever is responsible for looking after the TVTropes page for Brigador - your efforts have not gone unnoticed and we appreciate those of you who spent the time piecing together that game’s story.)



Brigador Killers will have narrative systems, including dialogue. They are heavily inspired by Emily Short’s article “Storylets, You Want Them” and Elan Ruskin’s article “Dialog” in Procedural Storytelling in Game Design (eds. Tanya X. Short, Tarn Adams), which describes the contextual dialogue systems in Left 4 Dead. The overarching system is made up of four overlapping narrative systems: storylets, predicates, the gvar (or "global variable") editor and a library of Lua functions. Note well: what we’re showing off is a work in progress, and both the systems and UI elements will change, particularly the debug panel.

[h2]WHY THESE SYSTEMS?[/h2]

As Emily Short describes in her blog, there are three attributes that make up a storylet:
  1. A piece of content
  2. A set of conditions that determine when the storylet can play
  3. A set of changes that happen to the world state after the storylet is completed.
Why do this, and not just a “normal” dialogue system? For one thing, we didn’t just want a dialogue system. This system of storylets and qualities gives us far more flexibility to describe a changing world and react to the player’s actions. On Brigador, we freed the player from some level design constraints by implementing completely destructible environments; on Brigador Killers, we want to do the same thing with our storytelling.

Storylets enable us to write reactive “chunks” that respond to the player’s decisions and behaviour. Let’s say that you have intel on a Betushka that you want to steal. In a traditional model, we’d simply set a flag saying that you unlocked the Betka and dialogue trees would have variations to account for that flag. Using a storylet model not only allows us to track whether you steal it, but also how you steal it. Rather than accounting for flags within complex trees, we can (following from Left 4 Dead’s contextual systems) write reactions for various NPCs based on the “stolen Betushka” quality assigned to the player. Qualities are like a flag, but with more semantic information. Where Left 4 Dead's characters react to the world around you in an FPS, Brigador Killers’ characters will react to the story-world of the player’s actions.

Not only that, storylets and qualities can be used to affect the game state on a local, per-map level, as well as on a global, game-wide level. They are not just a means to make NPCs interactive on a map, though we can do precisely that. Let’s say we set down two NPCs that when we interact with them, a text box will appear.


If we interact with the NPC on the left, their text box is a simple introduction. If we interact with the NPC on the right instead, we can have them ask the player if they spoke to the first person.


And as a part of that chain of dialog we can have the first NPC chime in on the conversation


And if we wanted to do the same thing for both NPCs, we can do exactly that.


A system like this is appropriate for the needs of BK because we have player reactivity in mind for the design of the game. Put another way, if presented with a choice of left or right, we want the player to be able to select either one and still be able to advance, and not be required to speak to the “correct” NPC. Indeed, the player could just as easily choose to not speak to any of these NPCs. They might ignore them entirely, or the NPCs might have been spooked into running away because of a gunfight across the map, or an explosion might have killed them before giving the player the chance to talk to them. We can factor all of this in with such a narrative system. Better still, we can continuously add new content to this system without breaking existing “chunks”.

Here’s how a basic dialogue box is created in the game. In the game’s debug panel we click the Show Dialogue Editor button in the Main tab.


This opens up another window called the node editor, which looks like this. Node graph editors have been seen elsewhere, like Unreal Engine’s visual scripting system. We use the imnodes extension to Omar Cornut’s excellent Dear IMGUI library.


When we click Add dialogue storylet, a box containing several fields appears on the node graph for us to fill out. A functional storylet would look like this:


Interacting with the NPC will prompt a text box to display “Hi I am Tester 1”. If we want an interaction to display a sequence of text boxes, the node graph editor would look like this.


So if we want the text boxes to go “Hi I am Tester 1” and then “Did you speak to Tester 2 yet?”, we add the name of that second storylet to the response field of the first one. When we do that, the interaction will produce two text boxes in sequence on screen.

Lastly, in order to assign these speakers, we need to use Tiled - the open source program we use to make maps - to give these NPCs names in their properties, because this is how the storylets system knows who is a speaker, even if multiple versions of the same NPC are populating a map.


But it’s trivial to display text on screen after hitting an interact key next to an entity. How do we make things more interesting?

[h2]COMPLEXITY THROUGH CONDITIONS[/h2]

The three other narrative systems are predicates, the gvar editor and Lua functions. You might have spied the Show Predicates Window button in an earlier screenshot. Clicking it shows us the window.

What is a predicate, you ask? A predicate is just an expression that evaluates to true or false.


What appears is a list of all existing predicates currently in the game. This window also serves as the predicate editor. Predicates can be considered the conditions that can be applied to a dialogue storylet in order for the dialog storylet to “play”. For example, if the player has done a specific action, like having talked to another NPC or completed an objective, this can be queried through a predicate.

Let’s say one NPC can have two storylets with the same predicate but with two forms: one of those forms says gvar.rescued_norman == true and the other says gvar.rescued_norman == false. This “gvar” part is a global variable which is a thing tracking the overall state or “world quality” of the game. If the player has rescued Norman, then the first storylet will play because the predicate has determined based on the gvar that Norman was rescued. If the player left Norman to his fate, then the second storylet will play.



gvar

NPC storylet text



Rescued

"Thanks for rescuing Norman”



Not Rescued

“You didn’t rescue Norman?”


Before you ask, yes, predicates can be nested within other predicates and we can make the Norman example more complicated. Maybe we have a gvar like gvar.alive_norman which is tracking whether Norman is alive or dead, not just whether the player rescued Norman or not. In this case we can have four potential predicate outcomes.



gvar

Alive

Not Alive



Rescued

"Thanks for rescuing Norman”

"At least you tried”



Not Rescued

“You didn’t rescue Norman?”

"You didn't even bother”


These gvars can be a simple true/false statement, or take on the form of a number or a string. The gvar editor within the game lets us decide what form these things take. It’s also not limited to NPCs either. This system lets us express complex situations by responding to simple tests. It’s easier to keep track of, for designers, and easier to reason about, for programmers and modders.

[h2]ONE MAP, MANY OUTCOMES[/h2]

When a level loads up, the game engine checks the gvars and mvars (or map variables) for what to load within that level. When we make maps in Tiled, we can populate that map with whatever we want it to display according to the current quality state of the game (instead of having to make multiple versions of the same map to accommodate different outcomes which would be extremely tedious for our level designers). Any entity, like a building prop or an armored vehicle containing a full squad of tac-suited mercenaries, could appear, so long as they have been placed in Tiled and have been given the necessary labeling.

Last of the four narrative systems are Lua functions. Lua functions either modify the game state or are bound to game code. They can be applied to storylets to generate an outcome of some kind. For example, when a certain enemy spawns and initiates dialogue, we can use Lua callbacks to play a particular music track or sound cue. They can pause or unpause the game, spawn units, set or complete objectives… and eventually, much more.

Note that this is not full on scripting in the sense that we’re not putting a programming language into the game. Doing that would open the door for all kinds of malicious activity. While Lua is a programming language, what we’re putting in the game is more like a lesser version of Papyrus, Bethesda’s in-house scripting language. It’s a set of predefined functions that we make available to designers and modders. We’ll go into more depth on that later.

Combined, these systems massively expand our options as designers; we’re no longer limited to hard-coded objectives and mech spawns, and we gain a huge amount of flexibility and iteration speed. The tradeoff, well—we spent most of this year on these systems. What we’re hoping, though, is that we can pass on that flexibility and massively expanded set of options to the player. Players who come in to Brigador Killers expecting the limited-by-comparison playspace of Brigador are in for a pleasant surprise. Thanks for reading.

[h2]WIN SOME MINIATURES BY PAINTING MINIATURES[/h2]

We are currently holding the Olive Drab Everything painting contest on our discord server. The theme is “Brigador” - do with that what you will - all we ask is that submitted minis be painted. Painted minis do not need to be official Stellar Jockeys pewter figurines – if you have kitbashed a Brigador vehicle of your own, or 3D printed a Touro you are eligible. Winners will get to choose one of the new sets of minis that are coming to our merch store later next month. The contest will be taking submissions until approximately 23:00 PST on Monday October 9 2023. Check the pinned message in the #olive-drab-everything channel for the full details

Lastly, our first game Brigador is currently on sale as part of the Steam SHMUP Fest. If you’d like to support our development for BK, tell a friend?

https://store.steampowered.com/app/274500/Brigador_UpArmored_Edition/