# 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`