Designing Co-Op

Finished the sixth level this week, awwwright. Just one more to go! Although, this is the one level where I don’t have as much work pre-done – it wasn’t at an “alpha” state like the others. So, it’ll probably take a bit longer to put together, but hopefully not too long. Most bosses and environments are roughed in, at least.

This week I thought I’d detail some things to consider when implementing co-op!

Enemies

In Bleed 2 there are two versions of every enemy: purple (reflectable) and yellow (unreflectable.) I think it’s important the sprites indicate their colour before they attack — it just seems fair. On easier settings enemies are mostly purple, with the ratio of yellow increasing with the difficulty. In co-op, there’s a purple and a yellow player, so it has to be an even mix regardless of difficulty.

Maybe hard to tell, but the second enemy is yellow in co-op.

Bosses

Similarly: on lower difficulties bosses have a high chance of using purple attacks, and the chance goes down as the difficulty goes up. In addition to that, the bosses have increased health to compensate for the potentially doubled player damage – boss health isn’t doubled though, right now it’s only increased by 25%. I don’t want it to be a slog, but I don’t want it to be a cakewalk.

Player Targeting

Enemies and bosses also need tweaks to their AI to accomodate the extra player. All baddies have a “player target” and will focus on attacking that character. Watching people play co-op so far, it seems really frustrating when enemies target a player that can’t reflect their shots. So, enemies generally target the player matching their colour, but they can change focus if the target runs away or the other player does more damage, that kind of thing.

Continue reading

Endless Mode’s End…?

Bad news bears: my computer died! I make daily off-site backups (something I’d recommend to any dev) so Bleed 2 wasn’t destroyed — phew. Still, a frustrating amount of time was spent resurrecting my computer and restoring files, so I didn’t manage to finish the sixth level. Next week for sure!

In the meantime: an update on Endless Mode, and why it may fall by the wayside. Really uplifting blog this week, I know! I gave Endless Mode a few months of work after pondering it in December, and I thought I’d show how far it came and discuss some of its issues.

For all who don’t know, Endless Mode is me jumping on the randomly-generated bandwagon for Bleed 2. I created a bunch of bite-sized level chunks to be randomly stitched together into full maps. In December I had five chunks, and now I’ve raised the count to thirty.

Some of the created chunks!

I tried to design the chunks with variety in mind: mixing up the enemies, hazards, ceiling heights, visual elements, direction they lead, etc etc etc. Mathematically, having thirty chunks makes for a very high number of combinations — over a trillion, in fact! Wowie zowie, gee whiz!

A sample of some of the levels that are created.

Continue reading

Storytelling

This week was more level six work! The end is within sight, and I hope to finish it next week. Now without further ado, let’s talk a bit about storytelling!

One bit of polish I’m bringing to Bleed 2 is that the whole game is designed as a seamless experience; every encounter leads directly and logically to the next with almost no cut-aways, time skips or fades to black. I’m hoping for it to come across as one giant, epic mission — especially in Arcade Mode! — and in general think it lends gravity and context to what you’re accomplishing.

So for example, when you beat the Mirror Core at the end of level one, there’s a little cutscene that plays to transition you to the next level.

Same goes for all levels, and all the markedly different sections within levels! Transitions are as quick as possible without being jarring, and don’t take control away from you — the only ones to sometimes violate these rules are the end-of-level cutscenes, which I’m showing here (go figure.)

Even still, they’re around 5sec, tops.

Mostly this is me going that little bit extra, trying to elevate Bleed 2 as much as I can, but in general it’s an attempt to improve how I tell stories in my games. Ever since my first game, Frequency (which had a loooot of action-murdering talking), it’s something I’ve tried to work on.

Continue reading

Replays

I worked on the sixth level this week, and got a surprising amount done — one or two weeks more at this rate and I should be on to the seventh level! Instead of showing that, I’m giving a huge ramble about implementing a replay system.

TL;DR

Bleed 2 might have replays, but it might not because they’re hard.

 

The Long Version

I think it’d be really cool if arcade mode runs got recorded and uploaded with your leaderboard entries. You could show off your moves, compare your play with your friends, or learn from high-level runs!

It’s hard to justify spending a lot of time on this, since 1: I’m not sure it’s a feature that really sells people or gets used much, and 2: it’s going to be difficult to implement — but that hasn’t stopped it from eating up a lot of my mental processes, because it’s such a fascinating puzzle to try to solve. I’ve done a bunch of research and planning on it, and here’s what I’ve got so far.

If replays were to be a thing, it would be the game recording your inputs every frame and saving them in a file. When it came time to play back the replay, it would run through the inputs stored in the file, essentially using them to play itself.

This presents two major hurdles, at least that I can see so far: the game would have to play the same way every time (to give the replays consistent results) and the input files would have to be kept as small as possible to avoid exploding peoples’ hard drives and internets.

Continue reading

Mirror Core Mk II

