boxbrawl/README.md

89 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

2023-01-03 20:09:14 +00:00
# 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)
2023-01-30 22:40:30 +00:00
Multiplayer [fighting](https://en.wikipedia.org/wiki/Fighting_game) video game featuring [rollback](https://en.wikipedia.org/wiki/Netcode#Rollback) networking
2023-01-03 20:09:14 +00:00
2023-01-30 22:40:30 +00:00
This game was created for the [Fighting Jam #001](https://itch.io/jam/fight-jam-001) game jam.
2023-01-03 20:09:14 +00:00
## Play
2023-01-30 22:40:30 +00:00
### 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.
2023-01-30 23:49:05 +00:00
#### 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.
2023-01-03 20:09:14 +00:00
### 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
2023-02-01 18:52:45 +00:00
- [node punk](https://open.spotify.com/artist/15eFpWQPNRxB89PnFNWvjU?si=z-jfVwYHTxugaC-BGZiyNg) - Music
2023-01-03 20:09:14 +00:00
## Dependencies
- [ebitengine](https://github.com/hajimehoshi/ebiten) - Game engine
- [ggpo-go](https://github.com/assemblaj/ggpo) - Rollback networking library
2023-01-03 20:09:14 +00:00
- [gohan](https://code.rocketnine.space/tslocum/gohan) - Entity Component System framework