Skip to content

BTS Assets

ブラッドウイング edited this page Aug 13, 2021 · 1 revision

Behind the Scenes: GETTING AND MAKING BMG ASSETS

BMG, since the very first build specialized in creating high-resolution images, which made it distinct, but also hard to maintain.

Every single asset for the Brawl Stars preset was traced and recreated. Here's the process of how I work on BMG, how I get, make and define the assets.

My workflow can be categorized into 5 different steps:


🞜 STEP 1: Getting the original tiles.

The tiles are taken from the Brawl Stars APK file. The app is extracted into folders and 2 files are copied. The most important files for tracing and getting the assets are:

  • assets/sc/level.sc
  • assets/sc/level_tex.sc

Using my own tool (SCB) I extract every single image in those 2 files.

This really helps as every single tile relatively uses the same scaling. So I don't have to worry about resizing post-tracing.


🞜 STEP 2: Setting it up.

As easy as it would be to just use the PNG files from my tool, they're not vector, so they have strict limits for the size they support so that they still look good.

To make them vector I trace them using a free program called Inkscape. (I have a love-hate relationship with this program... I love how powerful it can be, but I hate how buggy it sometimes is)

To trace, I first import the image in and pick the Blocky rendering mode. This will not interpolate between the pixels of the image, which is what I want for best precision.

This is the comparison between Smooth and Blocky:

Once I have every single asset imported the next step becomes...


🞜 STEP 3: Making it vector.

I turn on the grid on Inkscape and make sure the imported image is aligned.

Then comes the really complex step of placing shapes to match the image.

For me to see the shapes more clearly, I choose a color that's the furthest away from the image's color (you know, to get the biggest contrast).

After that's done, then comes the long series of steps of using path maths (union, difference, intersection, exclusion, division) to create the final shapes that the asset will use. And, of course, coloring it all.

This tile is not the best example, but a fun fact: some tiles use the least amount of paths possible.

Since every tile in Brawl Stars is made to fit a 20px tile size, I downscale everything by 20 times so that my SVG files fit the 1px tile size.

Once I downscale and export everything as separate SVG files, then comes the next step.


🞜 STEP 4: The metadata hunt.

This is where I gather data to accompany the SVG files.

This can be easy or very hard depending on the amount and types of tiles to be added.

I use these Brawl Stars files for this step:

  • assets/csv_logic/maps.csv
  • assets/csv_logic/locations.csv
  • assets/csv_logic/location_themes.csv
  • assets/csv_logic/tiles.csv (sometimes)

To make it easier, the files are converted to JSON so that I can just easily copy the map data into BMG for testing.

Each one of these files helps me in a certain aspect:

File Use
maps.csv Easy immediate copying into options.json for rendering.
locations.csv Locating new maps and game modes that need testing.
location_themes.csv Comparing new environments to older ones and getting background color data.
tiles.csv Getting information on new tile encodings.

When the data is found and defined, then comes one of the hardest steps for me...


🞜 STEP 5: Alignment, TileLinks, Biomes, Game modes.

The alignment is mostly just me eyeballing the offset. It helps that tiles are very precise in their location in Brawl Stars, so it's not as difficult for some parts. But some tiles are not even flat, but downscaled 3D renders, which in turn makes the pixels messy and the actual alignment confusing.

The TileLinks system is old and outdated for Brawl Stars. It can take so long to add a new fence variation, because of bugs that are hard to track. Thankfully fencing only follows a few sets, which I can copy and paste, then alter to fit.

Biomes can take a bit because, even though I can compare environments thanks to location_themes.csv, it can still be pretty slow as I have to double-check if the tile type is used for the biome.

Game modes are not as time-consuming, but they have caused me some trouble a couple of times. Thankfully, with all the features added into game mode customization, I can just really quickly add a new game mode.

All of this previously was really slow to work with as I was checking both the new maps and the old ones, hoping I don't break anything previously with my changes. Thankfully with the addition of the render option, I can speed through all of this.


After all of those steps, it's just compiling (if there are any code changes) and sending it off to the world.

It can be very tiring to work on these tiles, but to be honest, it's quite satisfying to see that map recreated in vector, which is why, even when I quit playing Brawl Stars, I still work on BMG.

Though I'm not too happy with some steps of updating BMG, which is what I hope to solve with BMG 2.x, we'll see, I guess.

If you have some questions about BMG, please don't hesitate to ask me on Discord! My @ and ID are in the HOME page.

Until then, see you in the next update!