diff --git a/README.md b/README.md index 830c658..c866f2d 100644 --- a/README.md +++ b/README.md @@ -278,3 +278,5 @@ custom content or non-obvious user choices rather than pure cache data. checks, and teardown commands. - The 1.44.1 migration tracker lives in [`docs/notes/install-and-verify-plugins-1.44.1.md`](docs/notes/install-and-verify-plugins-1.44.1.md). +- Lightshow mods in the 1.44.1 lock, and how they fit together, are described in + [`docs/notes/lightshow-mods.md`](docs/notes/lightshow-mods.md). diff --git a/docs/notes/lightshow-mods.md b/docs/notes/lightshow-mods.md new file mode 100644 index 0000000..7ae6dea --- /dev/null +++ b/docs/notes/lightshow-mods.md @@ -0,0 +1,31 @@ +# Lightshow Mods + +These plugins play mapper-authored lighting and visuals. The 1.44.1 lock uses +each mod's newest upstream zip built for Beat Saber 1.42.1. Chroma, Noodle +Extensions, Vivify, ChromaGLS, and BeatToTheFuture all ship that way, and +ChromaGLS documents the 1.42.1 plugin as the build for 1.44.1. + +Mapper docs for the Aeroluna stack live at [heck.aeroluna.dev](https://heck.aeroluna.dev/). + +## What each mod is for + +| Mod | Role | +| --- | --- | +| [Heck](https://github.com/Aeroluna/Heck) | Shared runtime for Chroma and Noodle Extensions. It reads the custom events those mods animate. It is not a lightshow by itself. | +| [Chroma](https://github.com/Aeroluna/Heck) | Custom colors for lights, notes, bombs, sabers, and obstacles, plus extra environment controls such as ring movement. LookupID is the small id library Chroma loads with it. | +| [Noodle Extensions](https://github.com/Aeroluna/Heck) | Moves and reshapes notes, obstacles, and environment objects. Maps that bend the playfield usually require it alongside Chroma. | +| [Vivify](https://github.com/Aeroluna/Vivify) | Loads mapper-built asset bundles: models, textures, audio, and post-processing shaders, then places them with in-game events. This is the mod for custom scenes, not just recolored stock lights. | +| [ChromaGLS](https://github.com/EklipZgit/BeatSaberChromaGLS) | Custom RGBA colors, strobe colors, easing, and per-light color spreads on the game's Group Lighting System. Stock GLS still chooses which lights fire; ChromaGLS changes the color of those events. See [Using ChromaGLS](https://github.com/EklipZgit/BeatSaberChromaGLS/blob/master/UsingChromaGLS.md). | +| [BeatToTheFuture](https://github.com/EklipZgit/BeatToTheFuture) | Keeps newer map data working in the V3 format ChromaGLS uses: V4 walls, variable note jump speed on 1.40.8 and newer, Chroma ring-speed correction, and a `"lerpType": "TrueHSV"` color blend for Chroma. ChromaGLS requires it. | +| [PitchBlack](https://github.com/Loloppe/BeatSaber_PitchBlack) | Player-side switch that darkens the environment for the person playing. | + +## Running them together + +Upstream docs treat this set as one stack. + +- [ChromaGLS](https://github.com/EklipZgit/BeatSaberChromaGLS) says it works alongside Chroma and Heck, and that it keeps its own DLL. Its [usage guide](https://github.com/EklipZgit/BeatSaberChromaGLS/blob/master/UsingChromaGLS.md#compatibility) says BeatToTheFuture supplies the V4-to-V3 compatibility and the ring-speed correction. When Chroma is loaded, Chroma keeps removing the environment gradient on ChromaGLS maps. +- [BeatToTheFuture](https://github.com/EklipZgit/BeatToTheFuture) describes itself as the support mod for ChromaGLS maps that still need V4 walls or variable note jump speed. Its ring correction runs once before Chroma reads each event. On 1.42.1 and newer, that slows ring waves on maps published before 29 March 2026 so they match the speed the mapper saw. The gameplay-setup menu has a switch for that correction. +- `"lerpType": "TrueHSV"` is an extra Chroma blend. Chroma's existing `"HSV"` blend stays as it is. +- [Vivify](https://github.com/Aeroluna/Vivify) documents custom assets on top of the same Heck mapping events. A search of the ChromaGLS, BeatToTheFuture, and Vivify repositories found no warning against loading Vivify with Chroma or ChromaGLS. + +ChromaGLS declares these minimums: BeatToTheFuture 1.0.0, BSIPA 4.2.2, CustomJSONData 2.5.2, SongCore 3.11.1, BeatSaberMarkupLanguage 1.5.9, and SiraUtil 3.0.5. BeatToTheFuture declares the same set except itself. The 1.44.1 lock is already above those floors. diff --git a/locks/1.44.1.lock.toml b/locks/1.44.1.lock.toml index c45e2a0..1e517ce 100644 --- a/locks/1.44.1.lock.toml +++ b/locks/1.44.1.lock.toml @@ -121,6 +121,26 @@ sha256 = "0e8799a7243496925aa527bc4ca7d3bcab770f4e828bbceeed066539f90a0902" install_strategy = "bsipa-zip" reason = "No BeatMods verified 1.44.1 entry was returned on 2026-06-28. Use latest upstream GitHub Vivify asset targeting the highest available Beat Saber version, bs1.42.1; GitHub release digest matched the downloaded asset." +[[plugins]] +id = "beattothefuture" +repo = "EklipZgit/BeatToTheFuture" +tag = "v2026-10-17-1.0.1" +asset = "BeatToTheFuture-1.0.1+1.42.1-bs1.42.1-bdb6ef5.zip" +download_url = "https://github.com/EklipZgit/BeatToTheFuture/releases/download/v2026-10-17-1.0.1/BeatToTheFuture-1.0.1%2B1.42.1-bs1.42.1-bdb6ef5.zip" +sha256 = "def6409d44fde7b618cc20f962fba5d50758d4324dd97128c9dd18f3417585d6" +install_strategy = "bsipa-zip" +reason = "Latest upstream GitHub BeatToTheFuture release v2026-10-17-1.0.1, asset BeatToTheFuture-1.0.1+1.42.1-bs1.42.1-bdb6ef5.zip. Required by ChromaGLS. GitHub release digest matched the downloaded asset." + +[[plugins]] +id = "chromagls" +repo = "EklipZgit/BeatSaberChromaGLS" +tag = "v2026-10-17-1.1.0" +asset = "ChromaGLS-1.1.0+1.42.1-bs1.42.1-996d98e.zip" +download_url = "https://github.com/EklipZgit/BeatSaberChromaGLS/releases/download/v2026-10-17-1.1.0/ChromaGLS-1.1.0%2B1.42.1-bs1.42.1-996d98e.zip" +sha256 = "c096efd387659a819df0338bb7ba984be8e34cea3de3cec3bcbfb0f7bda6f8b4" +install_strategy = "bsipa-zip" +reason = "Latest upstream GitHub ChromaGLS release v2026-10-17-1.1.0, asset ChromaGLS-1.1.0+1.42.1-bs1.42.1-996d98e.zip. Upstream documents 1.44.1 support through the 1.42.1 plugin build. GitHub release digest matched the downloaded asset." + [[plugins]] id = "iniparser" repo = "rickyah/ini-parser" diff --git a/registry/plugins/beattothefuture.toml b/registry/plugins/beattothefuture.toml new file mode 100644 index 0000000..41970f9 --- /dev/null +++ b/registry/plugins/beattothefuture.toml @@ -0,0 +1,13 @@ +id = "beattothefuture" +name = "BeatToTheFuture" +repo = "EklipZgit/BeatToTheFuture" +asset_patterns = ["BeatToTheFuture-*.zip"] +install_strategy = "bsipa-zip" +category = "mapping" +dependencies = [ + { id = "beatsabermarkuplanguage", constraint = ">=1.5.9" }, + { id = "bsipa", constraint = ">=4.2.2" }, + { id = "customjsondata", constraint = ">=2.5.2" }, + { id = "sirautil", constraint = ">=3.0.5" }, + { id = "songcore", constraint = ">=3.11.1" }, +] diff --git a/registry/plugins/chromagls.toml b/registry/plugins/chromagls.toml new file mode 100644 index 0000000..0aca44a --- /dev/null +++ b/registry/plugins/chromagls.toml @@ -0,0 +1,14 @@ +id = "chromagls" +name = "ChromaGLS" +repo = "EklipZgit/BeatSaberChromaGLS" +asset_patterns = ["ChromaGLS-*.zip"] +install_strategy = "bsipa-zip" +category = "mapping" +dependencies = [ + { id = "beattothefuture", constraint = ">=1.0.0" }, + { id = "beatsabermarkuplanguage", constraint = ">=1.5.9" }, + { id = "bsipa", constraint = ">=4.2.2" }, + { id = "customjsondata", constraint = ">=2.5.2" }, + { id = "sirautil", constraint = ">=3.0.5" }, + { id = "songcore", constraint = ">=3.11.1" }, +]