Developer postOriginal post (opens in a new tab)

Summer Sale; Holodance V0.8.0c5: Huge Update but WIP

So, first of all: If you don't have Holodance, yet, now is a really good time to buy it because ... 30% off ;-)

For a little more than two months, we have been doing a fairly huge refactoring and cleanup, with a few releases that only went to the alpha-branch. The good thing about this is that I think by now, this version is so much better than the previous one on the default branch (V0.8.0b8), that pushing it to the default branch is the right thing to do. The bad thing is: It's still work in progress, and it shows.

Most importantly, we've had a rather awkward way of handling performance in Levels 1 and 3 in the old versions. It was awkward for many reasons, and it didn't quite achieve it's goal - but at least in the low-performance settings, the levels were playable. There is a much better approach coming that should work for everyone (including PSVR, once release for that platform, which is the lowest end we'll ever go) but it's not in that current build. TL;DR: If you don't have very high-end hardware, you might want to avoid especially Level 1, and probably also Level 3 for now. This is "Story Mode", and in general, at the moment, I'd recommend playing "Free Mode" instead.

Story Mode has a very long story (in terms of its development) parts of which I have already shared ... apologies for everyone buying the game for the dragons for making you wait so long, and thank you for your patience! We do have updates coming there as well, for V0.8 but progress has been terribly slow. If you know good animators that can handle Blender and dragons - please send them our way ;-)

The other known issues are less severe: The UI still has a few placeholders / previews (in particular theme selection and avatar selection, the former is already working if you use the dropdowns instead of the buttons, the latter not); and the file browser is still the old one.

I'm super-excited about the new file-browser. Browsing huge libraries of music is quite a challenge, and the old iPods had a really awesome approach to solving this (the one with the wheel, if anyone is old enough to remember ;-) ). Many years ago, I used a similar approach in a customer project to design a movie browser (it was probably the first mobile movie-theater ticket reservation system with 3D seat selection ... but it was before iPhone, so it failed fairly miserably ;-) ).

So I think you'll love the new file browser once it lands - but it's taking longer than anticipated.

Enough bad news and requests for patience, here's what you get with V0.8.0c5 assuming that you play it safe and use the default branch (not alpha or beta), in reverse order, so newest things first:

New Achievement Icons

These are not complete, yet (and I'll actually be uploading a few moments after I post this) but it's a style much more consistent with the current version of the game. If you ever had a look at the old achievement icons (some of those are still there), you may have noticed I did those, using some existing images and mediocre Photoshop skills. Now, Antonia is working of them, and unlike me, she is an actual artist ;-)

We haven't fully determined the style, yet, so if you have a look, let us know what you think.

Major improvements and bugfixes for Mixed Reality

If you have a Vive tracker, you can use it without making it pretend it's a controller. Using both 3rd controller or Vive trackers should be significantly more robust now because we make the most distant tracked device the camera device (one super-annoying issue with Mixed Reality setups is that often, SteamVR will make your left or right controller the camera, and the camera controller your left or right controller, which always is a hassle until things settle).

Finally fixed the "particles have black quad around them"-bug (sorry, Ruu, for having that in this long).

Also, you can now rotate both the UI and the play area from within the game, and set it up specifically for Holodance (even when using SteamVR Advanced Settings). Currently the osu! file browser rotates with the world because it still uses the old approach to UI but the pause / settings menu works.

Added a few new options to the cfg-file:

fps=30
renderPostFXforVRNot=True
renderPostFXforMR=True

fps limits the fps for the Mixed Reality output. Don't use it if you record / stream with 60FPS. But if you use 30FPS, it may help making the game more playable in VR. renderPostFXforVRNot makes the game look much worse in VR by disabling most effects - but this frees up GPU-time for rendering the Mixed Reality output. That can then be used by renderPostFXforMR which will make the Mixed Reality output look significantly better.

Oh, and Mixed Reality is actually working again (the memory allocations in previous versions broke it and no one ever told me - shame on you!)

