Compare commits

..

No commits in common. "master" and "v0.1.6" have entirely different histories.

28 changed files with 127 additions and 637 deletions

View File

@ -2,7 +2,34 @@
# Clients
Send link to `http://localhost:17072`
## Distribute `rusty-pipe`
```bash
# https://www.reddit.com/r/rust/comments/5k8uab/crosscompiling_from_ubuntu_to_windows_with_rustup/
(
echo '[target.x86_64-pc-windows-gnu]'
echo 'linker = "x86_64-w64-mingw32-gcc"'
echo 'ar = "x86_64-w64-mingw32-gcc-ar"'
) >> $HOME/.cargo/config
sudo apt install mingw-w64
rustup target add x86_64-pc-windows-gnu
echo windows
cargo build --release --target x86_64-pc-windows-gnu
rm target/x86_64-pc-windows-gnu/release/rusty-pipe-signed.exe
read -p ".crt? " CERT
osslsigncode sign \
-certs ${CERT%.crt}.crt -key ${CERT%.crt}.key \
-n Rusty-Pipe -i https://whois.home.blapointe.com \
-in target/x86_64-pc-windows-gnu/release/rusty-pipe.exe -out target/x86_64-pc-windows-gnu/release/rusty-pipe-signed.exe
echo local
cargo install --path ./
```
Each client needs 1 executable and 1 config file
The server cannot be a client because sending, listening, and typing keyboard is bad. Maybe a VM on the client as a server would work tho.
See `./config.d/rusty-pipe.d`
# Server
@ -13,3 +40,11 @@ Send link to `http://localhost:17072`
## Game Playing
Foreground
#### Discord
Yep
#### Dolphin
Yep

View File

@ -1,3 +0,0 @@
#! /bin/bash
curl -sS http://mp.home.blapointe.com:17071/gm/rpc/elect

View File

@ -1,14 +1,11 @@
export DEBUG=true
export MAIN_INTERVAL_DURATION=5ms
export RAW_UDP=17070
export PARSE_V01=true
cp ./config.d/mayhem-party.d/v01{"",-live}.yaml
export V01_CONFIG=./config.d/mayhem-party.d/v01-live.yaml
export V01_CONFIG=./config.d/mayhem-party.d/v01.yaml
export WRAP_REFRESH_ON_SIGUSR1=true
export OUTPUT_KEYBOARD=${OUTPUT_KEYBOARD:-false}
#export RAW_UDP=17070
export RAW_WS_PROXY_URL=http://localhost$(cat config.d/mayhem-party.d/v01-live.yaml | grep -A 10 feedback | grep addr: | awk '{print $NF}')
export RAW_WS=17072
export OUTPUT_KEYBOARD=false

View File

@ -1,7 +0,0 @@
#! /bin/bash
curl \
-X POST \
-i -sS \
http://mp.home.blapointe.com:17071/gm/rpc/fillNonPlayerAliases \
-d "[$(cat ./hotwords.txt | tr '\n' ' ')]"

View File

@ -1,16 +0,0 @@
mario
luigi
peach
daisy
wario
waluigi
bowser
junior
koopa
shyguy
boo
toad
toadette
minigame
win
lose

View File

