You are viewing a potentially older version of this package. View all versions.
Inkslinger-PlayerRadio-0.2.2 icon

PlayerRadio

Every player gets their own radio playing their own mp3/wav/ogg music from their character in 3D. Everyone hears everyone's radio; missing songs are streamed. Local volumes. Works solo. Others need the mod to hear you.

Date uploaded 2 weeks ago
Version 0.2.2
Download link Inkslinger-PlayerRadio-0.2.2.zip
Downloads 70
Dependency string Inkslinger-PlayerRadio-0.2.2

This mod requires the following mods to function

BepInEx-BepInExPack_PEAK-5.4.75301 icon
BepInEx-BepInExPack_PEAK

BepInEx pack for PEAK. Preconfigured and ready to use.

Preferred version: 5.4.75301

README

Player Radio

Every player gets their own radio. Drop your own music in a folder, press F5, and it plays from your character in 3D. Friends hear it get louder as they climb up to you and fade out as they walk away. Their radios play their music the same way, and you hear them all.

Features

  • Your own music: .mp3, .wav and .ogg files from your Music folder (subfolders too).
  • Your own radio: it plays only your songs, and only you can play/pause, skip or go back. Everyone else controls their own radio.
  • Hear everyone in 3D: every player's radio plays from their character. Several radios can play at once, and everyone hears the same song at the same moment. Players who join late pick up every radio where it is.
  • Songs are shared automatically: if you don't have the song someone is playing, it's streamed to you over the game's connection, checked, and cached so it only downloads once.
  • Your volumes are yours: change how loud your radio is for you, how loud everyone else's is, or mute other radios. None of this changes what other players hear.
  • Game music fades out while a radio is playing near you and comes back afterwards. Ambience and sound effects are not affected.
  • Death: a dead player's radio keeps playing where they fell until they're revived or leave.
  • Works solo and offline.
  • Small overlay with your song, time, downloads, radios playing nearby and the keys. Looking at a player whose radio is on shows [Radio] after their name.

Controls

Key Action
F5 Play / pause your radio
F6 Previous song (restarts the song if more than 3 s in)
F7 Next song
F8 Mute / unmute other players' radios (only for you)
F9 / F10 Your radio's volume down / up (only for you)
F4 Open your Music folder (works in menus too)

All keys can be changed in BepInEx/config/com.inkslinger.playerradio.cfg using Unity Input System paths, for example <Keyboard>/f5, <Keyboard>/numpad5 or <Mouse>/forwardButton. The log warns you if one of your keys clashes with a game binding.

Adding music

The easiest way: start the game and press F4. Your Music folder opens in File Explorer. Copy your songs in; they're picked up within about 10 seconds, no restart needed.

The folder is:

<profile folder>/BepInEx/config/PlayerRadio/Music
  • r2modman / Thunderstore Mod Manager: Settings → Browse profile folder, then open BepInEx/config/PlayerRadio/Music.
  • Gale: open your profile's folder from Gale, then BepInEx/config/PlayerRadio/Music.
  • Manual install: PEAK/BepInEx/config/PlayerRadio/Music.

The folder is created on first launch with a HOW TO ADD MUSIC.txt inside. Subfolders work. Only .mp3, .wav and .ogg files are used. You can point somewhere else with the MusicFolder setting.

Tip: mod managers may include the config folder when you export or share a profile, so a large Music folder can make the export big.

Multiplayer

  • Everyone who wants to hear radios needs Player Radio, and everyone should be on the same 0.2.x version. Players without the mod hear nothing and aren't affected. 0.1.x players are ignored.
  • Songs stream to other players who don't have them, over the game's own connection. Downloaded songs are cached in BepInEx/cache/PlayerRadio (500 MB limit by default; oldest files are removed first).
  • Bandwidth: uploads are capped at 64 KB/s in total (StreamRateKBps), and downloads at 128 KB/s (DownloadRateKBps). A typical 5 MB song takes about a minute. Files over 25 MB (MaxStreamFileMB) are never sent. Set EnableStreaming = false if you don't want to send or receive files at all.

What this mod sends and stores

  • Sent: only song files from players' own Music folders, and only to other players in the same lobby who also have Player Radio. They go over the game's own Photon connection (Photon events), never anywhere else. Files over 25 MB are never sent. Small radio state (which song, playing/paused, position) is shared through Photon player properties.
  • Checked: every received song is verified with SHA-256 before it's used; anything that doesn't match is thrown away.
  • Stored: received songs are saved only to BepInEx/cache/PlayerRadio (500 MB cap by default, oldest files are deleted first). Nothing else is written outside the mod's config, cache and Music folders.
  • Nothing else: no internet downloads, no external servers, no analytics. Local audio is loaded only through file:// paths, and F4 opens the Music folder the same way.

