Re-Doing a Boss (Part 1)

There are now three levels left until Bleed 2 is at alpha, woohoo! It’s a milestone I can’t wait to reach.

This week I started piecing together the antepenultimate (third-last — don’t say you never learn anything on this blog) level, and was disheartened to find a lot of things needed to be re-done. I spent the week re-doing the level’s tileset (won’t show), some background images (won’t show) and started re-doing a boss (…which I will show!)


This is the Segment Slider! I call it that because it’s made up of segments, and it slides around. I’m a very creative person. (That’s probably not its final name.)

This is the first boss I made for Bleed 2! It comes from an idea I had for the original game. During the tram segment in level 5, there was gonna be this wall full of holes that slid by back-and-forth in the background. Spikes would emerge from the holes in different configurations each pass, and you’d have to dodge through them until it went away or died or whatever. It felt boring to play through and didn’t make much sense so I ditched it, but the kernel of the idea remained.

This is what you got instead -- the lead-in to the Mirror Core boss.
This is what you got instead — the lead-in to the Mirror Core boss.

The Segment Slider is that idea reborn — an opponent that slides back and forth, forcing you to dodge through it in various ways. It’s built to be practically symmetrical, so it can slide between either side of the arena and still look correct. The segments protect the big glowing ball, which is the weak point — you have to damage it while it’s attacking you.

Pretty neat, I guess. But it feels kinda limp to me. Why?
-99% of its attacks are variations on sliding from one side of the screen to the other, just in different ways. Yeah, that’s the boss’s gimmick, but this case it feels like it’s just doing the same attack over and over again. I want it to feel a little more varied.
-The boss is so tall — and the platform the player stands on so low — that 80% of the boss’s segments will never pose a threat as they slide across. This leads to a lot of boring downtime — you dodge the few segments that matter, and then… stand around waiting for the attack to finish. Not cool.
-A few months ago I made the pistols’ hitboxes much bigger, so you wouldn’t have to be so precise when shooting at enemies. That unfortunately has made shooting through the gaps in the segments to hit the weak point very difficult.

In essence, it’s a slow-paced, unvaried fight with a lot of down-time — not to mention the code was old and hard to work with (I’ve improved a lot since then.) So I’m sucking it up and re-doing it proper!

First I made a few big changes to the Slider itself. I decided the top and bottom segments would have guns, giving the boss more ways to attack (and making it reminiscent of a Gradius gunwall boss, which is always nice.) Also, the platform the player stands on was raised so that the boss’s bottom segment goes clear under it, allowing it to be positioned and fire from anywhere along the bottom of the screen.

With that out of the way, I roughed out the arena and the size of the boss’s segments.

I also brainstormed a bunch of attack patterns for the boss's new design, but I'll get into that next time.
I also brainstormed a bunch of attack patterns for the boss’s new design, but I’ll get into that next time.

I roughed in the boss’s visuals to fit the new spec, marking off key areas like the cannons and weak point to make sure the design supported them. I absolutely believe form should follow function when it comes to bosses.

I also decided in the course of the redesign that it didn't have to be exactly symmetrical -- non-symmetrical segments can change orientation by quickly going off-screen.
I also decided in the course of the redesign that it didn’t have to be symmetrical — non-symmetrical segments can change orientation by going off-screen.

When I was satisfied, I added basic details and lighting to the sprites.

I kept thinking about the boss and refining. The dark parts of a segment light up to warn when it’s about to slide across the arena, so I exposed more of those areas where I could.


And finally I added some more detailing and re-did the cannons. Ta-daa!

The final design.
The final design.

Now that I had a design, I could separate it into a sprite sheet! For anyone who doesn’t know, a sprite sheet is just a collection of images (sprites) contained inside one big image (the ‘sheet’) — in this case, all the images that make up the Slider contained in one place. Constantly switching images is hard on the GPU, so if you can fit all the relevant sprites into one picture, the GPU will be much happier drawing different parts of the same image.

The boss separated into a sprite sheet.
The boss separated into a sprite sheet.

The tighter you can pack a sprite sheet the less space and memory it takes up, so I Tetris the pieces together as well as I can. You might notice that only half the Slider’s background appears on the sprite sheet. Its background is vertically symmetrical, which means I can use same sprite twice (with one flipped vertically) to make the top and lower halves. Three of the segments are also doubled up in a similar manner. I also like to lay out the sprite sheet in a way that makes visual sense — you can see each segment in a group with it’s default look, plus sprites for when it’s about to attack (incomplete), when it’s glowing for a powerful attack, and when it can be parried.


Finally, I put the boss back together again using the images from the sprite sheet so that I could see precisely how everything needs to be positioned in code. At this point I’m ready to bring the sprite sheet into the game and start turning this into an actual, playable boss with hitboxes and attack patterns — which I’ll get into next time!

 

Before and after.
Before and after. That’s a lot of green.

I hope you enjoyed this rather long ramble and look forward to another the following week!