site_liveq/README.md

237 lines
8.1 KiB
Markdown
Raw Permalink Normal View History

2022-12-11 14:13:42 +00:00
# LiveQ
2022-12-11 23:25:34 +00:00
A single music queue for multi-game rhythm game livestreamers.
## Benefits
- Design all live interactions around a single interface.
- Gives your viewers a number they can see it's too easy or too hard.
## Compatibility
Only the PC edition of these games:
### Current
- [osu!](https://osu.ppy.sh/)
- [Ragnaröck VR](https://www.ragnarock-vr.com/home) only custom songs
### Soon
- [Beat Saber VR](https://www.beatsaber.com/) only [custom songs](https://bsaber.com/)
- [Project OutFox](https://projectoutfox.com/) mode [dance 4k](https://outfox.wiki/user-guide/games/dance/)
- [Project OutFox](https://projectoutfox.com/) mode [kbx 4k](https://outfox.wiki/user-guide/games/kbx/)
### Maybe later
- [Synth Riders VR](https://synthridersvr.com/) only [custom songs](https://synthriderz.com/)
- [Audica VR](https://www.audicagame.com/) only [custom songs](https://bsaber.com/?s=audica)
- [Audio Trip VR](www.kinemotik.com/audiotrip/) only [custom songs](https://www.atcd.club/)
### Given up
- [Ragnaröck VR](https://www.ragnarock-vr.com/home) bult-in songs: it's all packed inside encrypted Unreal asset bundles.
- [Beat Saber VR](https://www.beatsaber.com/) bult-in songs: it's all packed inside Unity asset bundles.
### Won't even try
- [DJMAX RESPECT V](http://www.djmaxrespect.com/): Unity asset bundles (see `Compatibility` > `Given up` > `Beat Saber VR`).
- [MUSYNX](https://www.pm-studios.com/Projects/MUSYNX): Unity asset bundles (see `Compatibility` > `Given up` > `Beat Saber VR`).
- [Magyarock VR](https://store.steampowered.com/app/1962220): not yet released and looks no much different than Ragnaröck VR
- [AudioShield](https://store.steampowered.com/app/412740): boring & a "request from YouTube" queue would be better
- [Beat Hazard 2 VR](https://store.steampowered.com/app/618740): a "request from YouTube" queue would be better
- [DEEMO -Reborn-](https://store.steampowered.com/app/1282210): no custom songs
- [Dance Collider](https://store.steampowered.com/app/692690): no custom songs
- [Drums Rock](https://store.steampowered.com/app/1906020): not my kind of game
- [Hatsune Miku VR](https://store.steampowered.com/app/707300): boring
- [OnShape](https://store.steampowered.com/app/1098100): inexpressive amount of custom songs
- [Pistol Whip](https://store.steampowered.com/app/1079800): not my kind of game (boring, IMHO)
- [PowerBeatsVR](https://store.steampowered.com/app/810500): boring
- [Thumper](https://store.steampowered.com/app/356400/): no custom songs
- [Unplugged](https://store.steampowered.com/app/1623390): can't play (Quest 2 user)
2022-12-11 14:13:42 +00:00
## Intended architecture
Some games have a built-in queues, but they are not cross-game. That requires an external piece of software to do so:
### Streamer side
```
+----------+ +--------------------+
| Twitch | | Streamer's Website |
+----------+ +--------------------+
^ ^
| ......... | ..........
| : +------------+
/ : | NGINX Rev. |
/ : | Proxy |
/ : +------------+
| Internet:Server ^
. | .........:............ | ......
| Streamer's |
| PC |
| |
+-------+ +------------+
| OBS | | SSH Tunnel |
+-------+ +------------+
^ ^ |
| | |
| +-----------+ |
| | |
+------+ +------------+ | +-----------+
| Game | | Song Queue |<-+->| Browser |
+------+ | Web View | | | Admin Tab |
| +------------+ | +-----------+
v |
+-------+ +--------------+
| Game |<-----------| LiveQ Server |
| Files | | Process |
+-------+ +--------------+
```
2022-12-11 23:25:34 +00:00
In order to close the queue, just close the SSH Tunnel.
2022-12-11 14:13:42 +00:00
### Active Viewer Side
```
+----------------+ +-------------------+
| Stream App/Tab | | Queue Request Tab |
+----------------+ +-------------------+
| |
v v
+----------+ +--------------------+
| Twitch | | Streamer's Website |
+----------+ +--------------------+
```
2022-12-11 23:25:34 +00:00
Alt+Tab or equivalent.
Your view count isn't expected to decrease on mobile due to Picture in Picture.
2022-12-11 14:13:42 +00:00
### Passive Viewer
```
+----------------+
| Stream App/Tab |
+----------------+
|
v
+----------+
| Twitch |
+----------+
```
## Files not included
- config.ini
```ini
[app]
root=https://live.yourdomain.com
lang=en-us
2022-12-11 23:25:34 +00:00
title=Joe`s Playlist
description=Music queue for many rhythm games
streamer=twitch:yourlogin
maxqueue=8 # n songs as total in the queue
maxbyviewer=2 # m unplayed songs per viewer at a time
obschangekeepms=5000 # negative for an always-displaying overlay
2022-12-11 14:13:42 +00:00
[modules]
2022-12-11 23:25:34 +00:00
osuddr4k=1 # 1 means enabled and visible for selection
osumania4k=0 # 0 means disabled, but visible for selection (not validated by the backend)
osumania7k=h # h means hidden from the UI selection (not validated by the backend)
osutaiko=h
osucatch=h
osustd=h
ragnarock=h
2022-12-11 14:13:42 +00:00
[difficulties]
2022-12-11 23:25:34 +00:00
osuddr4k=0-1.4
osumania4k=1.2-2.4
osumania7k=0-1.5
osutaiko=0-1.5
osucatch=0-1.5
osustd=3.25-4.2
ragnarock=4-8.5
[localization] # Translate your UI
search=Buscar
login_with_twitch=Entrar com Twitch
logout_username=Sair de
title=Título
artist=Artista
mapper=Mapeador
queue_add=Adicionar à fila
queue_remove=Remover da fila
queue_played=Marcar como jogado
queue_unplayed=Marcar para rejogar
playqueue=Fila de jogo
queue=Fila
done=Feito
done_delete=Removido
not_authenticated=Você não entrou
done_add=Adicionado
token_expired=Seu login expirou
could_not_validate_credentials=Credenciais de login inválidas
not_found=Não encontrado
already_in_queue=Já está na fila
queue_full=Fila cheia
cannot_remove_others=Não é possível remover item de outro usuário
cannot_remove_played=Não é possível remover itens já jogados
only_streamer_can_mark_played=Apenas o streamer poded marcar como jogado
done_mark_unplayed=Marcado para rejogar
done_mark_played=Marcado como jogado
shuffle=Embaralhar
download=Baixar
preview=Ouvir prévia
stop_preview=Parar prévia
all_variants=Todas as variantes
osumania1k=osu!mania 1k single
osumania2k=osu!mania 2k single
osumania3k=osu!mania 3k single
osumania4k=osu!mania 4k single
osumania5k=osu!mania 5k single
osumania6k=osu!mania 6k single
osumania7k=osu!mania 7k single
osumania8k=osu!mania 8k single
osumania9k=osu!mania 9k single
osumania10k=osu!mania 5k double
osumania12k=osu!mania 6k double
osumania14k=osu!mania 7k double
osumania16k=osu!mania 8k double
osumania18k=osu!mania 9k double
osustd=osu!
osutaiko=osu!taiko
osucatch=osu!catch
osuddr4k=Dance Mat (osu!mania 4k)
ragnarock=Ragnaröck VR
beatsaber=Beat Saber VR
outfoxdance=dance @ Project OutFox
outfoxpump=pump @ Project OutFox
outfoxsmx=smx @ Project OutFox
outfoxtechno=techno @ Project OutFox
outfoxbemu=bemu @ Project OutFox
outfoxpomu=pomu @ Project OutFox
outfoxgddm=gddm @ Project OutFox
outfoxgdgf=gdgf @ Project OutFox
outfoxgh=gh @ Project OutFox
outfoxtaiko=taiko @ Project OutFox
outfoxbongo=bongo @ Project OutFox
outfoxpara=para @ Project OutFox
outfoxkbx=kbx @ Project OutFox
outfoxez2=ez2 @ Project OutFox
outfoxds3ddx=ds3ddx @ Project OutFox
outfoxmaniax=maniax @ Project OutFox
outfoxstepstage=stepstage @ Project OutFox
outfoxkickbox=kickbox @ Project OutFox
2022-12-11 14:13:42 +00:00
```
- config.nt.ini
```ini
[paths]
osu=D:\path\to\osu
ragnarock=D:\path\to\ragnarock\CustomSongs
```
- config.posix.ini
```ini
[paths]
osu=/path/to/osu
ragnarock=/path/to/ragnarock/CustomSongs
```
- tokens.ini
```ini
[jwt]
2022-12-11 23:25:34 +00:00
seed=00000000-0000-4000-0000-000000000000
2022-12-11 14:13:42 +00:00
[twitch]
client_id=123456789012345678901234567890
```
2022-12-11 23:25:34 +00:00
replace the client_id placeholder with the ones copied from the [Developer Console](https://dev.twitch.tv/console/apps)
generate your own seed using UUID4 or similar