Back to business as usual this week! Still on the third-last level unfortunately, but I guess a longer development period is the cost of better production values. One of the many things eating up development time is all the little cinematic moments in the game, some of which I worked on this week and thought I’d get into.
Here’s Valentine’s warship that we all know and love. At several points in the game you’re going to be seeing it up-close, so this week I worked on the larger, more detailed version of the warship.
This is the big version! I created most of it, but didn’t bother with parts of the ship you’d never see. Anyways, this thing is huge! If I just saved it as a single image it’d need to be a 4096×4096 texture, which just seems insanely wasteful — so I worked a little sneaky game dev magic instead.
A little bonus info: if you run Bleed with “debug” as a launch option, it’ll start in debug mode (I’m not positive I left that in the port code, but I know it’s in the PC version for sure. My apologies in advance if that’s the only place you can find it.)
Debug mode lets you see some of the things I’ve talked about on this blog, like the hitboxes of Entities and the invisible damage volumes on the player’s weapon.
Aaaand we’re back — with our big ol’ sprite sheet, ready to be turned into a boss!
But let’s rewind for a second first. Before I designed the boss’s visuals or made up the sprite sheet, I filled a page or two with brainstorming about all the ways the boss could attack. Here’s that:
Knowing how the boss attacks helps me design the visuals, but it also helps me design the boss in code. Once I know what the boss’s attacks are, I can look for common elements between them and find the most simple, logical way to code them.
When it’s time to code game elements, I start with what I call an ‘Entity’ — the most basic form of object in Bleed 2. It’s got a few simple properties like a width, a height, a weight, and so on.
Every object in Bleed 2 — whether it’s a bullet or the player or a boss or WHATEVER — is built using an Entity as its base. In this case, the Segment Slider is actually composed of several types of Entities:
-Segment Slider: The actual boss in code. It manages all the other Entities, runs the boss’s AI, and draws the background of the Segment Slider. You can’t interact with it directly but you can hurt it by damaging the Weak Point.
-Segment: Represents a single segment belonging to the Slider. It can perform very basic commands, like sliding across the boss arena, or executing a reflectable attack.
-Gun Segment: A more specific kind of segment, used for the top and bottom segments on the Slider. It’s the same as a Segment but has a cannon that can be rotated and fired.
-Weak Point: The Slider’s weak point. It mostly exists to take damage for the Slider.
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.
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!
This week I thought I’d touch on the story for Bleed 2, for anyone who’s interested!
Bleed 2 picks up about a week after the events of the first game. Wryn has ushered in a new age of heroes, and the ones she defeated are already a distant memory. However, since she defeated the greatest heroes of all time… she’s the only hero the world has left.
Far, far away, a young girl named Valentine has a dream of becoming the greatest villain of all time — and with a lone hero left defending the world, now is the perfect opportunity to strike. Rallying powerful villains and a horde of henchmen around her, she leads an assault on the world, and it’s up to Wryn to stop her!
Now, the story in the Bleed games is pretty lightweight. It’s mostly an excuse for a whole bunch of action — after all, action is the primary goal of the games. That said, I like knowing what’s going on with the world and the characters. I feel like it adds a sense of context and coheision to the game that makes it a little more satisfying to play if it’s internally consistent.
I finished the third level this week, hurrah! I’m not going to show any more of it for now… of course it’ll be displayed eventually, but keeping some surprise in the game is important to me and there’s a long long way to go.
Instead, I’d like to list three new things I’m toying around with for Bleed 2.
The first one is taunting! I think mugging for the camera fits Wryn’s character rather well, even if I’m not positive what purpose it serves. Right now taunting gives a large boost to the style meter but suffers extremely diminishing returns on consecutive taunts. I had already taunted once or twice before recording the gif, and you can see it does practically nothing at all. If nothing else I think it’s a silly fun move to have in there.
It was one hell of a week for work, but a bad week for pictures.
Most of the week was spent preparing Bleed 2 to be integrated with the Steam API. Pretty optimistic of me, since I don’t know for a fact that Bleed 2 will be released on Steam, but I’d like to think there’s a reasonable chance. Anyways, if you don’t know what “integrated with the Steam API” means, allow me to explain:
The Steam API is like a little program that lets your game talk to Steam. This allows your game to have things like leaderboards and achievements and all those other good Steam features that everyone loves. The issue is that the Steam API is written in one programming language, while Bleed 2 is being written in an other. They can’t communicate easily — you couldn’t even pass the number ’1′ between them without things getting messed up. So, you have to write a third program to translate between the two.
Alright! The new year is underway and I’ll probably be back to shorter, more concise entries for the time being.
This week I worked on the third level of the game, including touching up one of the bosses of said level! I’ve shown this picture of her a few times, but here is Red:
When I design bosses, I typically start with a unique mechanic for the boss to have. In this case, I wanted the boss’s attacks to be easy and straightforward, but for her to be fought among a constant swarm of enemies, so the player has to divide their attention and fend off attacks from all sides.
Yeeaaaah happy new year everyone! Like most people I’ve been pretty busy with the holiday season, so today’s blog post will be a little light.
Early in 2014, I got into the habit of logging of my hours worked, as well as what I accomplished each week. For fun, I stuck it in Excel and out popped a chart of my productivity in 2014!
So anyways, if anyone is reading this and I can give you a little boost for 2015, make some awesome resolutions and stick with them! It’s hard to get into good habits and you might get discouraged, but if you work at it a little bit each day you’ll keep getting better, and you might surprise yourself with what you can accomplish! Motivational speech mode: activated… Continue reading →
This is NOT a feature announcement. There is a high chance of this not being in the final game. I’m just sharing what I’m working on, and asking for input.
Got it? Good. Let’s talk about randomly generated content! Like many people, I’m intrigued by the prospect. Programming-wise, it’s a fun puzzle to try and solve and can yield really neat results!
Every now and then, I take a break from working on Bleed 2′s story mode to fiddle around with this extra little project I call Endless Mode. I don’t have much right now, but here’s the base idea: There are a number of pre-made “chunks” that get stitched together randomly into one big level.
Don’t get too excited — that is literally everything I have on Endless Mode right there. Three “standard” level chunks on the left, and two “hazard” chunks on the right. Levels are mostly made up of the standard chunks, with rarer hazard chunks sprinkled in to mix things up. The level would finish with a “boss” chunk, where you’d fight a random boss before proceeding to another area.