Compare commits

..

34 Commits

Author SHA1 Message Date
bel 936f1eed41 git pull 2023-04-19 18:49:52 -06:00
bel 83106a7bbc get hotwords.txt from mario party wiki 2023-04-19 18:47:39 -06:00
bel f318f276a3 git pull 2023-04-19 18:42:38 -06:00
bel e2e34c48b5 set star,coin buttons 2023-04-19 18:30:34 -06:00
bel bd1c3bebdc move star,coin to v01.yaml for mp 2023-04-19 18:25:27 -06:00
bel 57f801ba09 stt gets both aliases and gm.hotwords.keys 2023-04-19 18:24:53 -06:00
bel 8729883255 git pull 2023-04-10 18:40:59 -06:00
bel 468929384e qt tried it too 2023-04-10 16:55:07 -06:00
bel 9cf57e2a71 90ms consistent from lan and limited keydowns but eh it works 2023-04-09 12:25:45 -06:00
Bel LaPointe 290225b7f1 readme from rusty-pipe 2023-04-09 12:02:13 -06:00
Bel LaPointe 1a0b9143be mayhem-party to websockets and http over rusty-pipe 2023-04-09 12:01:40 -06:00
Bel LaPointe ac55a08796 mayhem-party config to http ui 2023-04-09 11:55:42 -06:00
Bel LaPointe 3653f286f8 wip 2023-04-06 17:25:51 -06:00
bel 5a9dcac684 git pull 2023-04-05 22:46:55 -06:00
Bel LaPointe 86bd0d851d scripts 2023-04-05 22:46:22 -06:00
bel 55aae5a55f hotwords file and more mayhem-info.sh 2023-04-05 22:30:45 -06:00
bel d559f5244f mayhem-party.sh things 2023-04-05 22:24:49 -06:00
bel df2c5cb0ad ALMOST 2023-04-05 22:09:43 -06:00
bel 53cab7e43c rename configs 2023-04-05 21:06:11 -06:00
bel 5062abdfc7 update v01.yaml for 4 players 2023-04-05 21:02:11 -06:00
bel d80b73a052 FRIENDSHIP 2023-04-05 20:49:45 -06:00
bel 5d70ac0002 upgrade 2023-04-05 20:48:39 -06:00
bel c2d2cda761 readme 2023-04-02 12:55:00 -06:00
bel 6eb6cdbd49 autostart discord with custom HOME and dont unset secret_sinks unless $PACTL_RESET=true 2023-04-02 12:54:24 -06:00
bel 70ca9d645a todo 2023-04-02 12:36:52 -06:00
bel 5fff9525e0 OK WE PASSING ISH 2023-04-02 12:35:54 -06:00
bel fd31ede89e todo 2023-04-02 11:50:43 -06:00
bel 3b9437fc9c ok so i dont need to share screen BUT i need to get audio from TTS to stream so maybe obs indeed 2023-04-02 11:49:06 -06:00
bel 78b00ac62a less sudo and 2 virtual devices 2023-04-02 11:40:10 -06:00
bel 42212e3d10 manual run reveals sharing fullscreen does NOT capture audio so i gotta be more verbose with user messages i guess 2023-04-02 10:50:56 -06:00
bel b2742b3631 git pull 2023-04-02 09:49:12 -06:00
bel cc3e3f87fc retain a static v01.yaml 2023-04-02 09:48:55 -06:00
bel 3ce34e20bb add comments and start to v01 2023-04-02 09:48:12 -06:00
bel 495861c261 oops need start button oof 2023-04-02 09:41:58 -06:00
28 changed files with 634 additions and 115 deletions

View File

@ -2,34 +2,7 @@
# Clients
## 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`
Send link to `http://localhost:17072`
# Server
@ -40,11 +13,3 @@ See `./config.d/rusty-pipe.d`
## Game Playing
Foreground
#### Discord
Yep
#### Dolphin
Yep

View File

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

View File

@ -1,11 +1,14 @@
export DEBUG=true
export MAIN_INTERVAL_DURATION=5ms
export RAW_UDP=17070
export PARSE_V01=true
export V01_CONFIG=./config.d/mayhem-party.d/v01.yaml
cp ./config.d/mayhem-party.d/v01{"",-live}.yaml
export V01_CONFIG=./config.d/mayhem-party.d/v01-live.yaml
export WRAP_REFRESH_ON_SIGUSR1=true
export OUTPUT_KEYBOARD=false
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

View File

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

View File

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

View File

@ -0,0 +1,173 @@
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

@ -0,0 +1,173 @@
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

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

View File

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

View File

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

View File

@ -0,0 +1,64 @@
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,41 +1,64 @@
feedback:
addr: :17071
ttsurl: http://localhost:15002
users:
bel:
meta:
lasttsms: 1680371007738
lastlag: 0
state:
player: 1
message: ""
gm:
alias: ""
lastalias: ""
vote: ""
zach:
meta:
lasttsms: 1679978514018
lastlag: 0
state:
player: 0
message: ""
gm:
alias: ""
lastalias: ""
vote: ""
users: {}
players:
- transformation:
"1": "5"
"2": "6"
"3": "7"
"4": "8"
a: f
d: h
e: "y"
q: r
s: g
w: t
"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: ""
message: "#early access"
gm:
hotwords:
star:
call: tap
args: ['<']
coin:
call: tap
args: ['>']

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,16 @@
#! /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

@ -0,0 +1,20 @@
#! /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

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

View File

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

View File

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

View File

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

@ -1 +1 @@
Subproject commit e864f2a9f58463b4119606f196257a40b480ac17
Subproject commit b89ed62036e8c40575f9aa996f3aad4729ca9f80

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

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

View File

@ -36,11 +36,22 @@ log() {
}
_discord() {
read -p "pls start 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
)
}
_dolphin() {
echo
read -p "pls start dolphin"
echo
}
_mayhem_party() {
@ -81,31 +92,39 @@ _stt() {
| awk "{print \$NF}" \
| head -n 1
)
(
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
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"
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
read -p "pavucontrol to change input to $mic_name, ok? "
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
done
echo
read -p "pavucontrol to change input to $name, ok? "
echo
log launching stt
(
export HOTWORDS=../../config.d/mayhem-party.d/v01.yaml@.users[].state.gm.alias
export HOTWORDS=../../config.d/mayhem-party.d/v01-live.yaml@.users[].state.gm.alias,.gm.hotwords.KEYS
export MIC_TIMEOUT=2
export URL=http://localhost:17071/gm/rpc/broadcastSomeoneSaidAlias?message={{hotword}}
export HEADERS=say="Eye herd {{hotword}}"

View File

@ -1,21 +1,9 @@
todo:
- trigger a vote
- trigger an election
- trigger a shuffle for init
- assign aliases
- display vote progress
- instructions how to spin up with pulseaudio GUI
- rpc fill aliases UI
- rpc elect UI
- display election results
- 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
@ -175,3 +163,31 @@ done:
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