98 lines
1.9 KiB
Markdown
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`
|