@ -1,173 +0,0 @@
advance
aliasing
amiibo
analoguestick
animalcrossing
artstyle
battleroyal
bigbrainacademy
birdo
bitgenerations
bluetoad
board
boardgame
boo
boss
bowser
brainage
capcom
cardboardcutout
cardgame
category
chainchomp
characters
charlesmartinet
cpus
customrobo
destructoid
diddykong
die
donkeykong
ds
editlinks
educationalgames
eurogamer
famicomdetectiveclub
fawful
firebreath
fireemblem
fossilfighters
gamebooks
gameboyadvance
gamecube
gamemodes
gamepro
gamerevolution
gamespot
gametrailers
goldensun
goomba
gr
hammerbro
healthpoints
hepburn
homeconsole
hudsonsoft
ign
intellectuallydisabled
isbn
islandtour
items
japanese
joystiq
kamek
kidicarus
kirby
kojikondo
koopatroopa
kotaku
lcdgames
leaderboards
legosupermario
listofvideogamesfeaturingmario
luigi
mahitoyokota
mario
marioartist
marioclash
mariokart
mariopaint
marioparty
mariopartyadvance
mariopartyds
mariopartylegacy
mariopartysuperstars
mariopowertennis
mattcasamassina
mc
metroid
mii
minigame
minigames
minusworld
mother
motioncontrol
mushroomkingdom
ndcube
nintendo
nintendocomicssystem
nintendods
nintendolife
nintendoswitch
nintendowire
onlinemultiplayer
othermedia
pal
papermario
party
partyvideogame
pauline
peaches
pikmin
pilotwings
piranhaplant
pokémon
polygon
princessdaisy
princesspeach
professorelvingadd
puzzlegames
puzzleleague
racinggames
rainbowroad
raymanravingrabbids
replayvalue
ringmaster
rosalina
rumblepak
ryandavis
satoruiwata
shigerumiyamoto
shyguy
siliconera
spinyshell
splatoon
sportsgames
starfox
starrush
storycampaign
super
supermario
supermarioadventures
supermarioparty
supermariosunshine
supermarioworld
superprincesspeach
superstars
takashitezuka
techradar
thelegendarystarfy
thelegendofzelda
theverge
toad
toadette
toadsworth
touchscreen
trustedreviews
unofficialmedia
variety
videogamesportal
vivian
waluigi
wario
wars
wii
wiiparty
wiiremote
wiiu
wiiugamepad
yasuhisayamamura
yearofluigi
yōichikotabe
yoshi
yoshiakikoizumi

View File

@ -1,173 +0,0 @@
advance
aliasing
amiibo
analoguestick
animalcrossing
artstyle
battleroyal
bigbrainacademy
birdo
bitgenerations
bluetoad
board
boardgame
boo
boss
bowser
brainage
capcom
cardboardcutout
cardgame
category
chainchomp
characters
charlesmartinet
cpus
customrobo
destructoid
diddykong
die
donkeykong
ds
editlinks
educationalgames
eurogamer
famicomdetectiveclub
fawful
firebreath
fireemblem
fossilfighters
gamebooks
gameboyadvance
gamecube
gamemodes
gamepro
gamerevolution
gamespot
gametrailers
goldensun
goomba
gr
hammerbro
healthpoints
hepburn
homeconsole
hudsonsoft
ign
intellectuallydisabled
isbn
islandtour
items
japanese
joystiq
kamek
kidicarus
kirby
kojikondo
koopatroopa
kotaku
lcdgames
leaderboards
legosupermario
listofvideogamesfeaturingmario
luigi
mahitoyokota
mario
marioartist
marioclash
mariokart
mariopaint
marioparty
mariopartyadvance
mariopartyds
mariopartylegacy
mariopartysuperstars
mariopowertennis
mattcasamassina
mc
metroid
mii
minigame
minigames
minusworld
mother
motioncontrol
mushroomkingdom
ndcube
nintendo
nintendocomicssystem
nintendods
nintendolife
nintendoswitch
nintendowire
onlinemultiplayer
othermedia
pal
papermario
party
partyvideogame
pauline
peaches
pikmin
pilotwings
piranhaplant
pokémon
polygon
princessdaisy
princesspeach
professorelvingadd
puzzlegames
puzzleleague
racinggames
rainbowroad
raymanravingrabbids
replayvalue
ringmaster
rosalina
rumblepak
ryandavis
satoruiwata
shigerumiyamoto
shyguy
siliconera
spinyshell
splatoon
sportsgames
starfox
starrush
storycampaign
super
supermario
supermarioadventures
supermarioparty
supermariosunshine
supermarioworld
superprincesspeach
superstars
takashitezuka
techradar
thelegendarystarfy
thelegendofzelda
theverge
toad
toadette
toadsworth
touchscreen
trustedreviews
unofficialmedia
variety
videogamesportal
vivian
waluigi
wario
wars
wii
wiiparty
wiiremote
wiiu
wiiugamepad
yasuhisayamamura
yearofluigi
yōichikotabe
yoshi
yoshiakikoizumi