Configuration

Settings are in BepInEx/config/com.inkslinger.playerradio.cfg (or your mod manager's config editor):

Setting What it does
Hotkeys All keys above
MyRadioVolume / OtherRadiosVolume / VolumeStep How loud your radio / other players' radios are for you, and the F9/F10 step
MaxDistance / MinDistance How far radios can be heard (default 60 m)
DuckGameMusic, GameMusicDuckVolume, DuckOnlyWhenInRange, ExcludeFromDucking Game-music fading
EnableStreaming, StreamRateKBps, DownloadRateKBps, MaxStreamFileMB Song streaming
CacheSizeMB Size limit for downloaded songs (default 500 MB)
MusicFolder Use a different Music folder
ShowHud, ShowKeyHints, ShowNearbyRadios, MarkRadioCarrierName What the overlay shows
VerboseLogging More detail in the log

Known limitations

  • Memory: each playing radio keeps its song decoded in memory (a 4-minute song can use roughly 40-85 MB), so many radios at once use more RAM.
  • Multiplayer has only been lightly tested. Please report problems with your BepInEx/LogOutput.log (lines tagged Player Radio).
  • Big lobbies with lots of new songs can take a while to download everything at the default rates.

Troubleshooting

Check BepInEx/LogOutput.log for lines tagged Player Radio. It shows the session mode, which players have a compatible radio, the game's key bindings and every song loaded or downloaded.

AI disclosure

This mod's code was written with AI assistance: it was generated by the Grok Bot assistant, and directed, tested and published by Inkslinger. The DLL carries the AI_Assisted_Creation and AI_Model_Vendor assembly metadata, as Thunderstore asks.

Source and license

Credits

Made by Inkslinger. See CHANGELOG.md for version history.

CHANGELOG

Changelog

0.2.3

  • New RADIO page in the pause menu (Esc → RADIO): now playing with the song time, previous / play-pause / next, sliders for your radio's volume and other radios' volume, mute other radios, open the Music folder, and a list of your songs (click one to play it). Back, Esc or the gamepad back button return to the pause menu. Works with mouse and gamepad.
  • The hotkeys now also work while the pause menu is open.
  • New EnableHotkeys setting (default on) to turn all radio hotkeys off.
  • ShowKeyHints (the key hints in the top-right overlay, default on) is also hidden when hotkeys are off. The overlay hides itself while the RADIO page is open.
  • New PauseMenuRadioPage, PauseMenuButtonPosition and DumpPauseMenuHierarchy (off by default) settings (see README).
  • Compatible with 0.2.0-0.2.2: no network changes.

0.2.2

  • F4 now opens the Music folder through Unity (Application.OpenURL with a file:/// URL) instead of starting explorer.exe. The mod no longer uses System.Diagnostics.Process anywhere.
  • README: added an AI disclosure, a "What this mod sends and stores" section, and links to the source code (MIT license).
  • The DLL now carries AI_Assisted_Creation and AI_Model_Vendor assembly metadata.
  • No gameplay or config changes.

0.2.1

  • Default keys swapped: F5 is now play/pause and F6 is previous song. Existing configs that still use the old defaults (play/pause F6, previous F5) are switched automatically on first launch. Keys you changed yourself are kept.
  • Old settings removed in 0.2.0 (Volume, TakeOver, SourceHandoff) are cleaned out of the config file.
  • HOW TO ADD MUSIC.txt is refreshed with the new keys.
  • Icon fix: the radio waves were cut off.

0.2.0

  • Per-player radios. Every player now has their own radio on their own character. It plays only their own Music folder, and only they control it. Everyone hears every radio in 3D, so several can play at once.
  • New MyRadioVolume and OtherRadiosVolume settings (local only). F8 now mutes/unmutes other players' radios for you.
  • A dead player's radio keeps playing where they died until they are revived or leave.
  • Game music ducks for your radio and, depending on distance, for other radios near you.
  • The overlay lists radios playing nearby.
  • Streaming fetches songs from the radio's owner or anyone else who has them, two at a time, and prefetches each owner's next song. New DownloadRateKBps setting.
  • Volume and SourceHandoff were removed.
  • Not compatible with 0.1.x: everyone needs 0.2.x.

0.1.2

  • F4 opens your Music folder in File Explorer.
  • A HOW TO ADD MUSIC.txt is created in the Music folder.
  • Songs in subfolders are now found.
  • Game-music ducking only fades actual music. Ambience and sound effects that the game tags as music are left alone. The new ExcludeFromDucking setting (default Ambience) lets you exclude more by name.

0.1.1

  • The game's own music fades out while the radio is playing and fades back in when it stops (DuckGameMusic, GameMusicDuckVolume, DuckOnlyWhenInRange).

0.1.0

  • First release.