Most of this week was audio work… most of this month was audio work, actually! Turns out it’s a lot of effort if you want to do it well (but totally worth it.) I’m saving a big audio blog for another day so in the meantime, here are some improvements I’ve made to Wryn’s sprites between all the audio!
In a previous blog post, I showed that Wryn is divided into pieces, allowing all her body parts to animate independently. Well, I’ve taken it a bit farther.
Now she’s got three head variations, as well as mouth sprites?? Wha…??
First up, the mouths — Wryn actually has a voice in this game! Don’t worry, no spoken dialogue (I don’t think it fits, at least) but she does have vocalizations. I find it lame when game characters speak without moving their mouths, so I added this detail to make it more cohesive and “real”.
It’s been a while since I showed a boss, so let’s do that! Here’s a new Rival machine: the Semi Core!
You can actually see him in there! I try to show him inside the Cores whenever I can in Bleed 2. It makes it clear he’s piloting them, plus he gets some more character! I’m happy with how his maniacal laugh turned out.
I’m showing some of his attacks, but since they’re all displayed in large gifs they’re after the break!
A lot of this week was spent getting Bleed 2 hooked into the Steam API. I can’t really show the behind-the-scenes of how this works, since I’m pretty sure it’s against the Steam contract, but hey! Look at the results!
Maybe not much for you to get excited about, but it pumps me up seeing the title of my game there!
I got things like achievements working, even though I don’t have any actual achievements designed or coded yet. I also implemented cross-platform cloud saving, so your save files should follow you no matter where you go or what computer you’re on! (Creepy!)
Finally I worked on leaderboards, which turned out to be a much bigger headache than I anticipated! I mean, getting them displaying here was fairly easy (I’m using the Bleed 1 leaderboards to test it for now, since there aren’t any for Bleed 2 yet…) but actually coding and laying out the menu in an effective, understandable way has proven pretty difficult!
Back to work on Bleed 2 this week! I picked the menu system off my list of things to do.
Menu systems might not be thrilling to code (or to read about!) but it’s just one of those things you gotta do if you want a finished game. There’s a surprising amount to consider, depending on the game. What’s in each menu, and how can everything be structured to lead logically to each other? How do you handle a keyboard, mouse and gamepad all being used to navigate it? If there’s more than one player, what do you do about multiple inputs? Etc etc etc. They’re fun little puzzles to solve for me, to be honest.
Design-wise, I’d already taken a first stab at a menu system a long time ago. It was functional, but it was bulky and I couldn’t fit very many items on the screen at once. It was also bloated in terms of storage, with every menu item held in a sprite sheet with two variants for ‘selected’ and ‘unselected’.
First I thinned everything down, and got navigation and highlighting and some simple animations working, too! I also straightened out the menu — it used to be angled, which I originally imaged was stylish, but it made it harder to tell which item was selected and appears messy to me now.
The bi-annual charity speedrunning marathon Awesome Games Done Quick is on this week! I’d strongly encourage anyone reading this to check it out — it’s a week of the world’s best players beating games in record time (and sometimes even racing each other head-to-head!) all in the name of raising money for the Prevent Cancer Foundation. Pretty amazing to see games and gamers having such a positive impact.
As for me, I spent this week getting organized for the new year. I used sticky notes to map out what’s left and which parts depend on others, letting me figure what order to tackle things in.
Guppy: Collects! 2 is a button-matching game where you help the adorable slug-thing Guppy collect items from around the world, which he sells online to finance his family business. I made it with a very good friend of mine a few Christmases ago, so it seems fitting to share it now! It’s mainly about competing for high scores and unlocking ridiculous costumes the more you play. You’re meant to use a controller, but I added keyboard controls for this quick-and-dirty PC port.
For anyone who played the original Bleed (and if you’re reading this, I feel the chances are high) this is the game Guppy and his cat helpers originally come from!
We’re still kinda in the holiday season, so next week’s blog will be a bit light, too — after that, though, it’ll be back to business. I hope everyone who celebrates had an amazing Christmas, and everyone else had a really enjoyable winter-time holiday!!
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!
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.
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.
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.
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):
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.
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.