View File

@ -1,7 +0,0 @@
#! /bin/bash
set -e
bash ./shuffle.sh
bash ./fill.sh
bash ./players.sh

View File

@ -1,2 +0,0 @@
#! /bin/bash
curl -sS -i http://mp.home.blapointe.com:17071/

View File

@ -1,3 +0,0 @@
#! /bin/bash
curl -sS -i http://mp.home.blapointe.com:17071/gm/rpc/shuffle
bash ./players.sh

View File

@ -1,64 +0,0 @@
feedback:
addr: :17071
ttsurl: http://localhost:15002
users: {}
players:
- transformation:
"1": "1" # a
"2": "2" # b
"3": "3" # x
"4": "4" # y
"5": "5" # start
w: "6" # stickUp
a: "7" # stickLeft
s: "8" # stickDown
d: "9" # stickRight
e: "0" # r
q: "-" # l
- transformation:
"1": "q" # a
"2": "w" # b
"3": "e" # x
"4": "r" # y
"5": " " # "t" # start
w: "y" # stickUp
a: "u" # stickLeft
s: "i" # stickDown
d: "o" # stickRight
e: "p" # r
q: "=" # l
- transformation:
"1": "a" # a
"2": "s" # b
"3": "d" # x
"4": "f" # y
"5": " " # "g" # start
w: "h" # stickUp
a: "j" # stickLeft
s: "k" # stickDown
d: "l" # stickRight
e: ";" # r
q: "g" # l
- transformation:
"1": "z" # a
"2": "x" # b
"3": "c" # x
"4": "v" # y
"5": " " # "b" # start
w: "n" # stickUp
a: "m" # stickLeft
s: "," # stickDown
d: "." # stickRight
e: "/" # r
q: "b" # l
quiet: false
broadcast:
message: "#early access"
gm:
hotwords:
star:
call: tap
args: ['<']
coin:
call: tap
args: ['>']

View File

@ -1,64 +1,51 @@
feedback:
addr: :17071
ttsurl: http://localhost:15002
users: {}
users:
bel:
meta:
lasttsms: 1680369532165
lastlag: 1
state:
player: 2
message: ""
gm:
alias: ""
lastalias: ""
vote: ""
broadcast:
meta:
lasttsms: 0
lastlag: 0
state:
player: 0
message: "hola"
gm:
alias: ""
lastalias: ""
vote: ""
zach:
meta:
lasttsms: 1679978514018
lastlag: 0
state:
player: 0
message: ""
gm:
alias: ""
lastalias: ""
vote: ""
players:
- transformation: {}
- transformation:
"1": "1" # a
"2": "2" # b
"3": "3" # x
"4": "4" # y
"5": "5" # start
w: "6" # stickUp
a: "7" # stickLeft
s: "8" # stickDown
d: "9" # stickRight
e: "0" # r
q: "-" # l
- transformation:
"1": "q" # a
"2": "w" # b
"3": "e" # x
"4": "r" # y
"5": " " # "t" # start
w: "y" # stickUp
a: "u" # stickLeft
s: "i" # stickDown
d: "o" # stickRight
e: "p" # r
q: "=" # l
- transformation:
"1": "a" # a
"2": "s" # b
"3": "d" # x
"4": "f" # y
"5": " " # "g" # start
w: "h" # stickUp
a: "j" # stickLeft
s: "k" # stickDown
d: "l" # stickRight
e: ";" # r
q: "g" # l
- transformation:
"1": "z" # a
"2": "x" # b
"3": "c" # x
"4": "v" # y
"5": " " # "b" # start
w: "n" # stickUp
a: "m" # stickLeft
s: "," # stickDown
d: "." # stickRight
e: "/" # r
q: "b" # l
quiet: false
broadcast:
message: "#early access"
gm:
hotwords:
star:
call: tap
args: ['<']
coin:
call: tap
args: ['>']
"1": "5"
"2": "6"
"3": "7"
"4": "8"
a: f
d: h
e: "y"
q: r
s: g
w: t
quiet: true

