mayhem-party/README.md

98 lines
1.9 KiB
Markdown

# mayhem-party
Think Dug's Twitch Chat Plays
* output keyboard; https://github.com/micmonay/keybd_event
* input gamepad; https://github.com/orsinium-labs/gamepad
* gcc plan b; https://github.com/go-vgo/robotgo
* gaaaaaym; https://www.mariowiki.com/Mario_Party_7
* multiplayer engine
* server; https://github.com/LizardByte/Sunshine
* client; https://moonlight-stream.org/
## DONE
* input
* random from weighted file
* buffered
* remapped from file
* output
* to keyboard
* to stderr
## Hosting a Mayhem Party
#### Requirements
1. [`rusty-pipe`](https://gogs.inhome.blapointe.com/bel/rusty-pipe)
1. [`mayhem-party`](https://gogs.inhome.blapointe.com/bel/mayhem-party)
1. [`stt`](https://gogs.inhome.blapointe.com/bel/stt)
### Clients
#### Distribute `rusty-pipe`
Each client needs 1 executable and 1 env file with a unique set of buttons
The server cannot be a client because math. Maybe a VM on the client as a server would work tho.
```bash
INPUT_NAME=gui
OUTPUT_UDP_HOST=ip
OUTPUT_UDP_PORT=port
INPUT_GUI_BUTTON_A=X
INPUT_GUI_BUTTON_B=X
INPUT_GUI_BUTTON_DOWN=X
INPUT_GUI_BUTTON_L=X
INPUT_GUI_BUTTON_LEFT=X
INPUT_GUI_BUTTON_R=X
INPUT_GUI_BUTTON_RIGHT=X
INPUT_GUI_BUTTON_UP=X
INPUT_GUI_BUTTON_X=X
INPUT_GUI_BUTTON_Y=X
```
### Server
#### `rusty-pipe`
```bash
INPUT_NAME=udp
INPUT_UDP_PORT=port
```
#### `mayhem-party`
##### Configs
Create some number of remap files at `/tmp/mayhem-party.d/*`
with keys for EVERY client config button like the following
with at least 1 effectively not mapped/empty
```yaml
A: A
B: B
C: C
```
run `cd /tmp/mayhem-party.d; ln -s ./the-unmapped-file ./live`
##### Binary
```bash
DEBUG=1
INPUT_KEYBOARD=true
INPUT_REFRESH_ON_SIGUSR=true
INPUT_REMAP_FILE=/tmp/mayhem-party.d/live
MAIN_INTERVAL_DURATION=5ms
OUTPUT_KEYBOARD=true
```
#### Game Playing
Foreground
#### `stt`
TODO pipe stt detecting relevant strings -> change the `/tmp/mayhem-party.d/live` link -> `SIGUSR1` to `mayhem-party`