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
|