Soooo this week, I got the final level roughly half-way finished… but then something happened. I got accepted to show off Bleed 2 at an upcoming expo — something I’ve never done before! The prospect is equally exciting and terrifying.
The event is about a month away, which means I really have to alter my game plan here. Up until this point I’ve been piecing Bleed 2 together in rough, with the intention of having a very-unpolished-but-fully-playable alpha that I could playtest, improve and add to. While it might look okay in gifs, the fact is there are a LOT of basic things missing or rough around the edges, including music, sound effects, particle effects, menus, etc. There’s no way I can show it off like this.
And so, the assembly of the main campaign has been put on hold. Over the coming weeks I’ll be focusing on making the first level as complete and polished as possible. In many ways this will be good for the game, because it means a lot of refining and bug-fixing, which will positively affect the entire game as a whole. It’ll also be a test of how good I can make the first level, hopefully establishing the level of quality for the rest of the game and giving me an idea of how long it will take for me to accomplish that.
This all happened late in the week, but I got a little work started already:
I altered the sprites of enemy bullets to make their colour more clear. I’m also playing with an alternate colouring of the unreflectable yellow bullets, to further differentiate them. This is for the sake of visual clarity, and to help out people like me who are colour deficient.
I also fixed a bug with the Entity draw order. If several Entities were drawing on the same level, it would cause the sprites to flicker and fight since they didn’t know which should draw on top of the other. Now every Entity has a small random offset to their draw order, solving the issue.
That’s it for now… there will be many more changes in the weeks to come. Hopefully I can get the level together in time to show it off well! Aiiieee!!
Super Ninja Warrior Extreme is a small, simple sidescroller I made for fun with a couple friends to take a break from working on Bleed. It was released on XBLIG almost exactly three years ago today, and is the only game I’ve worked on to have a page on the Speed Demos archive (go figure!) It’s been a free bonus in a few bundles before, but has never been officially released anywhere until now. I hope it gives you a laugh if you try it out!
Quick note: this week I got the second-last level of Bleed 2 to alpha!! Yeah, it happened really fast. I had a lot of work done on it beforehand. :D
Now, on to the topic:
I’ve been to a couple PAXes and they each had multiple panels — with multiple panelists! — all about a “day in the life of an indie dev.” To me, this suggests that the average person has a rather romanticized idea of what indie development is like. I’m sure that it varies (and maybe I just need to go to more swanky indie dev parties) but I thought I’d take a moment and describe what the experience is like for me, just in case you had any fanciful notions about it.
The simple truth is there’s not that much to it. Every day I wake up, eat breakfast, sit down at my workstation here and get to it.
I’d guess that I spent 50% of my time writing code, 25% making art, 15% playtesting, and the other 10% doing miscellaneous stuff like writing blog posts or checking emails (which I often forget to do anyways, oops!) Sometimes someone sends me a troubleshooting question, or occasionally wants to do an interview or whatever, but it’s mostly just sitting here, doing work.
You can see the hardware isn’t that much either — dual monitors make work a lot easier, but other than that it’s just a mouse and keyboard. I’ve also got a high-tech notebook (with state-of-the-art lined pages!) where I brainstorm ideas and plan things out, like difficult coding tasks or ideas for boss visuals. It’s been two years, so at this point it’s nearly filled with Bleed 2.
Only two levels left to make for Bleed 2, woohoo! Hopefully they don’t take as long as that last one.
As for composing Wryn — I don’t mean trying to calm her down (I think that’s what we call a “dad joke”.) I thought I’d go behind the scenes on Wryn one more time to show how she’s made, this time in the non-visual sense. There’s a little more going on than you might expect!
As I’ve mentioned before, all objects in Bleed are something I call ‘Entities’, and all Entities have a hitbox. But if you count them up, you’ll see Wryn has five hitboxes. Whaa…?
Well, first off, Wryn needs to be able to collide with the world. So here we have her main hitbox, which tells her when she’s standing on a floor, pushing against a wall, etc. It shrinks a bit during air-dashes to let her get closer to floors and ceilings.
I’m so close to being done the third-last level of the game I can taste it! It tastes about a week or less away. So in the meantime, here’s some info about how I make Wryn do what she does in terms of visuals. Apologies to anyone who read my blog three years ago, this topic is a bit of a re-tread.
When you animate the player character in a 2D game, it’s common to store all the frames of animation inside a big sprite sheet. Quickly switching between the animation frames creates the illusion of movement — pretty simple!
It works great, but it can run into complications. For example, in the game Frequency, the player character could shoot forward, up and down — while running, jumping or standing still. For every action — like running or jumping — I needed three variations (one for shooting in each direction during each action) and it got out of hand pretty quickly.
So now I’m making Wryn, who can shoot 360 degrees around her during any action. Obviously I’m not going to make 360 variations of every animation — a change in technique is required.
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.