Happy new year, anyone who still checks this blog!! I’ve got some cool news to share: I’ve been working on a free update to Bleed 2, which I’ll be ready to release Soonish™ (like, maybe in a month or two?) As you can guess from the title of this post, the update is the newly-resurrected Endless Mode (something I worked on before, but ultimately scrapped because I wanted to actually finish the main game.)
“Endless Mode” is what I’m calling randomly-generated levels for Bleed 2! The number-one complaint I hear is that folks wish the game was longer, so I hope this mode can help remedy that. It also has a slightly different flavour than Bleed 2’s content — the main game is all about bosses and set-pieces, but Endless Mode is more Bleed 1-style, focusing on “traditional” levels with lots of smaller baddies and environmental hazards (there are boss fights in Endless Mode too, of course — 16 of them from Story Mode will appear!)
Just to be clear, there won’t be any new bosses added, but OG Bleed players will see some familiar enemies and hazards return, remixed and improved to fit with Bleed 2’s gameplay and presentation. Also, Endless Mode is fully playable in co-op. Yay! There are a few other fun elements about it to share, but I’ll keep those secret for now.
Creating Endless Mode was an interesting journey, and I thought I’d blog about the process for the next little while, beginning now!
To start with, a brief overview of how Endless Mode levels are created. The levels are less “procedurally generated” and more “procedurally arranged”, if that makes sense. I made about 100 unique “level chunks” — short, hand-crafted segments — that are randomly combined to make complete levels. Having each chunk be actually designed helps the levels they create also feel properly designed, as opposed to the haphazard-seeming maps and enemy placements that some procgen games feature (not necessarily bad, but something I wanted to avoid here.)
If you’re curious what a level chunk looks like in practical terms, here you go! It’s just a small, rectangular section of level:
Chunks have an entrance on the left and an exit on the right (you can see both marked with special tiles) and everything in-between is whatever you want! In code, Bleed 2 levels are stored as arrays of numbers (touched on here) — chunks are smaller versions of that, described by their own tiny number arrays. The system randomly picks a collection of chunks and lays them entrance-to-exit, creating one big, seamless level. You fuse all the chunks’ tiny number arrays into one big, final array and you’ve got yourself a level! It looks something like this…
…but chunk edges are blended together in the final level, so it doesn’t look so artificial (and you’d never be this far away!)
There are a few different categories of chunk: standard, hazard, vertical, u-turn, boss and cap. Standard chunks are filled with straightforward gameplay, while hazard chunks contain environmental hazards (more on those later.) Vertical and u-turn chunks change the direction the level flows in, which is important to keep things feeling interesting. Every level concludes with a boss fight, which takes place in a boss chunk, and all levels start and end with a cap chunk, which is a short, safe area to rest. It took a lot of fiddling to make the system build actually interesting levels using these chunk categories, but I found a solution that, I think, produces a good variety of results!
That’s the dirt simple way of explaining it! But what about enemies, or the camera, or bosses, or environments, or or or…? That’s what I plan to get into later, so check back next time!