During Early Access, each official update included a list of all the patch notes I made during development. In fact, I even often did this for the updates that only went to the alphadev and beta channels. We haven't done that in a while, and I believe most people probably actually prefer a more prose-style approach ... but I might be wrong, so let me know. As this list is a particularly long one, I'll throw in a video now and then. So it's perfectly fine to just scroll down and watch the videos if this would be too much reading.
In case you missed that last big update - here's a more visual and verbal description: Holodance 1.3 is here! And still on #SteamSummerSale (50% off)
For the unfiltered, chronological list of all changes since November 25, 2019 (Holodance V0.9.2: Tech and Scoring Update), continue here:
Holodance 1.0 (Official release, Feb 28, 2020)
So there are the changes we've had from 0.9.2 until 1.0.0. We've had a 0.9.3 in-between but that only went to the beta/alphadev-channels.
- Arena: Meeting Mother Akash is now called Home of Mother Akash and can be used to play in Free Mode. The price to pay for that was that Mother Akash no longer blesses you with a visit in Free Mode (she still does in Story Mode, though).
- Home of Mother Akash: This location is 4500 meters above sea level. But that creates floating point rounding errors that caused significant stutter in tracking. So now we'll just imagine it's 4500 meters above sea level but keep actual coordinates within technical limits.
- Home of Mother Akash: Polished that whole Arena a lot, including new particle effects to make those chakras sparkle.
- Added Arenas for Levels 4 and 8 to Free Mode, with a new cloud system.
- Unlocking Arenas: Home of Mother Akash was previously unlocked at 2,000,000,000, we reduced this down to 1,000,000,000 now that this Arena is actually playable (and apologies to everyone who was disappointed when they got there and then couldn't actually play). We currently have 24 players with that score (only 7 above 2 billion). One will just need to play one more time, and 6 who need less then 200,000,000 to get there. The Steam leaderboard caps at 2,147,483,647 - but you can see the actual scores in the in-game leaderboard (UPDATE 2020-07-07: Well, you could until we removed that old Steam-based leaderboard and replaced it with a shiny new leaderboard based on our new community server). The new Arenas Desert High and Icy High become available at 200,000,000 (currently 97 players have this), and 300,000,000 (currently 70 players have this). The should make the journey towards 1,000,000,000 a little more interesting. Plus, there's something special coming for those clouds levels (but I still need to make sure they run on all hardware - right now, these two even overwhelm my 2080 Ti, at 100% SS which is 50% less than what Steam uses as default).
- Level Loading: Fixed audio glitch where music stopped playing abruptly instead of properly fading out. Also fixed issue that music faded in way too slowly when entering arena selection area.
- Catchers: Reduced trail length; I had considered removing those trails altogether (or making them optional) but haven't done this, yet. But I'm still open to this possibility, so if you find these trails annoying, let me know. You can already disable those trails by disabling the particle effects - but that disables a lot of other particle effects as well, so probably not what most people want.
- Oculus native SDK: Improved Touch haptics for catching orbs. Sliders are still a bit wonky.
- Haptics: Almost completely redesigned how haptics work in the game. This was necessary because over time, even SteamVR changed how this was handled, so did Oculus, and each time a new approach came through hardware or drivers, I patched it just enough so that it would still work but never really took the time to look at all the different approaches and build one properly designed solution that handles all of them. Until now. It should feel better now - but if it feels worse, please let me know.
- Fixed issue that changing the environment broke the selected mechanic (this was due to the arena selection accidentally behaving like Story Mode, and Story Mode using its own presets).
- Haptics: Haptic intensity setting (on the Style & Mechanics / Guidance settings screen) now properly works for the Rift, regardless of whether you're using native Oculus, or Oculus via SteamVR.
- Avatar System: Fixed issue that Avatars were rotated when the world was rotated (actually, the Avatars were not rotated but the world was, or more precisely, the world never is rotated but the player reference space is rotated which makes it look as if the world is rotated, and then, when the Avatars are not rotated with the player reference space, it looks like the Avatars are rotated ... but that's just a technical detail). One important note about this: The avatar preview does not automatically adapt to the rotations. That way, you could load them, rotate the world around 180 and then see your avatar from the back, when facing forward. This is by design. If you want the default view after rotating the world (or UI), use Reset Avatars to re-layout the preview (with the new rotations compensated for).
- Level Selection: "Settings" are actually "Instructions", and now they are also called that. Cleaned up the instructions, too. Story Mode moved down and added "Preview" because this is just a preview now.
- Library Settings: Previously called "Browser Settings" but we call this area "Music Library", so Library Settings seemed like a more appropriate name. Also, the settings are easier to understand when the source is first, so moved osu! to the beginning of each setting that is related to osu!. And added BSMG Maps to the list of possible sources.
- Music Database: Major refactoring in the file scanners. This was necessary because the "MP3FileScanner" which had been introduced when we added procedural mapping was done quick'n'dirty by copying the OsuFileScanner and adapting the code to work for scanning audio files. As we're adding more file scanners now, that approach needed to be cleaned up (otherwise, we'd have three and more similar but different versions of the code, and figuring out the common code paths of three such things would have probably taken exponentially longer than doing it now).
- Library Settings: One common user error was changing the settings but not doing a Full Rescan. We now check if there were any changes in the music sources since the last full rescan, and if there were, we do that rescan (when you close the Library Settings).
- osu! File Scanner: There was a change in the osu!.db file format, which broke reading the osu!.db file directly. Step 1: We also have folder scanning which reads the beatmaps directly instead of relying on osu!.db. It is much much much slower and cannot get some data that is only available in osu!.db but it's better to use this fallback than failing. So, now, that fallback is used in this case, with a warning logged. A proper fix is also on the way.
- Library Settings: Fixed several corner cases where different combinations of song sources would not be appropriately handled.
- Music Database: Fixed issue that Full Library was not activated when using "Full Rescan!"
- osu! File Scanner: Updated osu-database-reader to version from 2019-11-08, which has the proper fix for reading the osu!.db file in current osu!-versions. The library has been significantly refactored, so this required quite a bit of fixing in Holodance to make it work again.
- Music Library: Fixed issue that beatmaps were not sorted by difficulty (they were sorted by version, which is the tag for the difficulty - but alphabetically sorting by those tags didn't make sense and therefore was a bug ... that is now finally fixed).
- Music Library: Fixed issue that beatmaps were not properly grouped until the settings screen was opened (which people usually don't do).
- Core Gameplay: Reactivated the "handedness" feature that we disabled in 2015. By default, orbs can be caught with "any", but if a beatmap defines handedness for orbs (catch this one with left hand, that one with right hand), it does now make it so and catching with the wrong hand is treated like a timing failure.
- Scoring Algorithm: Originally, the rotation bonus was based on the maximum rotational velocity of the controller between catching two orbs (like the positional velocity bonus). After introducing directional orbs/drops, the difference between the intended rotation and actual rotation was the only possible source for rotation bonuses - even though it only actually is relevant in a very specific gameplay mode. Now, when an orb does not define a rotation, we're back to the old behavior (maximum rotational velocity), and only for direction orbs/drops, the rotational difference matters.
- Core Gameplay: If an orb/drop defines a rotation, being too far off now fails that event. Also, the OctaDrop theme now has explosions for failed events.
- Scoring Algorithm: Also, ouch, the rotation bonus calculation between intended and actual direction was seriously buggy. Fixed.
- OctaDrops now explode when they are not caught with the correct timing, or with the wrong hand (when handedness is active), or when the direction is very wrong.
- OctaDrops now also support a PickupType "None", which essentially turns them into "avoid" orbs (like mines in StepMania, or bombs in other rhythm games).
- General UI: Fixed one issue that could cause the UI to break (laser pointer no longer selecting anything).
- OctaDrops: The new tracer/slider implementation messed up the combo indicators. This should be fixed now.
- Controller Haptics (for Sliders): This broke during the refactoring, more polishing on all platforms (SteamVR with Vive wands, Valve Index, Oculus Touch, Windows MR, Oculus native with Rift and Quest via Link)
- Scoring: OctaDrops are direction-sensitive, so playing with the OctaDrop-theme is actually more difficult than with regular orbs. So the OctaDrop score multiplier has been changed from 0.9 to 1.0.
- Haptics ... again ... fixed the bug that haptics didn't work properly for sliders when using SteamVR. Also did quite a bit of experimentation with different hardware (Vive wands, Valve Index controllers, Rift Touch controllers, Quest Touch controllers, Windows MR Acer controllers). Interestingly, Rift Touch and the Windows MR controllers behave best, even though both don't properly support changing the frequency (Rift Touch has two "frequencies", a low one, and a high one). Valve Index controllers provide best control (frequency works really well, one could basically play a song; intensity isn't as good as with Rift Touch, though) and I think they work pretty well. Vive wands work okay. Quest via Link is frustrating: Haptic feedback is barely noticeable even at maximum intensity (UPDATE 2020-07-07: This was apparently fixed by Oculus by now). Frequency does seem to have an effect but it's hard to say for sure if it really is an effect on frequency. Also, they frequently just stop vibrating when the vibration is "too long", or the frequency is too high.
- Laterality: Implemented proper handling of handedness/laterality by checking whether or not the beatmap has notes that are specific to left or right (hand or foot). This now also determines whether left and right hand controller have the same color, or two different colors.
- Directionality: Is now also properly determined from the beatmap.
- Obstacles: Obstacles are now fully supported. Currently, only BSMG maps define obstacles.
- For Slicing, we now have a plane-based target area, instead of the usual radial / sphere based target area. This was necessary to be able to properly align the obstacles
- Obstacles: Much improved how entering obstacles is handled. This is definitely worth trying.
- Settings - Cleaned up "Style Menu": "Presets & Themes" was a fairly misleading name for what that was. This is now called "Finetune Gameplay", which is what you can do there. Also, both "Gameplay" and "Guidance" didn't really have settings that were not already available via "Finetune Gameplay", so these were removed. We did keep "Old Tweaks" so you can still make some changes to how sliders are rendered and get some more info on what some of the settings in Finetune Gameplay mean, but this will probably be removed in a future version (and the settings will be put into a config-file for those who still want to mess with them).
- Settings - Finetune Gameplay: Re-arranged "Guides and Feedback" so that the items appear in the order of importance (I searched "Haptic Intensity" a few times because it was hidden at the bottom of that screen). Also added direct link (button) to Audio Mixer from Hit and Miss Sounds.
- BSMG Mapper: For punching, the positions of the drops aren't that great when we use the same as with laserblades, so the mapper now knows the mechanic that the map will be played with and automatically changes the locations accordingly. For punching, we multiply X-position with 0.9, and Y-position with 0.8 (obstacles keep Y as it is). As we use a (0,0) = center based coordinate system, this automagically results in the correct results (that kind of coordinate system also makes it very easy for us to flip maps horizontally and vertically).
- BSMG Mapper: For shooting, things are a lot more complex because not only do we need to skip double, triple and quadruple notes on a single hands at the same time (that one was trivial, of course) but also, obstacles and avoid notes (mines/bombs) need to be handled entirely different from the drones that are to be shot. Fortunately, the way our orb themes are designed, this was quite easy to add.
- Avatar System: Added support for the new Vive tracker roles for elbows and knees (available in SteamVR starting at 1.10.9 (currently in beta).
- BSMG and osu! Integration: Added an (i) info button to the beatmap details that opens the beatmap on osu! or bsaver.com with details on that specific map.
- Added a full Web browser with a few buttons to quickly browser to relevant pages to the flatscreen UI. This is useful for logging in to the various sites that we show with the (i) button.
- Progress: Fixed the progress display which sometimes got stuck even though there no longer was any relevant progress.
- Polished the main Flatscreen UI.
- Shooting Mechanic: That one was quite frustrating because pulling the trigger always creates a bit of controller vibration, and that causes unfair misses. When pointing at a drone/orb, that drone/orb is now kept in the buffer for a brief moment, so losing it while shooting will no longer cause such unfair misses.
- Shooting Mechanic: Also, the targets were too small. Now they are larger.
- Added support for 360° gameplay on custom maps: We've had 360° gameplay in Holodance since 2017 but until now, this was linked to the native songs in Story Mode (Levels 3 had and still has this), and to a few arenas that triggered the rotations every 8 bars (this has been the case in Sci-Fi Attack, Robots Attack and 360° Craze). Now, the rotation information from BSMG maps is also used: In arenas that have enough space for 90 or 360 degrees and just the generic flying notes source, the rotations are directly applied. In the arenas that have flying note sources in different locations (i.e. for specific rotations), the one closest to the current rotation is automatically picked.
- Music Library: Changed layout of main buttons to make it more obvious what to click. Also removed some useless clutter.
- Music Library: Added filters for Standard, Single, No Direction, 90 degrees and 360 degrees.
- Music Library: Changed layout of Quick Access area.
- Music Library - Full Text Search: Fixed a few bugs in the full text search. I'm honestly embarrassed about this one: Those were three bugs that completely broke the full text search in all but a few edge cases (read that correctly: it worked in edge cases and did not work in most cases). It took about half an hour to fix all of them. I had noticed that something was going wrong in that search but adapted by simply only ever typing the first three letters for one specific search. Ouch!
- Upgraded to Unity 2019.3.1
- Music Library: Added support for osu! collections and BSMG playlists.
- Music Library: Improved how image loading is done to avoid framedrops in VR. This had already been heavily multithreaded to do anything that doesn't need to be done on Unity's main thread on separate threads. Unfortunately, when calling sub-coroutines from async-coroutines naively, they end up being regular coroutines (i.e. they run on the main thread). For cases where this was the incorrect behavior while loading images, this is now fixed.
- Music Library: Improved how selections are visualized on buttons.
- Music Library: Button layout now automatically adapts to the button's contents. When there is only the title, that title gets a very large font. Title and one subline has a large title and large subline (but the title font being larger, and also bold). Only when two sublines are really necessary, we keep the old layout where all the text is comparatively small, and the title is only more dominant by being bold (and having a slightly larger font). This should make navigating the music library much more convenient.
- Music Library: Removed redundant information, e.g. with Browse Music, we have the number of artists, songs and beatmaps already on the main button (below the text "Browse Music"), and then again on the "Artists" and "Songs" buttons, just in different arrangements. That was just visual noise.
- Music Library: Fixed a really old and annoying bug that could cause artists being messed up in the artist lists (getting the song titles where the artist name should be, and the artist being in the small section where in this context, the song title should be).
- Music Library: Finally added skipping directly to the beatmap list when an artist only has a single song. Previously, one would first have to select the artist, and then the single song, which was a waste of time but the initial attempt of solving this caused too much trouble. Now it just works.
- Music Library: Added browsing by beatmapper.
- Time Dilation: No longer overriding when selecting a game mechanic preset. When we set time dilation, we want to keep time dilation.
- Scoring Algorithm: The directional OctaDrops based on osu! have a tendency to be unfair / uncatchable. This is very different from BSMG-maps that are designed for directions. Therefore, directional orbs from osu! maps cannot be failed. They do, however, give you a pretty severe score penalty (total score is reduced to 10% of the original score, so basically, failing an osu! directional orb does not break the combo, but also gives you almost no score, which I believe is a fair solution - if you want to maximize the score, you do have quite an edge when you manage to catch them).
- Play Sessions: Now keeping the flying note theme (regular orbs, OctaDrops, drones and so forth) in the play sessions and also leaderboards, as these are relevant for the scoring.
- Play Session: Fixed issue that compressed replay-data stored the whole buffer instead of just the actual data, resulting in unnecessarily large files. Fortunately, due to the compression, the file size didn't increase much ... but still, it was a waste (and also made processing those files in regular text editors like, um, Visual Studio, quite inconvenient.
Ok, this was just the stuff between November 25, 2019, and February 28, 2020. Ready for more? Here's something fun to watch to cool off from this wall of text before running into the next one:
梅雨野おもてぃー (omotea) is a VR & Music Gamer, and YouTuber from Japan that had a few Holodance videos on Twitter and YouTube (and probably Instagram - but I hardly ever checked Instagram until recently ... wait ... nope, there's another person that hardly uses Instagram - only has 7 posts there, I like).
Holodance 1.1 and 1.2 (Ninja Updates I told no one about)
Often, after a release, bugs show up that no one noticed before. Happens to me, too. Didn't have much time to write release notes in that phase. Well, ok, I'll admit I also silently added new features (I did post videos about those, though).
This covers the time from Feb 28 until April 10.
- Guns: Fixed sound for guns appearing and disappearing.
- Fixed Issue that in-game Play Area no longer adjusted properly to real world play area.
- Levels 4 and 8 (Desert Clouds and Icy Clouds): Made the airplanes shootable, added new achievement: Flygskam - Paying attention in Desert Clouds and Icy Clouds and symbolically, you have removed the yearly traffic of 12 airplanes, significantly reducing CO2-emissions! Also, you understand that while blowing things up in VR is fun, true warriors improve the world without using violence. Shooting airplanes in Holodance is actually choosing not to fly.
- Game Mechanic Presets: Added two experimental mechanics in Finetune Gameplay, Beat Orbs and Beat Drops. These two have the orbs not flying at you (or at least, not in a way that you could just put your controller where the orb lands and the timing will be right). Instead, it's more like a drum, where the orb is there, and you need to hit it in the exact right time. This only works for beatmaps that don't have too many events. (UPDATE 2020-07-07: These are no longer hidden)
- Modding: There was an issue with the mod buttons showing up, so it looked like no mods were available. Fixed.
- BeatSaver-maps: Quite a few of these maps have the artist in the creator field, and the artist field empty. That one's fixed. Some also have the two mixed up (but both filled); that's tough to fix on the fly without an artist database, which we don't have, yet. So that needs to be fixed at some later point in time.
- Avatar System: Added Avatar placement points to desert arena. Now it's possible to add avatars to the arena to make it more alive. Currently, this only works in the desert arena, and only with precalibrated tracking (hands, head, no feet, waist etc., yet). I'll continue working on this tomorrow.
- Avatar System: Full tracking support added. (UPDATE 2020-07-07: Huh? Didn't we always have full tracking support ... ah, ok, context: Before I added that, the avatar alter egos only used the precalibrated tracking for head and hands, now they can use the full calibration with feet, knees, hip, elbows ... if you have so many Vive trackers)
- Avatar System: Added placement points to all arenas/environments, tweaked for levels 1, 2, 3, 12 bonus 1, 2, 3, 4, 5 and 7, Zero Distraction. So this now works for: The Desert (5), Paradise Beach (1), Above the Clouds(2), Dolphin Party(3), Sci-Fi Attack (B1), Retro Clubbing (B2), Sci-Fi Tunnels(B3), Mutant Club(4), Trippy Tunnels(5), Spooky Town(7), Zero Distraction.
- Avatar System: Added placement points to the remaining arenas: Levels 4 and 8 (Desert High, Icy High), Levels 6 and 7 (Underwater World, Submarine Nightmare), Level 9 (Ice Desert), Level 10 (Robots Attack), Level 11 (Asteroids), Level 12 (Home of Mother Akash) and Full 360 Craze.
- Arenas: Polished Full 360 Craze. Before, it was barely a demo. Now, it's an actual arena.
- Avatar System: For some reason, Kohaku didn't behave with the new place avatars in arena feature. Helped her play nice.
- Music Library: Fixed issue that sometimes, Game Presets didn't show up.
- Laterality: Checking for left/right hand breaks the "kicking drops with your feet" mechanic. But really, it's always fine to kick a drop that was meant for your hand. But you do need to use the right foot (i.e. drops for the left hand need to be kicked with the left foot).
- Laterality: BSMG-maps now automatically adapt when you can only use one hand (for whatever reason, including having selected one of the single-hand mechanics). This is also useful for practicing more advanced maps with only one hand at a time.
- BSMG-Maps: Now also searching for available custom songs in Oculus paths, so now your custom level library should also be automatically picked up if you have BS installed via Oculus home.
- Improved how walls are handled. Especially in Full 360 Craze.
- Windows MR: Previously didn't support skeletal input which broke our Avatar system and the hands. Now, the Windows MR drivers support skeletal input but we still had to add this properly to our bindings for those controllers.
- Windows MR: At the moment (2020-04-10), haptics do not work due to a bug in Windows Mixed Reality for Steam. This was fixed in the WMR for Steam Beta from 2020-04-03, so if you don't get haptics, you might want to switch to the beta channel.
- Gun Mechanic: Fixed that laterality wasn't properly recognized for the drone orbs, resulting in gun gameplay not being sensitive to left/right.
- Guns: Fixed flickering of the decals in arena The Desert.
- Avatar System: Made more robust, auto-calibration now also works when only one controller had been switched on during calibration / incarnation. When the second controller is then switched on later, it all works.
Ok, here's another video, this time by チャイロ - Chairo. And it seems I'm in the perfect flow of timing because this video has just appeared a minute ago on YouTube (no kidding ... I basically just typed Holodance into YouTube to find those videos ... the ones by 梅雨野おもてぃー, I had already known ... this one is new to me, even though it's apparently a repost. Well, still makes me super-happy because this seems to be one of the few YouTubers actually using BSMG-maps when playing Holodance (even though it's the orb-theme, which is so old and I kind of don't like it anymore).
Anyways, here's something to cool off for before next wall of release-notes text:
Make sure to watch it, like it, share it. Too few people post videos of Holodance.
Holodance 1.3 (released yesterday)
Ok, the final stretch. I actually spent most of the time between April 10 and yesterday working on our beatmap editor. But there's still some good new stuff.
- Settings: Added Particle Effects checkbox to Finetune Gameplay because it's not obvious to search for this under Performance where it previously was (and still is).
- Settings: Fixed issue that Particle Effects preview didn't properly react to changed setting (particle trail kept on emitting particles even when disabling Particle Effects).
- OctaDrop Theme: Fixed issue that fail explosions were not effected by Particle Effects setting (i.e. the kept exploding even though the setting was disabled).
- Updated Unity to 2019.3.12
- Fixed Catcher appear and disappear animations. These had been broken for a very long time due to an internal offset that we added (which changed the hierarchy, which breaks animations in Unity). While at it also fixed the issue that the animation overrode the catcher-colors.
- Mutant Club: Major visual improvements. This one previously had an opaque floor, with some ugly artifacts. Now that floor is mostly transparent and lets you view the structure below, which now also rotates based on the combo. Also, a few of the walls had messed up UVs - those are fixed now. And tweaked a few of the textures.
- Major cleanup of the gameplay objects prefab (which previously only was half a prefab). This is primarily in preparation of the beatmap editor and multi-mechanic beatmaps, and also simplifies development in this area quite a bit ... but also had the risk of breaking things. So if anything with the controllers no longer works the way it did before, make sure to let me know!
- Streamer Mode: Fixed issue that postprocessing effects didn't work at all on the flatscreen when Streamer Mode was active.
- Tightened behavior of laser pointer holder: Previously, this would sometimes begin point in the wrong location, e.g. when enabling/disabling the catchers, or even during startup. Now this should always use the correct origin/direction in any given state.
- SteamVR 1.13.2 Issue: Most likely due to OpenXR support in SteamVR changing some of the values that were returned from the API, our logic for setting up the play area size broke.
- Added proper hand poses for all weapons (currently only supported via SteamVR, and in fact, only when you grab the weapons using Gravity Grip, which isn't available in Holodance, yet)
- Added YUR Integration (YUR.watch)
- YUR integration gives us: New leaderboards that are based on calories and burnrate, the uber-cool YUR.watch
- Updated integrated Web Browser: Was broken because Unity broke it, update of the browser fixed it. Me happy!
- Streamer Mode: Made "Smooth Player Perspective" much smoother, and much more like the player perspective.
- Added Rich Presence for Steam
- Added Rich Presence for Discord
- Updated Facepunch Steamworks to 2.3.2
- Updated Steamworks.NET to 14.0.0
- Made Global Leaderboards available via Game Progression
- Removed the old Global Leaderboard from 2016 and replaced it with the modern one from Game Progression (because Game Progression is kind of hidden).
And I'll end this with an awesome video by Sean Driskel aka Cmoche (on our official Discord), who is one of the few people that frequently streams Holodance on Twitch and also has quite a few Holodance videos on YouTube. Make sure to follow, like, share!
This one is a song by Muzzy, one of my favorite artists (and one that I, in fact, found out about through Holodance, while looking for awesome osu! maps). And it's in my favorite mod of Trippy Tunnels (we need more psychedelic mods like that, pretty please!)
Enjoy!