Skip to content

Mastriel/Bulbmin-Puffmin

Repository files navigation

Bulbmin Logo

Bulbmin makes all single-player (PC) games multiplayer! Visit the web client.

GitHub all releases License

Features

  • Allow for (practically) infinite simultaneous connections.
  • Killswitch global hotkeys to stop or pause all keyboard inputs.
  • A free-to-use server, so you don't have to port-forward and share your own IP address.
  • Performant, should not cause issues with network speed or traffic, nor RAM or CPU.
  • Low latency.
  • Only the host needs to download an application. Others can use the web client to connect.
  • Web client works on mobile! (WIP it works, you can only press buttons though, you can't hold down)

What this is not

  • Bulbmin does not provide a way to stream your desktop. You must use another platform like Discord to share your screen with participants.

Why is it named Bulbmin and Puffmin?

  • In Pikmin 2, a hidden type of Pikmin is buried in the caves of the game, named Bulbmin. These are revealed to be parasitic Pikmin that have taken control of a Bulborb as their host. Much like the web clients are 'parasites' on the host computer.
  • Puffmin is named for a very similar reason, after another form of parasitic Pikmin.

Puffmin

Puffmin is the server that acts as a mediator between the web client and the Bulbmin desktop client. As a user, you don't have to worry about this. However, you can self-host a Puffmin server that the web client and desktop client are able to connect to. (WIP, only Bulbmin Control Panel can connect to custom servers without edits to BulbminWeb)

Building and running locally

This project uses a few different technologies, such as NPM, Tauri, Rust, Svelte, and Typescript.

You will need:

  • a modern release of Rust, specifically rustc and cargo.
  • a modern release of nodejs with npm (I use v18.17.0)
  • I recommend a code editor, but you can go old fashioned and use a small magnet and directly manipulate the bits on your disk if you choose.

Firstly, clone this project into your working directory.

Then, run npm install. This will install all of the dependencies for all of the different workspaces in the project.

# Running Bulbmin Control Panel.
# Note: This may take a while on the first run, since Cargo needs to compile many dependencies.
# This *should* compile and work on Linux, however there is no MacOS support.
npm run tauri dev -w Bulbmin

# Running Bulbmin Website
npm run dev -w BulbminWeb

# Running A Puffmin Server
# Note: Using Puffmin.Dockerfile will build the Puffmin workspace into a Docker image.
npm run dev -w Puffmin

# Building all projects
npm run tauri build -w Bulbmin
npm run build -w BulbminWeb
npm run build -w Puffmin