How to design a top down 2D bird controller


In this, my first ever devlog, I'm going to talk about the process of designing the bird movement for Bird Boxing.

The Idea

So, this game started as a silly idea written on a small notebook, full of other ridiculous game ideas. While working on a different project (A Long Way to the Top, a band manager simulator), I decided I wanted to make something completely different, small and based on a simple, single gameplay concept, and what's simpler than birds flying and punching each other?

Recently I had been playing a lot of Samurai Gunn, Nidhogg, and Smash and having a lot of fun in general with couch party games (back when having people at your house was an option), so I decided that I wanted Bird Boxing to be a fun pick-up-and-play multiplayer party game to play with friends, so the controls had to be simple, but allow for really fun and cool looking gameplay.

The first concept was actually people mounting birds and punching each other, like a more extreme version of a joust, but we ended up changing it to focus more on the bird part of Bird Boxing.

Bird Boxing concept evolution

From "Bird Boxing" to "Bird" Boxing

Examples

The first thing I did was look for examples of games where you controlled a bird, and to my surprise, there aren't many, at least in 2D. Most 2D games I found where you control a bird were infinite sidescrollers or Flappy Bird clones. So, I turned to the most similar thing to a bird I could think of, planes (at least looking from far away).

There are A LOT of 2D plane games, but most of them are either top down or side scrolling shoot em' ups, which have a very restricted unbirdlike movement. So then I turned to the other kind of 2D plane games, spaceship games, but in the style of Asteroids or Escape Velocity, where you could rotate your ship and move forward in that direction, kinda like a car but with space physics. So, this was a start.


Movement

The main (and pretty much the only) difference birds have with spaceships is that they don't have thrusters, which in gameplay terms means that having a dedicated accelerate and brake button wouldn't work. So, the bird has to move constantly and be able to steer in some way. My first test was putting a constantly moving triangle on top of a picture of this carpet in Unity with the option to steer to the sides, however, it was very hard to control and not make it feel like a missile.

The answer, like most things in the universe, was circlesI remembered all those evil circling cartoon vultures and figured that's what birds do, they kinda adjust the angle of their flight direction, constantly changing the size of their circle trajectory. That's how I ended up with:

Bird Boxing - Bird movement

You can adjust the size of the circle trajectory depending on the pressure on the joystick

The bird moves forward unless the player moves the analogue stick in some way. It worked pretty well but it was still hard to predict exactly how the bird would move, so I decided to show the trajectory. I still don't know if I should keep it visible, what do you think? Maybe make it optional?

Above: The original idea as I drew it on my phone at 4 AM

Dashing

Even though the movement was working fine, I still felt like I didn't have enough control over the immediate position of the birds, so the next important thing was how to implement a way to quickly change the movement direction, for example to avoid being hit at the last moment. I wanted to model the way birds open their wings while flying to glide and reduce their speed, and then they dive to achieve ridiculous speeds in seconds like 320 km/h (200 mph) in the case of the Peregrine Falcon. This, in videogame terms, sounds a lot like a dash.

Dashes are, in theory, pretty simple in terms of code. Just add impulse in a certain direction. My first impulse was to just instantly rotate the bird and apply the impulse forward, but I didn't like how it negated all the current bird momentum. That's when I thought about locking the current trajectory when the dash button was pressed (like starting a glide) and then applying the impulse on release (like a dive), which was pretty hard to put in words so I just drew this amazing and detailed picture on my phone.

Finally, I wanted the same kind of satisfaction you get when releasing a perfectly timed drift around a curve in Mario Kart, so I made the trajectory get bigger the longer you hold the dash button. I ended up with this:


I think it works pretty well, however, it still lacks power, but it's a work in progress. We still have to add an animation and some kind of visual effect, or even directly include the drift charge mechanic from Mario Kart or Crash Team Racing. What do you think would make the dash better?

------------------------------------------------------------------------------------

I'm not saying this is a scientifically accurate bird controller, or that it's the best bird controller, I just found the process of arriving to the controls pretty interesting and learned a little about birds, and I hope you did too.

Also, try the game if you have time and tell us what you think. We're focusing on making the base gameplay solid and could use all opinions.

Next time: SCIENTIFICALLY ACCURATE BIRD PUNCHING

If you're still reading this part, thank you so much! This was my first time writing a devlog, so any feedback is very welcome.

Claudio

Files

Bird Boxing - Build #1 v1.7z 22 MB
May 08, 2020

Get Bird Boxing

Comments

Log in with itch.io to leave a comment.

(+1)

It looks like a fun concept, I do like that feeling of perfect timing, do add a bonus, or sound effect for that. Also, I feel you should penalize somehow the overuse of the dash mechanic. Keep at it!

Thank you for your feedback!

We are going to limit the number of dashes with a cooldown, so for example you can save all of them for a quick attack, but then you have to wait to use them again.