Show HN: Rebels in the sky – Terminal game about space pirates

github.com

58 points by discoinverno 8 hours ago

Rebels in the sky is a P2P multiplayer game about crews of space pirates roaming the galaxy to play basketball against each other. It's basically a basketball managerial game with some pirate-y stuff. It's a P2P game with no central server, built on top of libp2p. Players interaction are limited to playing games against each other and trading pirates.

The game runs as a terminal application, meaning that you just need to run it from your terminal.

You can try the game over ssh without installing: `ssh frittura.org -p 3788`

My server is not very powerful and there is a limit to the number of concurrent players, so if you like it I would appreciate it if you could install it (https://github.com/ricott1/rebels-in-the-sky?tab=readme-ov-f...) and run it locally :)

Here is a trailer (not of the last version, so some little things are different): https://github.com/user-attachments/assets/aaa02f04-06db-4da...

riffraff 2 hours ago

As an Italian, some of the player names are hilarious.

The game seems really cool and honestly really impressive, but it's hard to understand what you're supposed to do at any moment.

You have a typo here https://github.com/ricott1/rebels-in-the-sky/blob/17f3e2a21e...

Also, the Italian-food sounding names are hilarious, well played :)

  • discoinverno 2 hours ago

    Thanks! I agree, I really need to write a wiki or something. The problem is that this game started as a basketball managerial game and then got completely derailed as I kept implementing whatever I thought was cool at the moment.

    I think there are mainly 3 themes to play for:

    - Basketball: assemble the best possible team. Basically try to acquire as much money as possible to hire the best free agents;

    - Money: just try to get as rich as possible, using the market and in the future your asteroids;

    - Space adventure: get the best possible spaceship (more options will be available in future releases) and have fun in the spaceshooter game you can access from your team pane (button 'Space adventure').

    I tried to combine and summarize these 3 themes by having a reputation score assigned to your team, which can increase based on all 3 conditions. In the Swarm pane there is a Top Ranking window where the best crews are listed.

x0n 24 minutes ago

So much fun! Works fine on windows terminal too! mouse, keyb, colours -- all good.

  • discoinverno 20 minutes ago

    Ahh nice to know! Never managed to test it

discoinverno 3 hours ago

In case the trailer link doesn't work, here's another: https://rebels.frittura.org/demo_v1.0.18.mp4

discoinverno an hour ago

My server can't handle all the traffic, guess it's an opportunity to show that the game doesn't need a central authority to keep working.

I created another relayer and ssh node on 85.214.130.204, you can either ssh to this machine `ssh 85.214.130.204 -p 3788` (but the relaying won't work as it tries to connect to the old server), or start your local client with the flag `rebels -i 85.214.130.204` to specify the alternative relayer node ip address.

nnx 22 minutes ago

- Space pirates?? - You know, pirates! but in space!!

kataklasm an hour ago

Those planet/satellite animations are absolutely gorgeous!

bartzokas 2 hours ago

One question out of curiosity: Which library did u use for the graphics?

dortmunddance 7 hours ago

Interesting idea to have a completely p2p game! What cross-user interaction do you have in your game?

  • discoinverno 4 hours ago

    Thanks:)

    Basically users can interact by playing basketball games against each other or by trading players. This sort of interactions are handled with something similar to a TCP handshake, since we must ensure that we end up with a consistent state at the end (e.g. players are traded consistently).

    Because of this, it is not easy to have 'real-time' interactions: for example, when challenging each other, players only agree on the initial conditions of the game, which then is simulated independently (and deterministically) on both clients.

    • dortmunddance 2 hours ago

      Cool!

      Makes me think of blockchain: it is also a tool to ensure "consistent" state changes. Have you thought of moving your game on some blockchain?

      For example, XAI is a blockchain specifically designed for games, you should check it out

      • x0n 22 minutes ago

        blockchain is too slow and completely inappropriate.

      • pizzafeelsright 2 hours ago

        this thread makes me want to build a platform

        I tend to lean toward the raft protocol vs blockchain due to storage

balbo321 7 hours ago

Just curious, how are the results of the match decided? How much player agency is there?

  • discoinverno 4 hours ago

    At the beginning of the match, a match ID is created. Randomness is then seeded from this ID and every random event is determined consistently. If you want, a game could be completely simulated just based on the initial ID.