BigScreen
A shared in-world screen for watching YouTube together in Big Walk. Everyone with the mod sees and hears the same video, in sync.Changelog
1.0.4
1.0.3 was never published: Thunderstore rejected the package and this release carries its changes plus the packaging fix.
Fixed
package.ps1wrotemanifest.jsonwith a UTF-8 BOM, which Thunderstore rejects without giving a reason.Set-Content -Encoding UTF8means "with BOM" on Windows PowerShell 5.1; the manifest is now written throughWriteAllTextwith an explicit no-BOM encoder. Every package built before this carried the BOM - the source file was always clean, so it never showed up in the repo.
Both players must be on this version: the sync message gained two fields, so the protocol version went to 2 and a 1.0.2 peer is rejected outright rather than misreading the message.
Changed
- Screen geometry (
GroundClearance,WidthMeters) is now part of the shared state and owned by the host, the way position and yaw already were. A guest joining a lobby renders the host's screen at the host's height and width instead of their own, so everyone is looking at the same thing. Your own config still decides the screen for lobbies YOU host. - Raise/Lower is a host control now, and moves the screen for the whole lobby. A guest pressing it is told the host sets the height; the panel shows the shared value.
GroundClearancenow defaults to -0.3 rather than 0.6, which puts the screen near the ground and hides the stand. A fresh install and a tuned one no longer disagree by almost a metre. Existing configs keep whatever value they already hold - BepInEx does not rewrite a setting that is already there, so a host on the old default still needs to lower theirs once.
1.0.2
Fixed
-
Guests never received anything from the host, so the screen only ever existed on the hosting machine. Mirror's message delegate hands us the connection typed as
NetworkConnection, and the legacy-signature path cast it withas, which compares IL2CPP interop wrapper types rather than the native type and so producednull. The host then dropped every guest's Hello without logging anything, and with no peer registered it never broadcast state. UsesTryCastnow, and a Hello that still arrives without a connection says so in the log instead of vanishing.Only reachable with two machines: a solo host never sends itself a Hello, so no amount of single-machine testing could have hit it.
1.0.1
Comfort tweaks for actually sitting and watching something, rather than standing in front of a screen fighting the game's idle handling.
Added
Comfort.KeepAwake, which holds off the game's idle sleep - the dimming that creeps in when you stand still - while a video is playing and you are withinComfort.KeepAwakeRadius(15 m) of the screen. Sleep still works normally away from the screen. Set it toAlwaysto hold it off for the whole lobby, orOfffor stock behaviour. Local only: it resets your own idle timer and changes nothing for other players.Comfort.HideCrosshair, which takes the crosshair off the picture once you have stood still forComfort.HideCrosshairDelaySeconds(5 s), and brings it back the instant you move or look around. Same conditions asKeepAwake: only in front of a playing screen, and only withinComfort.KeepAwakeRadius. Set the delay to 0 to follow the game's own sleep timer instead.
1.0.0 - alpha
First version verified end to end in game: a YouTube link plays on a shared screen with positional audio, driven from an in-world control podium.
Added
- In-world control console beside the screen: skip back/forward 10 s, play/pause, and a paste bar that loads whatever YouTube link is on the clipboard. Aimed at and pressed with the game's own interact button, on mouse or controller.
- Status lamp on the console: grey idle, amber while resolving, green ready, red failed. Colour is the only feedback channel available - the mod ships no font.
- Screen positioning from the panel: raise/lower, and slide left/right/forward/back along the screen's own axes. Placement is remembered across restarts.
YtDlp.CookiesFromBrowser, for when YouTube blocks anonymous requests with "Sign in to confirm you're not a bot".
Changed
- Audio falls off as 1/distance rescaled to reach silence at
MaxDistance, instead of linear. Standing 4 m from the screen was previously 97% of full volume. - Guests with the mod can control playback by default.
Known limitations
- YouTube serves only one muxed format to the client yt-dlp can still reach, so playback is
capped at 360p. Higher resolutions are separate video and audio streams, which Unity's
VideoPlayer cannot take. Lifting this needs the ffmpeg backend in
docs/ARCHITECTURE.md. - Two modded players staying in sync has not been tested; there has only ever been one
machine. See milestone 3 in
docs/HANDOFF.md.
0.1.0 (unreleased)
- Initial scaffold: BepInEx 6 IL2CPP plugin, Mirror-based sync channel, yt-dlp resolver, Unity VideoPlayer backend, in-world screen with positional audio, IMGUI control panel.
- Not yet verified in-game. See docs/PLAYTEST.md.
