Welcome back to this week’s edition of BeastSaber’s community profiles! Today, we have Caeden. While they’re a mapper in their own right, Caeden is also the esteemed developer behind the next generation of mapping editors: Chromapper! Today, we’ll dive into both aspects of their Beat Saber work.
Donate ( early access to Chromapper, as well)
Q. What inspired you to start mapping?
I personally split up my mapping career into two phases.
The first phase, which was in May of 2018, was as simple as “My favorite artist does not have any Beat Saber songs, let’s change that.” It went until about August of that year, when I became much more interested in creating mods for the game.
My second phase started in September of 2019, when I realized that, in order to properly test ChroMapper, I needed to start mapping songs again.
Caeden’s return to BeatSaber mapping, with Chromapper!
Q. What are your preferred genres of music to map?
Mainly, any song by Creo. I understand that I only published 1 Creo song but there’s a few sitting in limbo- I mean WIP. There are a few other artists and genres that I enjoy, such as Boom Kitty and Martin O’Donnell, but so far I have not mapped anything by them (yet!)
Q. Which of your maps are you most proud of or is your favorite?
The Escape 360 level I created for the Noodle OST 1 Remaster pack is probably my favorite map I’ve done. I knew this was a level I wanted to remaster for 360 degrees, since at the time Escape did not have a 360 level. On top of that, Escape is my favorite song from the OST 1 pack, so it was a win-win for me.
The only thing I’d change about it is to not have it rotate players completely around twice. For 360 levels, I aim for players to do one complete 360 rotation for a few reasons:
1) It’s a feature designed primarily for the Oculus Quest, where a tethered connection is not needed for play.
2) I find it impossible to create a “proper” 360 level that satisfies every cabled player; there will almost always be someone who has to step over their cable.
For Escape 360, players do two complete 360 rotations instead of my goal of just one, and has lead to a few reasonable complaints from tethered players. Nonetheless, it still stands as my favorite map.
Q. If you could go back in time and talk to yourself as a new mapper, what is the #1 piece of advice you would give?
“Hey yeah how about lets not place blocks on those two center tiles there mmkay? You’re messing up your future selves’ average rating.”
Q. Do you have a signature pattern that you use in all/most of your maps?
I don’t know why, but this pattern (–>), including some variations of it, have made its way into most of my more recent maps. While not necessarily a pattern, I found some streamers recognizing my 360 levels thanks to a heavy use of guiding walls.
Q. What, in your opinion, is the single most challenging thing for a new mapper to master in order to be successful?
Recognizing that your maps need to be testplayed by others, and not through BeatSaver. In the Beat Saber Modding Group, there exists a channel named #testplays. #testplays is a great channel to post your new maps, and to be given constructive feedback by members of the community. A majority of new mappers will skip this step, and they’ll miss key information and feedback that will turn their maps from mediocre, to good, to great.
A few of them will upload their WIP maps to BeatSaver, and give them to streamers to testplay. BeatSaver is meant for completed maps; like you are putting them up on store shelves for everyone to download and play. On top of this, most streamers are unfortunately not trained to spot the more hard-to-spot missmaps that can negatively impact a map. This is why its a good idea to have your maps posted in #testplays, and be given a review by someone who knows what they’re doing. They can even provide you feedback in DMs if you request that.
Q. Is there a mapping practice that most mappers frown upon, that you happen to think can be used really well in the right hands?
While not really a “practice”, and not really something most mappers frown upon, but 360/90 levels. Most people do not have the editor to create 360/90 levels, and they are also much easier to mess up compared to regular levels, but when done correctly, they can be a LOT of fun! A good example is the Glide 360 from the Rocket League + Monstercat pack.
360 mapping in Chromapper!
Q. What does your mapping process look like? Do you use timing notes? Do you light first, or map? Be as detailed or as short as you’d like.
I start off by placing some bookmarks where major song events happen, such as any build ups, drops, interludes, etc. Depending on how much I want to map the song, I might do timing notes, or I might skip them. I start the notes for the map, then the obstacles. Usually this happens incrementally; I do notes for a certain distance, jump back and build up walls to that point, then continue on. Very rarely do I have a solid idea of what I want to do for a map, so I just let my heart (and basic Mapping rules) guide me. Lights are usually the last thing that I create if I did not already outsource them to another lighter. Given the editor I’m making, if I’m lighting my own map I’ll try to incorporate features from the Chroma mod, such as light propagation and RGB lighting.
Q. Let’s talk a bit about your journey with Chromapper.
When and why did you start programming?
My interest in programming definitely began thanks to living close to a Microsoft campus when growing up, as well as my father working for them.
I started in around 2009-2010, with my very first “language” and environment being Kudo Game Lab. It’s essentially a sandbox game with pre-made assets, that’s all controllable by a built-in visual programming interface, and no actual written code. It’s definitely an uncommon choice, but it was how I got started.
My very first “real” programming language was Visual Basic .NET about a year or two later, using it to create some very rudimentary apps and games using Windows Forms. From there, I eventually moved on to C#, again with very rudimentary apps and games using Windows Forms.I played with Unity on and off during the years before Beat Saber, using it to make some very basic games. With Beat Saber’s release, the rest is history.
Q. What does your development process look like?
This is really a hard question to answer.
To put it simply, I pick an issue with my project, and focus on it until it is complete. The issue can be anything from a new feature addition, or an actual problem that needs addressing. This process repeats a few times, with a few other bug fixes sprinkled in between, and then it’s released as a new version. After each release, I focus on any bug reports that spring up, and post new patch versions if necessary. When a suitable amount of time has passed, the cycle repeats itself.
I recognize that this isn’t the best development process when working on larger projects, or with a team of people, but it’s the one that stuck with me while I was making Beat Saber mods. A bit too reliant on other people to find your own problems, which came back to sting me later with ChroMapper.
Some UI work, and Caeden’s admittedly buggy ring code (at the time)
Q. What made you decide to start working on ChroMapper?
While not really related to ChroMapper, the idea for my own map editor actually started around October of 2018, when I was pretty new to making Beat Saber mods. After creating a replay mod and posting it on Reddit, I commented how the replay format would allow map editors to import them for playback. The go-to community editor was built in the Unreal engine, which I did not know. I said that I could make my own map editor in Unity, but “that’ll have to be something for another time.”
ChroMapper itself actually started in February of 2019. The man, the myth, the legend SkyKiwi was well in development with Chroma, and wanted a new editor that was primarily focused on its new features. I was interested in lending a hand for a variety of reasons:
- There were learning opportunities to take advantage of. I would get more experience with the Unity editor, more experience in programming, working with other people, etc.
- I simply wanted to know what it was like to make a map editor, even if it was from scratch.
- There were some common complaints in the current go-to family of editors, and I felt I could address them in ChroMapper.
- Speaking of that family of map editors, all of them are built on top of the last. As a result, I’ve heard horror stories from other developers about their internal codebase. I wanted to prevent that by making ChroMapper from scratch, instead of continuing the tradition of building over what’s already there.
For the first few months, it was SkyKiwi and I as the dynamic duo behind ChroMapper. After that, SkyKiwi slowly phased out of the community, leaving just me as the sole developer, with the occasional contributor in between.
With that, ChroMapper eventually morphed itself from its original concept of “the lighter’s editor”, to a more general purpose, but still advanced, map editor.
Q. Non-mappers might not understand why ChroMapper is such a big deal for the mapping community. Could you explain what sets it apart from all the editors before it?
I’d like to preface this by saying that, as much as all of this might get people hyped for ChroMapper, it’s still in the beta phase of development. It’s taken us over a year and a half to get to this point in development, and a public release is currently not planned (yet!). It still very much has its own set of issues that I need/want to address before going public.
One of it’s most practical standouts is the native inclusion of 360/90 degree mapping. So far, the only way to create 360/90 maps is through Beat Saber’s Official Editor, which is seen as unfavorable in the mapping community. The few ways to create 360 levels in other editors are through external tools and programs. None of these solutions do a good job of letting you instantly preview how it looks, which can be important on a 360/90 level, where common “rookie” mistakes are much easier to make. ChroMapper offers native support in a 3D environment, which means that not only can you create 360/90 maps without any extra setup, but you can also see map objects rotate in real time.
A recent addition that could be useful to a lot of people is localization for ChroMapper. The entire program can be translated into a different language, allowing for greater accessibility for mappers who do not read or understand English, or who just prefer their local language. We’ve had a few great people start translating it into languages like Dutch, French, Spanish, and Japanese. However, a lot of work remains to be done, and I will accept any and all help with it.
The last thing that I will mention is the ability to rebind keys. As surprising as it sounds to some non-mappers, little to no map editors support active key rebinding. If you happen to use a different keyboard layout, or have a few extra sets of keys that you want to use, ChroMapper will allow you to rebind actions. It even supports controllers, surprisingly!
This Chart-a-Thon map was made in Chromapper!
Q. What’s the biggest challenge you’ve had to overcome while working on ChroMapper?
Ohh, that will most definitely be optimizing it.
ChroMapper had its good share of performance problems over the course of its development. Load times were slow, idle performance in complex maps was poor, or placing an object made ChroMapper unresponsive for minutes at a time. Yep, that actually happened. Something had to go wrong.
It was the solutions to these problems that are definitely the biggest challenges I’ve ever experienced.
To fix a lot of these problems in one fell swoop, I had to undertake one of my most challenging programming tasks to date. Over the course of about a month, I refactored a large amount of ChroMapper’s internals. A majority of code for the editor was rewritten, or changed in some way, to allow for better performance. I even had to consult a few other developers on how to go about some parts of the refactor. But in the end, the benefits I got from such a refactor was well worth the effort.
It was these sorts of challenges that have made me learn the most about making these sorts of things in Unity, and in being a better developer in general. I’ve learned what was “good” code and what was “bad” code much faster by developing ChroMapper than I ever did with Beat Saber mods. It also made me realize just how much effort the Beat Games team puts into optimizing Beat Saber. I have much more respect for them, and their efforts to squeeze every millisecond of performance out of both their game and the Unity engine.
Adding events and platforms!
Q. Is there anything else you’d like to say to the Beat Saber community?
Sure, there’s a few things I’d like to bring up before this interview comes to a close.
First, I’d like to remind people to simply thank the modders. We’ve created all of the mods that you guys take for granted, and most of us don’t get any recognition or money from them. We’ve put hours of our own time into what we do to better the community. So, I ask that you at least thank the creators of your favorite mods. It’ll definitely make their day!
Secondly, I’d like to thank all the ChroMapper Contributors, Closed Alpha Testers, and Closed Beta Testers. They’ve all kept me motivated to work on this project, and without them, I probably would’ve left the project a long time ago. Contributors have helped speed development, and got ChroMapper to a point in development that would never be possible otherwise. Closed Alpha Testers have stuck around since the days where ChroMapper was nothing but a glorified map viewer, and didn’t give up hope. Closed Beta Testers are taking time out of their days to use and break the program and report every bug they can to me. I thank all of them!
Thanks so much to Caeden for their time! Please support them in their continued development of Chromapper, and check out their maps if you haven’t already. If you’d like early access to Chromapper, consider donating to Caeden on Patreon.