Building a better throw

September 30, 2020
Building a better throw

Playing the demo myself I realized that throwing stuff around is very fun, so you can expect to find a lot more items you can pick up and hurl at your enemies in the final game. However, the current control scheme also made me realize how clunky it feels to pull off perfectly timed (or angled) throws.

That's why I spent the last couple weeks redesigning how throwing works for Kevin, and the first step was to analyze what makes the same mechanic so good in other games. I choose three for direct comparison.

On the left side, in Wario Land 3, the enemies can be thrown forward or up. The throw can be charged or cancelled, but it's impossible to move while holding the charge. Enemies, however can be carried for a short while, to be able to reposition before throwing. The gameplay in this case mostly revolves around carrying the enemy to the right spot or throwing from the right elevation, because the projectile always start right above Wario's head.

In the center, in Yoshi's island, the player can walk and jump while aiming, but the aiming is automatic as the crosshair moves independently, unless locked in place using the shoulder buttons. The player can only push up to aim straight up, which comes in handy in some situations. Although the player can move, it's still impossible to turn around, because holding back will make Yoshi backpedal. Moving and and aiming gets much deeper in this game, which asks the player to throw the projectiles at a much faster pace, through small gaps or at very precise angles to bounce them on walls or on the surface of water.

On the right, in Puzzle Bobble 2 (and the rest of the series), the player is static and the whole gameplay revolves around precise shots to form clusters of 3 bubbles or more using wall bounces or glancing hits. There's no movement involved, but the controls allow the player to fine-tune the shots.

After a lot of consideration, I decided that I would need to borrow a bit of each game.

Wario's projectile scarcity fits perfectly in a metroidvania where you might need the right projectile at the right time. Super Metroid's missiles are basically just a key that unlocks every pink door in the game right away, without much effort to actually aim them. Instead, I really like the idea of placing the projectiles some rooms away from puzzles that can be solved with them, forcing the player to backtrack a little.

Yoshi's Island is fast. Frantic at times. The speed at which eggs can be hurled is deciding factor agains many bosses (watch Koopa's and Tap-Tap's battles) and that's what makes the fights fun. However, the almost endless supply of eggs makes resource management trivial, because missing a shot won't necessarily cost you a hit or the wait for another boss pattern. Moving while holding the projectile is "eggscellent" for repositioning and the quick aim option is also very useful in a pinch and I want to expand on that.

Puzzle Bobble is just the pinnacle of precision shooting with this kind of mechanic. I believe no other game has such a precise aiming with a digital input (Turrican, maybe?), even more since it also keeps the player under pressure. Replicating the pointer movement, while also allowing the user move around, won't be an easy task. It's also important to note that the above footage contains a guide showing the expected trajectory of the next ball, which is then removed in subsequent stages. I'll need to implement something similar to inform the player of the actual angle he's going to throw the projectile.

To sum up, the player will be able to throw from the ground, in midair, while running, and after turning around, which resulted in a lot of sprites to draw. Right now I've filled 3/4 of a 256x256px texture, which says a lot for a character that's just 16px tall.

Tweaking the right boolean flags was also easy, and I managed to allow the player to run, jump and turn freely while carrying a stone, albeit at a slower speed.

In the coming days I'll work on the new control scheme for this particular action. While players that favour the analog stick will probably have an easier time, my goal is to develop a deeper control system for digital inputs so that the difference between players will be minimal. Of course, I've only talked about throwing so far, without even touching the subject of the actual thrown items, which will certainly enrich the gameplay even more.