Punchy makes its debut! 👊

Today we release v0.0.3 of our newest spin-off game in the Fish Fight series: Punchy. It’s still in the prototyping stage, but it’s already available for download (from GitHub) or web-play.

Our familiar fishy characters are learning how to throw a punch in what will be a side-scrolling beat-em-up, inspired by old classics like Little Fighter 2, River City Ransom and many more.

This build marks the beginning of support for local multiplayer with two playable characters!

We’ve added

  • new enemies and enemy variants
  • in-game controller remapping
  • a bottle item which can be picked up and thrown
  • level and camera bounds which account for two players
  • and many code improvements which will lay the foundation for new features to come.

Developed with the Bevy game engine (Rust-lang), prototyping begun in March by edgarssilva. In the past month there was a flurry of activity thanks to three additional devs helping out. Here are their own highlights for the v0.0.3 release:


The major things I’ve worked on so far were the UI and the input mapper.

The UI uses the awesome egui library with custom 9-patch style widgets. A fun feature to add was the widget adjacency map, which allowed us to say whether one button was above, below, to the left, or to the right of another button. That way, when you press a direction on your gamepad, the UI can select the next button in that direction on the screen.

The input mapper was a combination of UI work for the settings menu, and a big collaboration with @alice-i-cecile and @cleancut for adding gamepad axis support to the Leafwing Input Manager Bevy plugin. Now we can support inputs from gamepad joysticks, DPads, and the keyboard without having to handle them individually in the character controller. And because we contributed to the Leafwing Input Manager, other people will be able to use the new features in their own Bevy games!


Basic camera work; it’s now activated by the rightmost player push, and limited by the leftmost one, in the style of conventional beat ’em ups; previously, the camera would just follow the movement of the first player. In the near future, conditional camera locking will be implenented (e.g. bosses, enemy waves etc.).

Added audio base support, with some effects and music. This has been implemented by conventionally choosing the Bevy Kira Audio plugin, which makes audio management simple (although it’s currently doesn’t support fade out).

Investigated slowness of build, and ultimately removed any optimization for debug builds, since building the project, even incrementally, was causing a considerable strain on slower setups (e.g. laptops).


A feature I worked on over the past release cycle lays the groundwork for future attack and combo system work which which will be tracked here. I reworked attacks to align with a design commonly used in 2d Fighting Games and 2.5d Beatem-ups.

This design is centered around attacks which are split into Startup frames, in which the animation of an attack begins to play, Active frames, where an active collider called a Hitbox is spawned and Recovery frames, in which the Hitbox is removed and the attack animation finishes playing. Having these three stages of attack and defined Hitboxes will allow us to easily make granular design decisions about the way attacks interact with each other, and when characters can be interrupted in an attack or attack string.

Upcoming follow up work to this will be to move these attack specific properties to the YAML fighter definitions which will allow for making quick changes to characters attacks, and eventually will be used to specialize character and weapon specific attacks.

Coming up in v0.0.4 (probably):

  • Big Bass boss MVP
  • Improved AI
  • Melee weapons
  • Basic scripting
  • Music

Stay fishy! 🐠

Leave a comment

Log in with itch.io to leave a comment.