Also, the water in Level 1 and the lighting effects in the clubbing level now also work properly in VR. The fog in the clubbing level is not working properly, yet.

There is a lot more coming both for people doing Mixed Reality as well as people streaming without Mixed Reality. Let me just say this much: Those Vive trackers totally rock and there already is incomplete stuff in the game showing where we're going ;-)

Smoothed Controller Movements

You should hardly notice it ... if you do, let us know. This is part of a complete rework of the tracked input system. In a nutshell, we went back to how the very first versions of the SteamVR Unity plugin were designed, with "tracked objects" that could have different roles. Except we do this in a modern way (there were good reasons the SteamVR Unity plugin eventually went another approach for "common developers" - but the APIs are still perfectly suitable for this approach). So I'm saying a little more than "this much": While primarily designed for "stuff" like the Vive trackers, this also helps with supporting Oculus or PSVR natively, or even mo-cap suits.

Package Size and Unity AssetBundles

We had the game running with AssetBundles, and we had the complete package size down to 3GB (the previous release version had 8.5GB on your harddrive). A lot of time went into making this work, and it's not completely wasted because some of this is needed for the upcoming Steam Workshop features. But yesterday, before releasing a version to the default branch, I decided to go back to "normal builds".

So the build size is back to about 5.5 GB. The main problem with AssetBundles was that while the package size was much smaller, among a huge list of other problems, it completely messed up the SteamPipe patcher.

