Heck banner

 In early 2020, I was experimenting mapping with another mod called Mapping Extensions. This mod allows adds extra functionality such as placing notes/walls outside the typical range, placing notes/walls in-between lanes, and having note cut direction face any direction.

 However, while working with the mod, I realized how clunky it was to use because of the same problems that Chroma originally had. I explain this in more detail in the Chroma breakdown, but basically it's trying to encode all the necessary data inside a 32-bit integer. This led to limitations like being unable to have negative values.

 This inspired me to write a new mod that has the same features but uses CustomJSONData (With permission from the original developer). I called this new mod "Noodle Extensions" (Named after a Discord server I was in with friends) and using CustomJSONData, I was able to not only improve on the already available features, but add new ones like setting the individual speed for each note.

Github Repo

(I have since combined the repo with a few other mods.)

IX's Shadow - Pleast
A map that uses Chroma and Noodle Extensions extensively
NotITG screenshot
Golden Rule - UKSRTX

 Noodle Extensions was successful in improving on its predecessor, however, I started taking interest in another rhythm game called NotITG. NotITG is self-described as "a rhythm game, standing out from others by being visual-artist-oriented, with its unique in-engine features emphasizing ease-of-use for creators of modded game content."

 Inspired by the visuals of that game, I wanted to bring them over to Beat Saber, so I began work on greatly expanding the features of Noodle Extensions to include animating objects such as notes, obstacles, and even the player.

Extra Sensory

 I first started experimenting with being able to set keyframes for notes to create interesting movement (The first draft JSON of this was awful...) To truly understand what was practical and what features I wanted, I simultaneously created a map while developing the mod (Later released as "Doppelganger"). I started by creating a standard vanilla map and used JavaScript (I was not familiar with JS before this!) to script placing keyframes, grouping notes, e.t.c. (This workflow of creating the vanilla map first and then scripting through JS ending up becoming the standard).

 My workflow became a loop of thinking of new effects, implementing the features needed to make it work, and refining the JSON syntax to make it intuitive and practical. For about a month, I worked a prototype of animations and the first draft of a map that uses the new features and by late June 2020, I sent what I was working on to my friend Reaxt.

 She was also heavily interested NotITG and the idea of implementing some form of that in Beat Saber, so together we decided to turn the release into an event, later named "Extra Sensory". So we also pulled in our friend CyanSnow and began creating maps. Over the next month, we began collaborating on this event, which involved frequently getting in voice chat with each other for hours at a time.

Extra Sensory
Event graphics by DownyCat
Playlist of all 5 maps

 Particularly for "At Doom's Gate" and "Midnight Lady", Reaxt adapted a script from nyri0 that would allow converting models made in Blender into in-game walls. This allowed for creating the scenery of a hell landscape and a bouncing city respectively.

 In the end, we decided that for the event, we would release one map a week to as a showcase of all the new features that I created. In total, CyanSnow created "At Doom's Gate", Reaxt created "Analys" and "Midnight Lady, and I created "Doppelganger" and "Try This" as well as finalized all the codes that drive the effects.

 The release was a success and inspired many talented mappers to create works of their own using these mods. Now, the term "Extra Sensory" has become a recognizable name for anyone who was in the community at the time of release.

Heck

 Chroma and Noodle Extensions already both had a lot of similarities in how they activated their patches and deserialized JSON. Now that both mods implemented animations, they began sharing even more code and had a common keyframe system. Because of this, I decided to create a common library named "Heck".

 Doing this has allowed easily expanding both mods and also creating new mods that needed these features. I chose to combine all the mods under the Heck repository to simplify maintenance and to have one place for the wiki, which documents all the features.

 Additionally, to aid with building to multiple game versions for all my Beat Saber mods, I set up CI/CD through Github Actions with common workflows which download stripped reference dlls to automatically build and create releases when pushing new commits.

GitHub Repo
Heck logo
heck