Alpha 54b was meant to be a small and quick patch. That didn't quite work out ... but this version fixes quite a few bugs, adds a tiny bit of polishing and does not have the bigger upcoming performance improvements, yet (that's what Alpha 55 is all about, well, actually ... but fact is: 54b does have some improvements on that end, too ;-) ).
So here's list of the changes:
- Fixed bug that resulted in the player height not properly being used to adjust the height of the target area.
- Small improvement for "floating arc mechanic": This now shows the "touch area", impact point and timing laser while approaching (same behavior as normal orbs now)
- Fixed a bug in how levels were loaded by ID that caused several issues in the "spoiler levels": The texts of "unlocking" tracks in Level 6 were all wrongly saying something about unlocking tracks in Level 11 and finishing level 6 as well as unlocking any new track in Levels 10 or 11 caused the game to get stuck in the level.
- Fixed a bug in how leaderboards were loaded: The old code stored the leaderboard result from loading in a "global" member variable which could result in race conditions where loading one leaderboard could overwrite another leaderboard loading procedure still in progress which sporadically resulted in scores of the accumulated highscores being written to level highscores (very bad) and also sometimes in leaderboards not being loaded properly when displayed to the player.
- No longer switching left/right hand based on SteamVR while playing a song. This makes the left/right hand achievement much more robust.
- Muting the currently played audio track can now disabled via the settings (Pause / Advanced Style Settings or via Settings in level selection scene)
- Added a setting "Audio Timing Feedback" to "Advanced Style Settings" so you can switch off the audio feedback on orb impacts if you find it annoying (no one complained so far but without it, someone might in the future)
- Fixed incorrectly shown states in "Advanced Style Settings"
- Fixed bug that prevented "Show Impact Points" to work when "Show Target Lines" was disabled (in Advanced Style Settings)
- Performance: No longer preloading levels. This trades much faster startup time (up to about 13 seconds before, about 9 seconds now; running on a SSD) against longer level loading time (instantly before, up to three seconds now, depending on the level). More importantly, this significantly reduces memory consumption of Holodance (3 GB after startup before, 1.35 GB after startup after). One drawback is that we now get quite a few missed frames when loading a level - this will be further optimized in upcoming alphas.
- Performance: Added a hard triggered garbage collection before fading back after a level was activated. This is a first, rather easy to implement performance "optimization" that hopefully will fix the hiccups that occur after a little while of playing the game.
- Performance: Did some initial profiling and discovered several areas where we can significantly reduce both allocations (which will result in garbage collection which can result in hiccups) as well as time consumed in specific frames (e.g. when orbs are created / destroyed). Add a memory pre-allocation on startup which, together with GC on level load should significantly reduce the hiccups due to garbage collection. The "real" performance optimizations, however, will land in Alpha 55.
- Fixed bug that caused song time not being correctly updated on tracks that use the "floating arc mechanic" (e.g. in Level 6)
- Fixed bug that caused Vayusah's voice to be cut off at the end of the level when a track was played successfully
- Fixed bug that caused target area to always be ahead of the actual orbs. This one was rather tricky to fix because the target location is determined when the orbs are instantiated, one bar before impact which equals 2 seconds at 120 BPM, and the target area was moved with the generation. The solution was to have another target area that is moved precisely the same way as the main area but with a delay that matches the time the orbs take from where they are instantiated to their destination (where you catch them). It was a tricky fix, but a really important one because with that bug, the target area was actually kind of misleading.
- New Intro Animation for Apastarrr that has a little more "variety"
- Added a very simple manual calibration for the target area. This can be activated in via the settings and pause menu, using the "Player Height?" area, button "Finetune". Known issue with this: This also offsets your head target position, so you may not want to set this too high in Level 3. Also, the setting is currently not stored persistently, so you have to do this once for each session.
- Worked around a rather strange Unity bug that prevented the music from starting when skipping in Level 2 (first session): When activating the "midi"-object and immediately starting playing the song, Unity got stuck in a Coroutine on a yield return new WaitForSeconds(...) ... this should never happen but it did. Workaround: After activating the midi-object, before starting playing, yield for a frame in the main object (that already was active).
- Added skipping to Level 3
- Introduced a "balance multiplier" for each track that can later be used to balance maximum the score of each track to increase with difficulty. Currently, those scores vary rather wildly, with very difficult and advanced levels giving you a comparatively low maximum score while some very easy levels may give you a very high maximum score. During Alpha, this is okay but once we enter beta, we'll use this factor to fix that.
- Updated the "Early Access" texts on the store page as these were fairly outdated: This still had "only first level is complete, 2 and 3 missing significant parts" in there, which hadn't been true for about a month or two. Also, we originally anticipated to complete the game within 2 to 3 months after Early Access started (but already said it may take long). Realistically, it will be 4 to 6 months, so that would be 2 to 4 more months from now.
