A year ago I added support to the game for loading levels, but since then I didn't actually.. make any levels, ya know?
A whole year! That's embarrassing.
But.. what should levels look like? And let's take a quick look at some level tech improvements too.
Level Designing
Until now, my level design process consisted of plonking down random entities to fill the space:
To be honest, you'd be forgiven for thinking this game was mostly about climbing ladders - not very fun.
But what makes a level fun?
Well, in big game studios, "Level Designer" is literally a job title and they'd have a complex and nuanced answer for you.
But I don't! I just copy things that seem fun from other games and see if they're fun in this game:
It's quite chaotic! Maybe too chaotic? Things are exploding left, right and center.
Unlike Broforce, enemies are fairly relentless about chasing you down (though fortunately they can't use ladders.. yet).
Maybe it'd be more fun to have a larger space to mess around in?
I liked the vertical elements of that one, but unfortunately with a single "survive to reach the flag" objective (and the big red arrow pointing right at it) there's not much reason to explore.
So, for level three I designed a much bigger maze-like level, which also slowly floods with water1 - but I won't show it here because it would give the game away.
Which level is the most fun for you? You can try them in the playable demo below and tell me on Discord .
Fixed Atom Bodies
If you were paying attention in the level one gameplay above, you may have noticed a neato thing:
To make that work, certain types atoms in levels now "prefer" to spawn as part of a "fixed" rigid-body-physics atom-body, which is a special type of body that never moves. Then, when I detect that an atom body has been split apart, I nicely ask my rigid body physics engine to turn the smaller piece(s) into normal bodies, which lets them fall down. 2
Unfortunately, the game had assumed that each type of atom would be:
- An atom in a body that's moved by the body, OR
- An atom that's fixed in place as part of the terrain, OR
- A regular atom that can move
But now each type of atom needed to support being part of fixed terrain and part of a moving body, which meant a big rework:
Once I got it working, I realized there was a bonus upside: terrain atoms like Stone can now move too:
The Push spell is now accidentally a lot more powerful too:
And, you can now also make atom bodies out of all sorts of weird elements:
I have no idea what that might be useful for gameplay-wise, but it's kinda neat?
Playable web build
Relevant reminder of key controls:
- Summon elements with 1-4 and Q/E/R, then cast them as a spell by holding left or right click.
- If you don't summon any elements, you'll cast the (newly upgraded) Push spell.
Known issues:
- In level one, the three archers in front of the spawn next to 3x barrels get the Wet status applied despite there not being any water in sight. 3
I was pleasantly surprised that performance is still okay in this big level! It actually has ~30% more atoms actively loaded into memory (and potentially simulated) than Noita loads in at any one time, but unlike Noita, this entire game is still single-threaded.
To be fair, Noita has a lot more different types of atoms (and reactions between those atoms) than this game currently supports - but still, it's a good sign.
The heuristic of letting the smaller pieces fall down often works great, but sometimes looks silly if you e.g. have a large bridge where two small pieces are cut off from either end: the bridge will then float in mid-air.
A more robust approach might be to detect which pieces are still "attached" (next to) to some other fixed piece of terrain, and only let un-attached pieces fall down?
It's because the barrel sitting in the water moves slightly when the level starts, which causes some atoms to be turned into particles, and I did the particle implementation half a lifetime ago so it's even more bugged than most of my code: the particles will happily travel through terrain then turn into individual regular atoms again (to then wet the archers).