This week I started on the sixth level! I probably won’t talk about the sixth or seventh levels that much, because I’d like to leave some surprise when you finally play the game. Not that anyone plays Bleed for the story, but knowing everything that’s coming would kill some of my buzz, at least.

So in light of that, today I’ll spoil something else from earlier in the game! The Rival character is coming back, making his reappearance at the end of level one in a souped-up Mirror Core.

The fight has seen some big changes over the years. It takes place while racing through a tunnel, and originally the Mirror Core smashed through gates, creating holes for you to dodge through.

Continue reading

Optimization

The fifth level is finally finished!!

Man it feels good to have that one behind me. It only took five friggin’ weeks to get it up to snuff. Once it was done, I celebrated by just playing MGS for a few days, because I’m a hopeless fanboy and I needed a break. But you’re not here to read about me playing MGS, so let’s talk a little about optimization.

There’s one area of the fifth level that can have a loooot of baddies on screen — like, 100 at once if you let things get out of hand. Enemies don’t usually collide with each other, so normally it wouldn’t be worth mentioning, but these enemies get in each other’s way and so they all have to collision-detect each other, which can get ugly fast.

If you didn’t read last week’s blog: it takes 4 calculations to see if two entities touch. If you add up the calculations of 100 entities checking each other, it’s something around 40,000 calculations (every 1/60th of a second!) and that can really slow a machine down. That’s when optimization is needed!

Continue reading

Collision Detection For Dummiez

The fifth level is almost done, gah!! It’ll be finished by next week, but right now I’m stuck re-doing one last boss. I swear I’m not just re-doing every boss over and over — I did three this week that only needed minor touch-ups and difficulty balancing — but sometimes I come back to my old work and can’t imagine what I was thinking. This boss is definitely one of those, and needs to be totally redone. I still like the art and animations, at least.

 

Without anything more meaningful to share, I thought I’d do an article that simply explains collision detection! If technical stuff puts you to sleep (or you’re already familiar with the topic, which is equally likely) you might wanna just stop reading here. I warned you!!

 

Remember this? Everything is an entity!

So in Bleed! Anything you can interact with is called an ‘entity’, and all entities have a width, a height, and a center point. Using these values, you can find the edges of a rectangular area called a ‘hitbox’. The hitboxes let entities know when they overlap (or ‘collide’) with each other.

Continue reading

Controlling Chaos

The fifth level is almost done! All that’s left is the bosses, which I started fixing up near the end of the week. One of them is our good old pal the Segment Slider, who I re-worked yet again. I’ll get into that, as well as the controlled randomness in Bleed 2.

 

First, the Slider: I don’t know what I was thinking, but when I last re-worked it I gave it a bunch of attacks that really sucked. They took a long time to perform and didn’t give you any opportunity to damage the Slider, so it was just… dead space in the fight.

Like, look at this. Booorrriiinnng.

I re-worked them all (of course I did!) Now every attack happens quickly and gives you a chance to damage the Slider if you’re good enough!

The player has a more active role in the fight!

 

So that’s nice, but here’s where things get ranty (and random.) The Slider has a number of actions available to it, and at the end of each action it randomly selects a new one. If it was as simple as that, though, it could lead to some really annoying boss fights, since it’s fairly common for the AI to randomly select the same action a whole bunch of times in a row.

Continue reading

Audio

Sadly no visuals this week, as I spent my time working on things with no immediate benefit — things that will make Bleed 2 awesome in the future. Namely, preparing a bunch of documents and references for audio folks that I hope to collaborate with!

In my experience, even when you really suck at something, if you keep trying at it long enough you’ll eventually get a halfway-decent result — and that’s how I’d describe the development process for Bleed’s music. I’m proud of what I accomplished, and I think it had a certain charm, but it also took me two weeks just to write one song I was happy with, and in the end it’s not like they’re super-duper-fantastic. So while I could do audio again, at this point I’ll be holding the game back.

So! In the interest of quality, and time, and giving Bleed 2 the best chance I can at being really awesome, I’m talking to a musician and a sfx artist, both of who I’m really excited to work with. I obviously can’t name names right now, but if things pan out it’s gonna be freakin’ awesome. Like, if you’re into game audio, you’re probably in love with them already. Even if you’re totally oblivious, your ears will soil themselves in delight when you hear their work. I’m really pumped at the prospect of having their fresh perspective and face-melting audio in the game!

Over ‘n’ out!

Game Dev Magic

Got more of level 5 done this week! The fifth level is one of the more complex ones, so it’s gonna take another week or two unfortunately. One source of the complexity is all the little set-pieces, like this tram scene for example:

You board the tram, and it takes you down an infinitely long tunnel. I thought I’d show how something like that is accomplished — and it’s not by just making a really, really long tunnel. Instead you use a little game dev magic!

The first thing to note is that even though it looks like it, the scene isn’t composed entirely of tiles. In the tile editor, it looks like this.

But where is the tunnel…?!

Most of the tunnel isn’t even part of the world! It’s just designed to look that way with large, repeating textures layered over each other in the background.

Continue reading