# Box Brawl [![Donate via LiberaPay](https://img.shields.io/liberapay/receives/rocketnine.space.svg?logo=liberapay)](https://liberapay.com/rocketnine.space) [![Donate via Patreon](https://img.shields.io/badge/dynamic/json?color=%23e85b46&label=Patreon&query=data.attributes.patron_count&suffix=%20patrons&url=https%3A%2F%2Fwww.patreon.com%2Fapi%2Fcampaigns%2F5252223)](https://www.patreon.com/rocketnine) Multiplayer [fighting](https://en.wikipedia.org/wiki/Fighting_game) video game featuring [rollback](https://en.wikipedia.org/wiki/Netcode#Rollback) networking This game was created for the [Fighting Jam #001](https://itch.io/jam/fight-jam-001) game jam. ## Play ### Browser [**Play in your browser**](https://rocketnine.itch.io/box-brawl) Networking is not available in the browser version. ### Download [**Download for Windows and Linux**](https://rocketnine.itch.io/box-brawl#download) To play against remote opponents, you will need to ensure UDP traffic is allowed between both of your computers. This usually involves port forwarding and ensuring firewalls are disabled on both computers. You can also use programs like [ZeroTier](https://www.zerotier.com) and [Hamachi](https://vpn.net) to create virtual networks between you and an opponent. The network will appear to the system as a local network. Because of this, most security restrictions are bypassed, and port forwarding is usually not required. Only multiplayer over a local network (whether truly local or virtual) has been tested successfully. #### Multiplayer guide You and your opponent will need to choose a port on which you will accept UDP traffic from the other person. This is referred to as your local port, which can specified when playing Box Brawl using the `--local` argument. In the following examples, user A has the IP address `1.1.1.1` and user B has the IP address `2.2.2.2`. User A will listen for a connection on port `17000`. User B will listen for a connection on port `19000`. Simply replace the example IP addresses and ports with actual IP addresses and ports, and run the command specified (depending on whether you are the host or the guest). User A (who has IP `1.1.1.1`) should run the following command: ``` boxbrawl --local 17000 --host 2.2.2.2:19000 ``` User B (who has IP `2.2.2.2`) should run the following command: ``` boxbrawl --local 19000 --connect 1.1.1.1:17000 ``` In the above commands, each user first specifies which port to listen for connections from the opponent, then specifies the IP address and port where their opponent is listening for connections. ### Compile Install the dependencies listed for [your platform](https://github.com/hajimehoshi/ebiten/blob/main/README.md#platforms), then run the following command: `go install code.rocketnine.space/tslocum/boxbrawl@latest` Run `~/go/bin/boxbrawl` to play. ## Support Please share issues and suggestions [here](https://code.rocketnine.space/tslocum/boxbrawl/issues). ## Credits - [Trevor Slocum](https://rocketnine.space) - Game design and programming - [node punk](https://open.spotify.com/artist/15eFpWQPNRxB89PnFNWvjU?si=z-jfVwYHTxugaC-BGZiyNg) - Music ## Dependencies - [ebitengine](https://github.com/hajimehoshi/ebiten) - Game engine - [ggpo-go](https://github.com/assemblaj/ggpo) - Rollback networking library - [gohan](https://code.rocketnine.space/tslocum/gohan) - Entity Component System framework