Hi, I’m Elias, the main programmer and designer on Slap City, and in this post I’m going to briefly talk about some of the changes made to Slap City since the Alpha version. Doing the alpha was a lot of fun, we got a lot of great feedback, and I’d like to thank everyone who participated! Now, Slap City entered Early Access! Can you believe it? I can hardly believe it, it’s been in development forever and now people can buy an unfinished version of it? Boggles the mind.
One piece of recurring feedback we recieved was that it took too long to die.
When a character is struck by a strong attack, they go flying. If the attack is strong enough to kill, the character goes flying all the way to the blastzone and explodes into confetti and bones. In the alpha, this took far too long to happen, but it was not something we in the development team were even feeling, having stared ourselves blind at the speeds characters were going at to even notice that it was all too slow to really feel fun. After all, if you’re destined to be KOd, all you were doing at that point was waiting, sometimes (for what could feel like) several seconds, for your character to make its way across the screen.
The implementation that was come up with to solve this was simple; for knockback over a certain value, make the character execute their movement at a faster rate. This eats through large flight distances in a much shorter time, without changing how far you’d fly or be unable to act for. Additionally, high knockback values are now increased further by multiplying a portion of them slightly.
So now, combat was suddenly much snappier; if it was gonna happen, let it happen quickly.
However, as a cascading effect of this, if characters were hit REALLY hard, they would vanish from the screen in a couple of frames, making it sometimes a bit harder to understand what just happened. This gave me incentive to implement an idea I’d had in the back of my mind for a while – dynamic 3D smearing.
In 2D animation, smears are used to imply quick movement between two frames. A characters’ features are stretched way out of proportion from point A to point B for a single frame, giving the illusion that the character really did move there, and didn’t just teleport their face.
For Slap City, I wrote a vertex shader that can smear a 3D model along a vector, and project onto two spheres at the endpoints. This is used by the game to morph characters into bullet shape when moving too fast for standard non-stretched rendering to hold together.
In the alpha, “gatlings” meant moves that could be canceled into all other moves besides itself four frames early. Four frames might not sound much, but for combos, it made them much easier. So easy in fact, that it was hard to NOT combo. Gatlings were a thing that had been added as kind of a joke much earlier when the game had still been a prototype and were never really tested without. After some testing with them disabled combos were still very much a thing, but had to be more earned. Also knowing that it would be easier to keep track of and balance the real framedata, it was finally decided to remove them completely.
Another important change made since the Alpha is the replacement of L-canceling by Dash canceling. “Canceling” isn’t the right word for it, but it’s the cool word for it. In the Alpha, pressing defend just before landing with an aerial attack would halve the amount of landing lag. If you were playing competetively, it was something you always wanted to do, no matter what move you were doing. It felt a bit unnecessary, why not just halve all landing lag? But it’s such a neat place for an input, so I wanted it to do something. Another thing you could do in the Alpha after L-canceling was hold backwards to get a dash backwards. This was expanded to work in both directions and is now known as Dash canceling. Friction against the floor was increased for landing, so not doing it will slow you down, something you might actually want sometimes. And lastly, the input window was increased to reflect the decreased importance.
On a whim one evening, we tried removing aerial clashes. This led to a bunch of fun stuff, but why exactly? It’s because when two moves clash, the result is…nothing. Nobody takes damage, and nobody goes anywhere. Whereas a trade, then everybody takes damage, and everybody goes flying. In the end, I still decided on leaving clashes activated for one aerial per character, to inject some possible pseudo-prisoners-dilemma style mindgames into the game.
A small but significant change; all relevant aerials can be fastfalled (fastfell? fastfallen? what a verb), making combo movement ever so slightly faster.
Taken together – characters flying faster, dash canceling and fastfalling it was no wonder some of the stages needed some bigger blastzones to account. As a meta-effect, now there’s the occasional edgeguard. Even I have edgeguarded now. Happy surprises!
Oh, and we have skins now! It was a bunch of work to make it work, but we made it work. Which one is your favorite?