Replays 2: Replay’s Revenge

Last week I said I needed a vacation, and I almost took one! Instead, I worked on something I find infinitely exciting — implementing a replay system in Bleed 2! This will be a continuation of the replays post I made a few months back. It will also be very wordy, sorry about that!

 

Implementing Replays

A quick refresher: I’m storing the user’s inputs every frame and saving them in a file. When it comes time to watch a replay, the game uses the saved inputs to reproduce the playthrough. I call each frame of input ReplayData.

I need to make sure there’s no difference between the player controlling Wryn and a replay file controlling her. So, even when you play the game your inputs are converted into ReplayData before they go to Wryn. When you watch a replay, the ReplayData comes from the recorded file instead of the player. Either way, Wryn is getting the exact same kind of information at the exact same time.

Highly technical diagram of the two ways Wryn can receive ReplayData

 

Problems

Once I re-coded everything to work this way, I started running into problems. A big one was handling menus — menus aren’t part of replay files so they aren’t controlled by ReplayData, and ReplayData isn’t created while they are active.

An example of when this is an issue: the game is paused. You select ‘return to game’ by pressing the jump button. You weren’t pressing the jump button before you paused, and since Wryn hasn’t gotten any new ReplayData since then, as far as she knows the jump button is up. As soon as you un-pause, fresh ReplayData is created telling her the jump button is now down, causing Wryn to jump or air-dash when you didn’t intend her to.

Continue reading

Post-Exhibition and Burnout

My booth was way up, behind the screens. Nintendo and Microsoft got the main arena real estate.

So last week I exhibited Bleed 2 at Bit Bazaar as part of the Canadian Videogame Awards! They converted an entire hockey arena into a show floor (how Canadian) and it made for an impressive venue. I was a lot more prepared to exhibit this time, coming armed with merch, food/water, a better build and even a better tablecloth! Clearly all the stops were pulled out.

Setting up the booth. Notice the stickers and posters! And the Shutshimi banner!!

I had a lot of fun showing off the game and meeting awesome folks (special shout out to the dude who told me he came for Bleed 2, reads the blog regularly, and even bought a poster! That was so touching, you rock!!) Most of the changes I implemented were for the better — the tutorials still aren’t getting through to everyone, but they make sense to more people, at least! The game was well-received in general, and I had a blast.

For reference, some random stats from the exhibition (better than they should be, thanks to the Shutshimi guys doing speedruns, haha):

  • Games started: 109
  • Demo cleared: 79 times
  • Average clear time: 5min30sec
  • Average deaths per run: 2.5

Continue reading

Miscellaneous Improvements

Next weekend I’ll be showing Bleed 2 at Bit Bazaar in Toronto — my second exhibition ever! I thought I’d spend the week making the game sexier and fixing some of the problems I noticed last time I exhibited.

Most importantly, I changed the tutorials to be visual and animated. I noticed a lot of people missing or misunderstanding them last time, and I think this makes things pretty clear cut.

The tutorial doesn’t cover the action in the actual level.

I beefed up the size of the pistol bullets. It’s a small change but they feel much more powerful now! Last time I exhibited, some players totally missed that the pistols were even firing, which should have clued me in that they felt piddly right there.

They look so teeny tiny in comparison. ~*^_^*~

Continue reading

Alpha!! (or, Everything Left To Do)

Oh, baby baby. I did it! The campaign is now at what I would call a legitimate alpha – everything playable from start to finish and in a highly acceptable state! After two and a half years of hard work, it feels amazing to finally reach this milestone.

…however. There’s still a long road to travel before the game is released. “What?!” I can hear you exlaim. “Just put the damn thing out already! How much more could there possibly be left to do?! YOU HACK!!” First off, settle down please. Second, I’m glad you asked! In no particular order, and with no guarantees I’ve remembered everything, here is the big list of what needs to be done before the game comes out!

Continue reading

Dynamic Difficulty

Yeah boiiiii! One boss left to go and I’m pumped as hell – with any luck, I’ll finish it by the end of next week. In the meantime, here’s a little ditty about a controversial feature – dynamic difficulty! Basically, if you die a whole bunch, the game starts taking it easy on you, until you can hopefully proceed. I should clarify that it won’t be in Bleed 2, but I thought I’d talk about it anyways – mainly how it can be achieved, and why I’m against its inclusion (in my game, at least.)