So, we've had tiny patches (just a minor code change), resulting in 500 MB patch downloads. If you paid attention to our usual patch sizes, they are usually fairly small even when we make big changes. That's thanks to Valve who created a really awesome patcher. Shame on Unity for breaking it with their AssetBundles (and of course I did try it with BuildAssetBundleOptions.DeterministicAssetBundle but it just ain't good enough).

It was worth a try and I learned a lot. The only thing that sucks about it is that this time could have been used to finish the new file browser a few weeks earlier. But if we would have changed to AssetBundles, we would have had to do it as soon as possible, so that's how that priority came about.

Major Scoring Improvements and Detailed Stats

I wrote a lot about this in the V0.8.0c4 release notes. This is an area where your feedback is greatly appreciated!

At some point in time, we'll move to another leaderboard server and before that happens, our scoring system needs to be really solid. So please, if you like scoring stats, dig into those that Holodance gives you, play, analyze, let us know what statistics you're missing and what you feel should be changed or where you see any bugs.

Holodance is designed in a way where we totally welcome players that don't care about their score at all (we have "Zen-mode" for good reasons). Obviously, I don't expect any of you to dig into this. But Holodance is also designed for highly competitive players that want to do everything in their power to optimize their score. Now is your chance to help us design the scoring algorithm in ways you will enjoy most.

Major Work on the UI

The pause / settings menu already has the new style which will also be the foundation for the new beatmap browser. There is still more polishing happening here but the direction is quite clear.

We did have an announcement on this showing early work in progress a while back: Preview: Holodance V0.8.0 UI Update

Also, we have added local orb scores. Some people don't like them, so you can switch them off. In fact, there are several settings for those.

Also, loading levels has a completely different UI now that gives you a lot more info about what's happening and should be much more pleasant to look at ... which should make the waiting time less annoying.

Much Improved Loading Times

This is a huge one. The game should start up much faster (compared to the previously released default build - those optimizations had been in the recent alpha builds).

There is a lot to say about this ... and I have already said it here: Upcoming Startup Time Improvements

Different Catch Area Grid Styles

The old one was so annoying! Now there's just an outline, just the sections, the old dense one, and two sci-fi extra ones. This was long overdue!

Disabling Sliders and Spinners

I love Sliders and Spinners - but not everyone does. Now you can switch both off individually (Spinners are kind of rare, so some may want to keep them, even when they don't want Sliders ... and some people may love Sliders but not Spinners). Be aware that both Sliders and Spinners give you a higher score, so disabling this will put you lower on the leaderboards.

Updated to Unity 5.6.1

This allowed me to enable Graphics Jobs again which improves performance. However, watch out with Level 01 - that one is actually worse than before. Also, the water levels have an issue with the underwater fog which is not applied to the terrain. Sometimes I kind of hate Unity for breaking so many things with each update. But 5.6.1 is doing pretty well so far.

Bugfixes

We also fixed a lot of bugs, like the nasty "screeching" sound that many beatmaps had for the first Slider, or the colors issue where orb colors more or less randomly changed ... or a bunch of bad things about scoring that prevented everyone from improving their leaderboard ranking because even when you played better, you'd get a lower score.

Full Release Notes in Chronological Order

These are the changes since the last public release (V0.8.0b8) from April 11, in mostly chronological order:

Holodance 0.8.0b9: Rotating play area and UI (prototype)

  • Prepared a major scene cleanup by writing an editor script that reliably reliable gives me all objects that have references to an input object. We currently have a lot of intra-scene dependencies and it's time to finally clean those up in a major round of decoupling.
  • Fixed loading screen always being oriented towards the original forward direction, regardless of where they player may have turned the world / play area, resulting in the loading screen appearing to the left, right or behind the player, when players have changed world / play area orientation.
  • Added background sound for loading screen.

Holodance V0.8.0c1 - A New Package!

This was a huge one, and there is a limit to how many characters I can add to this news entry ... so ... if you want to go through that list, check out the alpha-release notes: Alpha-Branch: Holodance V0.8.0c1 - A New Package!

V0.8.0c2 - Small Fixes, Orb Score HUD added!

  • Added more timing stats to the after-session score stats: Notes caught too early, notes caught too late, notes caught within the "perfect" range, notes caught within the allowed time range, notes caught but too offbeat (so they counted as miss). Also, the minimum, average and maximum distance of where the orb was caught compared to where the ideal position to catch it (for perfect timing) would have been.
  • Increased the maximum distance bonus for orbs from 200 to 400, for sliders from 200 to 400 and for spinners from 300 to 1200. Also adjusted the off-time penalty curve to be more forgiving, and the distance curve a little more friendly.
  • Added an "OrbScoreHUD" that shows the added score, and if you are too late or too early, also yellow arrows. If you miss an orb because you are so offbeat, the get red arrows and no score.
  • (Hopefully) fixed sporadic issue that caused the controller to jump about once every second when the game was paused, instead of moving continuously regardless of time.
  • Added rhythmic bumping for the player location grid at the center of the play area. This now kind of acts as a visual metronome that only spectators will see. And players not skipping through gaps in beatmaps. Also, this will show when beatmaps don't properly define the tempo of a song, which is very rare with current beatmaps, and kind of frequent with older ones.
  • Added score from orbs, sliders and spinners to the stats window.

V0.8.0c3: OrbScoreHuds can be switched off, scoring improved

  • Added a better texture for the trails of the controllers and sliders that does not have those extra lines that the previous texture had.
  • Added separate base score for sliders. This is the maximum score without any bonus you can get when you spend the full time in the moving slider orb. Current base score for Sliders is 600, so it's twice as much as for orbs. This should make it possible to beat the current leaderboards on slider-heavy beatmaps.
  • Added a third trail renderer to the catchers and trail renderers are now only active when you have a combo (2x = 1 trail, 3x = 2 trails, 4x = 3 trails).
  • Added "Orb Score HUD" settings to Style settings. You can now decide whether Holodance should show the timing bubbles (green ellipse = perfect, yellow left/right arrows = a little too late/early, red left/right arrows = missed because too late/early), or the orb score (score directly at the orb when you catch it), or both.
  • Reverted location of "Orb Score HUD" (and timing bubbles) to the initial implementation where the appear exactly where the orb disappeared (instead of approximately where the controller is). This makes those locations significantly more predictable ... except in the case of Sliders where the appear where the Slider began (which is not what one would expect).
  • Using the normal orbs for Sliders until the Slider has arrived at the player (then we switch to the followTransform that the player has to follow). This fixes the issue that the combo-based rotation was not applied for Sliders which was kind of lame.
  • Added new logic for missed orbs that shows the relevant arrow at the catcher when an orb was completely missed. At the moment, this simply takes the first hand because we cannot really determine with which hand the player should have caught that orb.
  • OrbScoreHud now properly follows Sliders and updates the current score.

V0.8.0c4: Added Text Output for PlaySessions, Improved AssetBundle Loading

  • Added progress to loading asset bundles (before, loading the asset bundle would just finish at some point in time, without actually having the progress bar show that progress)
  • Added verbose logging to scene loading because we sometimes get stuck in the level loading screen and it's not quite clear, yet, why or even where exactly this happens.
  • Fixed issues with OrbScoreHud - finally this is working as intended for orbs, Sliders and Spinners.
  • Missed orbs and any orbs caught with your head now have an OrbScoreHud that is based on your head position instead of the orb position. Otherwise, those are fairly hard to see or directly in your face, both being fairly annoying.
  • Updated Graphical Assets for Store - we now finally have a banner with actual gameplay in the background screenshot. Also fixed minor readability issues with the small capsule image (the "H" of Holodance was in front of a fairly light blue background making it kind of hard to see/read).
  • Switched to Unity 5.6.1p3 (from Unity 5.6.1p1), which will hopefully fix some Unity-related issues.
  • Moved UI screens out of AssetBundles - this was giving me way too much trouble. At some point when the UI is very stable, we will put those back. Until then, they are part of the main build.
  • Added Holodance version to PlaySessions and recordings. We did already have a version number but that was only meant to be increased when the format changed. But the data stored in those sessions is based on a specific release of Holodance, so it's important to keep that info.
  • Added beatmap hash to the play session. This is actually the most reliable way to look up a beatmap. Should also use this for the leaderboards.
  • Further improved statistics: Added percentages of orbs / sliders / spinners and average score per caught note (orbs, sliders, spinners).
  • Fixed issue where you could get stuck in the loading screens when you left an environment a fairly short time after entering it (and possibly under some other circumstances). Timeouts for the rescue!
  • Unity 5.6.1p3 apparently fixed the fog issue we've had in the underwater levels ... at least in the editor. Unfortunately, fog is still broken in the build, so I keep on investigating this rather annoying issue.

Holodance V0.8.0c5: Huge Update but WIP

  • Fixed typo in stats (there was a "]" missing), and also put leaderboard rank change last again, because this comes in a little late, so putting this up in the list of stats can result in the values not being correct (so you could get "still #0" even though you actually have a better rank due to this session).
  • Made green of "perfect" bubble transparent because otherwise, it's obstructing the view too much.
  • We now keep track of whether a session was cancelled or not, and if it was cancelled, at what time it was cancelled.
  • Fixed bug where using "Skip to End of Song" in Pause menu would not let you play that song again (because it would always skip to the end of the song automatically, right at the beginning of the song).
  • Removed UI and World Rotation from "Stats after Session" because it's not really necessary or even useful on that screen.
  • Removed details stats in "Stats after Session" for Story Mode because this is really only interesting for Free Mode (it kind of breaks the style of Story Mode, too).
  • Fixed several issues in Story Mode that were still a result of the big refactoring, e.g. the leaderboards were completely broken, progress was completely broken, and selecting a song (Level 1) did not work properly.
  • Level-11 from story mode was missing.
  • Re-activated "Preload Audio Data" for the Story Mode songs. This results in a slightly longer level loading time but prevents the wait time when the song actually starts (which was especially annoying in Level 6).
  • There were still some issues in our build process concerning AssetBundles - hopefully fixed all of them this time. The good news: Loading times for environments and also during startup are significantly reduced, and overall game package went down to about 3.4 GB. (edited)
  • Deleted hidden objects from various scenes that created false dependencies bloating the AssetBundles.
  • Updated PlayWay Water 2.0 to the most recent beta (from 2017-06-09).
  • jashan [5:09 PM] Moved even the base scene into AssetBundles, now we are below 3GB with the whole game.
  • Fixed Graphics settings so we no longer strip shaders (or shader variants) that are actually used in AssetBundles.
  • Trails were not properly switched on/off based on the current combo-multiplier.
  • Fixed Material assignments because fog still didn't work quite properly for many materials in the water levels (even though the terrain now did work, which is great).
  • Fixed bug in calculation of "pre-roll-time" that could cause songs to get stuck (happened in Level 10).
  • Fixed a super-nasty bug where "More Effective Coroutines" simply didn't start a Singleton-Coroutine in Level 11 for no obvious reason. Making this a non-Singleton fixed the issue (after about 2 hours of debugging).
  • Added much more robust handling for mixed reality setups that supports both a third controller as well as native Vive Trackers (at least for Holodance, you don't have to reflash your Vive Tracker to work for MR).
  • Controller movements are now smoothed a tiny little bit which should also help with tracking distance covered more correctly because jitter is no longer added.
  • Mixed Reality cam is now also a little smoothed.
  • Physics time is now in sync with global time.
  • Fixed a bug that caused the in-VR UI to break in Mixed Reality because the SteamVR Plugin changed the render size of the laser pointer camera resulting in a weird offset.
  • Fixed another super-nasty bug caused by "More Effective Coroutines": Our Mixed Reality feature didn't work at all because those "singleton-coroutines" don't run at all.
  • Fixed issue with FOV of Mixed Reality cam (this was broken by Unity 5.6 ... thanks Unity Technologies for constantly breaking stuff with your "smart" approach to supporting VR).
  • Fixed issue with impact particles in Mixed Reality having ugly black quads around them.
  • Fixed Mixed Reality issue: Render Texture was not anti-aliased because it was directly assigned to the camera and then you cannot make any changes anymore.
  • Added new configuration "fps" to externalcamera.cfg. You can use this to reduce the number of frames rendered for Mixed Reality. We use 30. If you are streaming / recording with a higher value (e.g. 60 FPS), you probably should not use this and go with the default instead (render with every frame).
  • Fixed issue that the Mixed Reality cameras were not properly updating, which resulted in no water appearing in Level 1, and the lightshow not working in the clubbing level. The fog in the clubbing level still doesn't work properly in Mixed Reality. Everything else does
  • Added config-settings: "renderPostFXforVRNot" - this is an optimization for Mixed Reality that will disable all special effects in VR when you have activated Mixed Reality. "renderPostFXforMR" is kind of the opposite and is a workaround to PostProcessingBehaviour causes SteamVR Mixed Reality alpha mask to break (render white) #54. This does have quite a performance impact because it adds one render call. But it does improve the quality of the Mixed Reality footage if your machine can handle it.
  • Due to Unity Asset Bundles throwing off the Steam Pipe Patcher, making build times only significantly less predictable (instead of much quicker most of the time), and causing all kinds of extremely annoying problems like sometimes breaking materials, shaders and textures, we're reverting to "normal builds". Unity's implementation of AssetBundles really leaves a lot to be desired - it's quite a mess, with lots and lots of pitfalls. We can still use them for Steam Workshop as planned and much of the work we've done will still be useful for that purpose, even when we won't use AssetBundles for the "regular game". This does increase our build-size back from around 3 GB to 5 GB because AssetBundles are compressed. But this does not change the download size for the game much (because Steam also compresses). While Holodance will consume an extra 2 GB on your harddrive, which is quite unfortunate, not breaking the Steam Pipe Patcher by avoiding AssetBundles has the benefit of updates usually being very small (during development of V0.8.0c5, we've done plenty of builds that we uploaded to Steam, and while a few only took around 50 MB, and some "only" 500MB, more often than not, the patches were unnecessarily large, often in the GB range - and that's stuff you'd have to download each time the game updates and Unity decided to change the layout of the AssetBundles so the Steam Patcher thought this was all new content ... while it really wasn't).