Repository navigation
Releases: RELMYMathieu/JustReadTheInstructions
Releases · RELMYMathieu/JustReadTheInstructions
Release list
v2.5.1: Proper colors...
Fixed
- In-game recordings no longer crush dark scenes or oversaturate colors on Windows, which was most visible as the sky darkens during ascent. Videos are now saved in the standard HD color format (BT.709, TV range) and say so in the file, so players, editors and OBS show them as they looked in game
- In-game recordings on Linux and macOS use the same standard HD colors, fixing slightly shifted hues
- In-game recording on Windows no longer fails to start when JRTI cannot use the graphics card for color conversion
v2.5.0: The WebUI & Recording Refresh
Highlights
- In-game recording : the Record button now saves an MP4 inside KSP using your graphics card's encoder. The frame rate stays steady, recording continues if you close the web page, and the file stays playable after a game crash.
- Camera layout page (
/layout.html) : watch several cameras in one window. Layouts can be saved and shared by name.layout.html?programgives OBS a clean feed that switches layouts on air. - Lighter on your framerate : cameras render at most Max FPS times per second, with far less memory churn while streaming.
- New web UI : a quieter, more readable look with a bundled font, and it loads nothing from the internet.
Added
- Camera layout page (grid button, or
/layout.html) with Spotlight, Fullscreen and Fill modes, a camera list (C) with drag and drop, tile swapping, Undo (Ctrl+Z) and a Columns option (L) - Saved layouts - open one anywhere with
layout.html?layout=Name. Every screen showing it, OBS included, follows changes made from another device - Clean feed for OBS (
layout.html?program) - shows the layout currently on air, with no controls. Switch with Take on air or Shift+1 to 9, or from a Stream Deck through/program/take/<layout name> - All cameras of a layout share one connection, so big layouts no longer hit the browser's 6-connections-per-host limit
- In-game recording (default) - Media Foundation on Windows, ffmpeg on Linux and macOS
- "Video codec" option - H.264 by default, AV1 on Linux and macOS when ffmpeg has an AV1 encoder (see the README's "Recording & Codecs" section)
- Recordings panel - lists recordings on the KSP computer, with Play and Download from any device on your network
- Record, pause and stop from the camera viewer, not only the main page
- Performance overlay (Ctrl+Alt+F6, or Settings > Diagnostics) - FPS, frame time, JRTI's own cost, memory and per-camera stats, with optional CSV logging
- Diagnostics page in the web UI (
/debug.html) - the same numbers live, with the last two minutes charted - "Spread camera renders across frames" setting (on by default) - cameras take turns rendering instead of all on the same frame
- The web UI shows the address other devices on your network can open
Changed
- New web UI look, and it no longer loads anything from the internet, so it works on a LAN without internet access
- Every camera renders at most Max FPS times per second, whether it has an in-game window, a stream or both. Windows used to render at half the game's frame rate
- Much less memory churn while streaming, and at most two frames per camera are read back and encoded at once
- Stream frames land closer to when they are due, so spacing stays even
- The main page's live previews share one connection instead of one each
- Settings are saved in
PluginData/settings.cfg, so updates no longer reset them. Your current settings move there automatically (CKAN users may need to set them once more) - The camera viewer shows the camera's name and recording state, and reconnects on its own
Fixed
- Camera feeds recover on their own after closing the map view
- Streamed cameras pace their frames properly toward Max FPS, so viewing is smoother
- Recordings no longer get stuck on "Saving..." or keep showing as recording after the game has saved them
- A recording's stream reconnects when the camera is closed and reopened in game
- JRTI now warns on screen and in the settings window when the web UI's port is taken by another program
- The Record button no longer stays disabled in browsers that can't record on their own
- Camera cards stop requesting snapshots in background tabs
- Card order and record groups survive a game restart
Deprecated and removed
- The browser recorder is now "legacy" and will be removed in v3.0.0, along with its upload endpoints and the MP4/WebM fixers
- The "Render camera windows every other frame" setting is replaced by Max FPS
Heads up
Most of this has only had light testing in KSP. If something misbehaves, please open an issue with your KSP.log.
v2.4.1.3: Layout columns control!
Added
- Columns option on the layout page (L) - keep cameras side by side (or stacked) instead of letting the page pick, for example two cameras side by side on a smaller screen
v2.4.1.2: Web UI refresh, new recording system
Added
- Saved layouts - save a layout under a name from the layout page's menu and open it anywhere with
layout.html?layout=Name. Every screen showing it, OBS included, follows changes made from another device - Clean feed for OBS (
layout.html?program) - one browser source that shows the layout currently on air, with no controls. Switch with Take on air or Shift+1 to 9, and cameras glide into place. Stream Deck buttons can switch it through/program/take/<layout name> - Camera list on the layout page (C) - click a camera to add it, or drag it onto a tile. Tiles can be dragged onto each other to swap them
- Undo on the layout page - an Undo button after removing or swapping tiles, and Ctrl+Z for any change
- Recordings panel - lists recordings saved on the KSP computer, with Play and Download from any device on the network
- Record, pause and stop from the camera viewer (Watch), not only from the main page
- The web UI shows the address other devices on your network can open
Changed
- New web UI look: overall more readable style with a bundled font, words instead of icons, and color only for recording, paused and watched
- The web UI no longer loads anything from the internet, so it works on a LAN without internet access
- The camera viewer shows the camera's name and recording state, and reconnects on its own
- Spotlight sizes the small tiles to match the big one, and they no longer jump to the bottom in fullscreen
- Settings are saved in
PluginData/settings.cfgso updates no longer reset them. Your current settings move there automatically (CKAN users may need to set them once more) - Performance overlay moved to Ctrl+Alt+F6 (Ctrl+Alt+F7 also opened the main window)
Fixed
- The Record button no longer stays disabled in browsers that cannot record on their own
- Camera cards no longer request snapshots while the page is in a background tab
- Card order and record groups are kept after a game restart
v2.4.1.1
Added
- Performance overlay (Ctrl+Alt+F7 in flight, or Settings > Diagnostics) - game FPS and frame time, JRTI's own cost per frame, memory and garbage collections, plus per-camera render and stream stats. Can log to CSV (
PluginData/PerfLogs/), and the latest sample is served as JSON at/debug/stats - Diagnostics page in the web UI (gauge button, or
/debug.html) - the same numbers live, with the last two minutes charted and values needing attention highlighted - "Spread camera renders across frames" setting (on by default) - cameras take turns rendering instead of all on the same frame, evening out frame times with several cameras open or streaming
- Camera layout page in the web UI (grid button, or
/layout.html) - watch several cameras in one window, with Spotlight (one large tile), Fullscreen and Fill (edge to edge split screens). Layouts are saved by camera name and can be shared as a link (layout.html?cams=10,11,12), handy as a single OBS browser source - All cameras of a layout stream over one connection (
/streams?ids=1,2,3), so large layouts no longer hit the browser's limit of 6 connections per host - In-game recording, now the default - the Record button records an MP4 inside the game with the graphics card's encoder (Media Foundation on Windows, ffmpeg on Linux and macOS). Steady frame rate, keeps recording when the web page is closed, stays playable if the game crashes and scrubs cleanly in every player
- "Video codec" option in the web UI's recorder settings - H.264 stays the default, AV1 is available on Linux and macOS when ffmpeg has an AV1 encoder (not on Windows yet). See the README's "Recording & Codecs" section
- The browser recorder stays as a fallback when in-game recording can't start, and can still be picked in "Record with" (for example to save to another device). In-game recording can be turned off in the settings window
Changed
- Every camera now renders at most Max FPS times per second, whether it has an in-game window, a stream, or both, instead of every (other) game frame. Streamed cameras only render when the stream needs a new frame. Camera windows used to render at half the game's frame rate (72 FPS on a 144 FPS game), so this is much lighter at high frame rates. Max FPS is now correctly labeled "camera windows and streams" since it applies to both respectively.
- Much less memory churn while streaming, which should reduce stutter. Each camera reuses its frame buffers instead of allocating a new one per frame (about 2.7 MB per frame at 720p), and per-render camera lookups no longer allocate
- At most two frames per camera are read back and encoded at once, so JPEG encoding can no longer pile up behind a slow CPU, while a slow readback or encode no longer lowers the stream's frame rate
- OpenGL (no async readback) no longer uploads every captured frame back to the GPU
- Stream captures now land on the game frame closest to when they are due instead of the first frame after, so a stream's frame spacing stays even when the game runs at about a multiple of Max FPS
- The main page's live card previews (shown for cameras someone is watching) now share one connection instead of opening one each, so the main page open next to a layout page or several viewers no longer runs into the browser's limit of 6 (or whatever the browser limits it to) connections per host
Deprecated
- The browser recorder (MediaRecorder in the web page, uploaded in chunks) is now the legacy recorder, shown as "legacy" in the web UI. It will be removed in v3.0.0 along with its upload endpoints and the MP4/WebM fixers, as the in-game recorder is a much better solution and is much easier to maintain and debug.
Removed
- Render camera windows every other frame setting has been replaced by the Max FPS setting which applies to both camera windows in game and in the streamer Web UI.
Fixed
- When the web UI's port is taken by another program, JRTI now says so on screen and in the settings window next to the Port field, instead of only writing it to KSP.log.
- Streamed cameras now properly pace their frames attempting to hover towards the "Max framerate" option when being watched, which makes the viewing experience a lot smoother.
- Camera feeds recover on their own after closing the map view. Opening the map switches KSP's cameras and visual mods like Scatterer and EVE to map mode, and JRTI cameras kept the broken rendering until they were closed and reopened. They are now rebuilt half a second after the map closes, without interrupting streams, viewers or recordings (may cause a very brief freeze or lag spike to cameras that are rendering)
- Recordings no longer get stuck on "Saving..." or keep showing as recording after the game has already saved them. When the server closes a recording on its own (no data for 30 seconds), the web UI now notices and returns to idle instead of sending requests that keep failing, and saving gives up waiting after 15 seconds and leaves the file to the server
- Recording heartbeats now use their own endpoint and no longer pile up while the connection is slow
- A recording's camera stream now reconnects on its own when it ends (for example when the camera is closed and reopened in game), so a recording paused on signal loss records live frames again when it resumes instead of a frozen image
v2.4.1
Fixed
- Cameras sharing the same part (e.g. Starship Expansion Project's booster and ship parts) now work independently; opening or streaming one camera no longer marks every camera on that part as open/streaming. A custom ID set on such a part now numbers its cameras in order (ID 10 gives 10, 11, 12...), and a custom name is suffixed with each camera's own name (thanks to Recoleto for bringing this to my attention)
- The plugin DLL's assembly version now matches the release; it had been left at
2.3.0.0since v2.3.0, so tools reading the DLL version reported the wrong release
v2.4.0
Added
- Features from v2.3.0.1 deemed stable, and now added to stable version
- Merged PR#25 (restore OpenGL far-PQS camera rendering- #25); many thanks to ruedigerlenz for contributing!
v2.3.0.1
What's changed
Added
- (Experimental) Scatterer sun flare now renders through JRTI cameras - the per-camera sun flare hook is mirrored onto our cameras via reflection so the flare stops being culled on the JRTI feed. Requires Scatterer integration enabled. This beta is lightly tested - please report flares that fail to appear at some sun angles, look misplaced, or affect the main view
Fixed
- Night-vision camera mode no longer brightens the main game view - the night-vision filter cloned onto JRTI cameras was forcing the scene-global ambient light high every frame, which bled onto the main camera; the boost is now confined to the JRTI camera's own render pass. Builds on andredichev's fix for the same issue, thanks to them for the solution
v2.3.0
What's changed
Added
- (Experimental) Option to disable the web streaming server entirely - run JRTI with in-game camera windows only, no HTTP server, browser streaming, or recording. Lighter on low-end machines. Toggle in Settings > Stream / Capture, or set
EnableStreamServerinsettings.cfg. Takes effect on next flight scene entry - Per-camera brightness, contrast, and gamma controls in the web viewer - adjustments are applied server-side so all viewers on the local network see the same image
- Per-camera FOV control in the web viewer (shown when the camera reports a valid FOV range from KSP)
Changed
- In-game UI polish pass - more spacious layouts, larger text, roomier buttons and camera controls
Fixed
- Camera IDs are now scoped to a flight session and freed when a craft is recovered or unloaded - relaunching a craft reliably restores its chosen IDs instead of them being bumped because a now-gone craft still held the number
- The web server no longer reaches into live in-game camera state from its request threads, removing a rare race that could surface as a crash near the web UI
- Two memory structures (the runtime camera-ID map and the finalized-recording set) no longer grow unbounded over a long session
- Camera windows now cascade on screen when opened instead of all stacking in the bottom-right corner
- Camera windows now open in full UI mode by default - minimal mode (preview only) can be enabled in settings or toggled per-window with a double-click
- Double-clicking the camera preview to toggle minimal mode now correctly resizes the window immediately (used to bug out and not properly resize until the next manual resize from the user)
v2.2.0: macOS Support
What's changed
Changed
- Settings menu now auto-saves instead of requiring the user to click "Save" (which is now removed), and applies changes immediately without needing to close the menu
- Cleaned up disposition of Web UI
Added
- Docking camera overlay with telemetry
- A new parameter
FixedPreviewAspectRatio(boolean) tosettings.cfg, allowing the in-game camera preview to be forced to a 1:1 aspect ratio - Mod version label in settings menu
- Minimal UI option in settings
- Fixed preview aspect ratio when
FixedPreviewAspectRatiois enabled, so it doesn't stretch to fit the container (user setting) - Added recording groups to allow recording a select subset of cameras within a group
Fixed
- Drag the in-game preview by the camera image (on large screens, it can be difficult to target the title bar with the mouse...)
- More space for the streaming label
- Mac camera streaming now works via a synchronous GPU readback fallback (Metal does not support Unity's async readback API)
Known Issues
- Firefox recording output is unreliable - the recorded file may be corrupt or unplayable
- Stale zero-byte buffer files are sometimes left in the recordings folder after a recording session ends
- macOS is now supported, however it comes with degraded performance - this "known issue" will be in readme and only figure in this release
- Performance degradation with Parallax enabled - Parallax integration is disabled by default for this reason