View File

@ -22,7 +22,6 @@ streams:
b: '2'
x: '3'
y: '4'
start: '5'
output:
debug: false
engine:

View File

@ -22,7 +22,6 @@ streams:
b: '2'
x: '3'
y: '4'
start: '5'
output:
debug: false
engine:

View File

@ -22,7 +22,6 @@ streams:
b: '2'
x: '3'
y: '4'
start: '5'
output:
debug: false
engine:

View File

@ -22,7 +22,6 @@ streams:
b: '2'
x: '3'
y: '4'
start: '5'
output:
debug: false
engine:

View File

@ -22,7 +22,6 @@ streams:
b: '2'
x: '3'
y: '4'
start: '5'
output:
debug: false
engine:

View File

@ -22,7 +22,6 @@ streams:
b: '2'
x: '3'
y: '4'
start: '5'
output:
debug: false
engine:

View File

@ -22,7 +22,6 @@ streams:
b: '2'
x: '3'
y: '4'
start: '5'
output:
debug: false
engine:

View File

@ -1,16 +0,0 @@
#! /bin/bash
echo source ./package.sh
set -e
cd ${based%/*}
tar_f=${based##*/}.tar
rm -f "$tar_f"
tar -cf "$tar_f" ${based##*/}
cleanup() { rm "$tar_f"; }
trap cleanup EXIT
scp_scratch.sh "$tar_f" squeaky2x3@192.168.0.86:/volume1/video/FTP/
ssh_scratch.sh ls /volume1/video/FTP/"$tar_f"

View File

@ -1,20 +0,0 @@
#! /bin/bash
test -f ./rusty-pipe-signed.exe || exit 1
based=$(mktemp -d)
for f in ./*.yaml; do
d="$based/${f%.yaml}.d"
mkdir -p "$d"
cp "$f" "$d"/rusty-pipe.yaml
cp "$(realpath ./rusty-pipe-signed.exe)" "$d"/rusty-pipe-windows.exe
cp "$(realpath ./rusty-pipe-notwindows.bin)" "$d"/rusty-pipe-notwindows.bin
done
pushd "$based"
for d in ./*/; do
zip -r -7 ${d%/}.zip $d
rm -rf "$d"
done
popd
echo "$based"
du -sh "$based"/*

View File

@ -1 +0,0 @@
../../../rusty-pipe.d/target/release/rusty-pipe

View File

@ -1 +0,0 @@
../../../rusty-pipe.d/target/x86_64-pc-windows-gnu/release/rusty-pipe-signed.exe

@ -1 +1 @@
Subproject commit b89ed62036e8c40575f9aa996f3aad4729ca9f80
Subproject commit 9de8c9154491d46d2c86715701ff70fdc9abf406

@ -1 +1 @@
Subproject commit 31bdb6d92e40103c4be000f46ebcf5d2e2ff5920
Subproject commit 37566c4413b106d402fa61492d66bd87671d0ac5

@ -1 +1 @@
Subproject commit b4d3e5a27cbdecfd70f6601d7b51ab9a07a045f7
Subproject commit 63fe8e7e9e1c68fd3f284bac6666ae5e5f970b6b

View File

@ -36,22 +36,11 @@ log() {
}
_discord() {
(
export HOME="$PWD/mnt.d/discord.d"
if ! snap list discord; then
sudo snap install discord
fi
(
exec snap run discord
) &> /tmp/mayhem-party.discord.log &
disown
)
read -p "pls start discord"
}
_dolphin() {
echo
read -p "pls start dolphin"
echo
}
_mayhem_party() {
@ -92,39 +81,31 @@ _stt() {
| awk "{print \$NF}" \
| head -n 1
)
if ! test -f /etc/asound.conf || ! grep "$device" /etc/asound.conf; then
(
echo "pcm.pulse_monitor {"
echo " type pulse"
echo " device $device"
echo "}"
echo "ctl.pulse_monitor {"
echo " type pulse"
echo " device $device"
echo "}"
) | sudo tee /etc/asound.conf
fi
(
echo "pcm.pulse_monitor {"
echo " type pulse"
echo " device $device"
echo "}"
echo "ctl.pulse_monitor {"
echo " type pulse"
echo " device $device"
echo "}"
) | sudo tee /etc/asound.conf
if [ -n "$PACTL_RESET" ]; then
for i in $(pactl list short modules | grep secret | cut -f1); do
pactl unload-module $i
done
fi
name='my_secret_sink'
for i in 1 2; do
if ! pactl list | grep -q $name$i; then
pactl load-module module-null-sink sink_name=$name$i channels=1
pactl load-module module-remap-source master=$name$i.monitor source_name=shared-$name$i source_properties="device.description=shared-$name$i"
mic_name="$(pactl list | grep -A 100 Name:.$name$i.monitor | grep device.description.=. | head -n 1 | sed 's/.* = //' | tr -d '"') Monitor"
fi
for i in $(pactl list short modules | grep secret | cut -f1); do
pactl unload-module $i
done
name='my_secret_sink'
if ! pactl list | grep -q $name; then
pactl load-module module-null-sink sink_name=$name channels=1
pactl load-module module-remap-source master=$name.monitor source_name=shared-$name source_properties="device.description=shared-$name" #channels=1
mic_name="$(pactl list | grep -A 100 Name:.$name.monitor | grep device.description.=. | head -n 1 | sed 's/.* = //' | tr -d '"') Monitor"
fi
echo
read -p "pavucontrol to change input to $name, ok? "
echo
read -p "pavucontrol to change input to $mic_name, ok? "
log launching stt
(
export HOTWORDS=../../config.d/mayhem-party.d/v01-live.yaml@.users[].state.gm.alias,.gm.hotwords.KEYS
export HOTWORDS=../../config.d/mayhem-party.d/v01.yaml@.users[].state.gm.alias
export MIC_TIMEOUT=2
export URL=http://localhost:17071/gm/rpc/broadcastSomeoneSaidAlias?message={{hotword}}
export HEADERS=say="Eye herd {{hotword}}"

View File

@ -1,9 +1,22 @@
todo:
- instructions how to spin up with pulseaudio GUI
- rpc fill aliases UI
- rpc elect UI
- display election results
- audio pipes; can i send discord output to a pipe for stt?
- trigger a vote
- trigger an election
- trigger a shuffle for init
- assign aliases
- display vote progress
- trigger dolphin pause via query param mapping to a button that is a pause hotkey
- todo: rotation triggers
subtasks:
- ui for election start, election votes, election end stuff
- todo: stdin
subtasks:
- minigame end
- todo: voice recognition of hotwords to vote who dun it
subtasks:
- random word from cur wikipedia page
- only spectators have hotwords and must get a player to speak it
- tribunal to vote who said it
scheduled: []
done:
- todo: sticky keyboard input mode for enable/disable explicitly
@ -161,33 +174,3 @@ done:
ts: Fri Mar 31 22:45:58 MDT 2023
- todo: stt to rust-whisper and new-age hotwords.py
ts: Fri Mar 31 22:45:58 MDT 2023
- todo: audio pipes; can i send discord output to a pipe for stt?
ts: Sat Apr 1 11:20:27 MDT 2023
- todo: public gui script
ts: Sun Apr 2 11:50:42 MDT 2023
- todo: trigger a vote
ts: Sun Apr 2 11:50:42 MDT 2023
- todo: display vote progress
ts: Sun Apr 2 11:50:42 MDT 2023
- todo: audio dolhpin+tts, video dolphin to OBS to discord share
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: server gui script
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: trigger an election
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: trigger a shuffle for init
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: assign aliases
ts: Sun Apr 2 12:36:51 MDT 2023
- todo: rotation triggers
subtasks:
- ui for election start, election votes, election end stuff
- todo: stdin
subtasks:
- minigame end
- todo: voice recognition of hotwords to vote who dun it
subtasks:
- random word from cur wikipedia page
- only spectators have hotwords and must get a player to speak it
- tribunal to vote who said it
ts: Sun Apr 2 12:36:51 MDT 2023