Before I get into whether it’s good or bad for my game, here’s how I’ve set up my code to support it. For every boss (and enemy, and hazard, and so on) I’ve created tables of data for all their stats (health, move speed, etc etc etc.) Every stat gets multiple entries – one for each difficulty level.

In this shot the values are all the same, but you get the idea.

Not only does it let me view the data in an understandable way, it allows for easy gradial difficulty! Normally, if I want a boss’ health, I’d say “give me the ‘health’ number for the current difficulty level.” If the player is dying a lot, it’s a simple matter of bending the number down towards the next-highest difficulty – something like “give me the ‘health’ number a certain percent between the current difficulty level, and the one below it.” At first it wouldn’t bend at all, but after a few deaths it’d start gradually going down, capping somewhere around 50% towards the previous difficulty (any farther and you may as well just play the lower setting.) You can see I’ve created a new difficulty, “Too Easy”, just so the Easy difficulty has something to bend down towards.

Continue reading

More Fun With Render Targets

Another week full of work, this time with a frustrating outcome – the work wasn’t very good. I’ve found that when exploring new ideas, you have to fail a bunch of times before you get something right – learning what doesn’t work helps you create what does. I’m making the second-last boss of the game now, and it’s sorta weird and high-concept, so this success-through-repeated-failure scenario is kind of to be expected, but that doesn’t make it any more pleasant to go through. It’ll be done next week, or I’ll eat my hat!

While I’m spinning my wheels here, I’m gonna show off some more fun with render targets! Check out this virtual-reality environment I made a while back.

Different areas of the environment pulse, scrolling grid lines fade in and out, and the entire level slowly shifts colour over time.

I’m using render targets to create and morph the tileset while the game is running, resulting in all the effects! I’ll follow with a breakdown of what I mean.

Continue reading

Arcade Mode Improvements

The final level is about halfway done! I put in a bunch of overtime this week (around 50 hours total?) so this post may be a little light. It’s about Arcade Mode, which is returning (obviously!) But I’ve got a few improvements and changes planned which I’ll discuss briefly here.

Probably the biggest change will be health pickups! Every level has a semi-secret area at the beginning that will contain them. I’m speaking future-tense because I haven’t implemented them yet, but here’s an example of what I mean.

They’re out of the way, so you can pretend they don’t exist if you prefer!

Bleed 2 has at least twice as many bosses as the original and it feels outrageous asking players to do that in one life bar. On the other hand, I’d like to reward players with mad skills and daring, so collecting health will probably come with a competitive disadvantage, like a time penalty.

Continue reading

Planning Bleed 2 (and Cutting Valentine Fights)

Progress continued this week! I’ve done some highly exact figuring, and there’s about 32 pieces of content (bosses, cutscenes, level segments, etc) that need to be produced for level seven. I’m done 11 of them so far, so we’ll say I’m a third of the way finished. Go team!

 

Ultra-Mild Spoiler Warning

Here’s the topic in general: The fights against Valentine (the main baddie) were some of the most difficult to pin down conceptually, and I’ve gone through a lot of ideas in my quest to give her quality encounters that fit her character. That means I’ve discarded plenty of crap ones, some of which I’m about to share. The fights in the final game won’t look anything like what I’m showing — even her sprites have been mostly re-done — so I don’t believe this post will count as a spoiler. But hey, here’s your warning, in case you’re sensitive.

Gifs and explanations after the break!
Continue reading

Cutscenes

I worked on the seventh level this week: touching up environment art, finalizing the tileset, bringing the first section to near-completion, and starting on the second. There’s a large amount left to do including some complicated set-pieces and all the bosses, but hey, it’s good progress so far.

Meanwhile, let’s see how in-game cutscenes are made for Bleed 2!

It’s pretty simple, actually. First, I have this collection of sprites used for cut-scenes. Some are re-created from Wryn’s sprite sheet, but others, like Wryn playing videogames, have been created specifically for the cutscenes.

I’ve programmed a simple “cutscene helper” entity that uses these sprites to mimic Wryn! It knows all her stats, like move speed, weight, height, etc, so everything is exactly the same between the two of them. Can you tell the difference!?!!??

Well now that I look at it, it’s not hard. The real Wryn has particles. :D

Continue reading