Crazy load times

Here’s the thing: CASC can’t be cleaned up like that without reinstalling. It literally cannot. It can’t even, nor can it odd either. It has to do with how the data is stored and appended. In order to achieve a “fresh” install’s speed, both the data and index files have to be contiguous. That means all invalidated data is removed, and the files rebuilt. Guess what that’s going to do with that shiny SSD of yours. Yep, wear it out.

When CASC files are updated, the data files themselves often (but not always) retain the invalidated data, and the new data is appended. Whenever this is done, the index file has to be appended, both to add in the new node references and to invalidate the old node references. And in a fun twist, this is unique for every installation. Yep, the patching occurs differently for every single person. Do you really want to try and rebuild the CASC database under those circumstances? No, you don’t. That’s one of the reasons why scan and repair fails so often. It can’t repair a lot of problems encountered under CASC. Instead, it will, you guessed it, literally replace those files. In extreme cases where the end user has not done a fresh reinstall for a very long time (i.e., more people than you think), those data and index files are so riddled with changes that there is literally no feasible way to fix them without just flat out replacing them.

Then there is the enumeration issue with CASC. CASC shares an Achilles’ Heel with another filesystem: APFS. Both use a damn near identical enumeration system, wherein as a file is patched, a new b-tree/extents node dataset is added to the file’s index (ironically files are now indexed by files…which is horribly inefficient for gaming, but that’s a gripe for another time). As a data file is patched more and more, the amount of enumerated index nodes increases, oftentimes, dramatically. A single patch cycle, due to how CASC (and APFS) work, can actually create dozens, and even hundreds of new nodes for each and every one of its data files. As you’ve probably surmised by now, having to keep track of that much data is not conducive to speedy operation. Once files are that fragmented, the only way to recover the lost speed is to literally wipe them and do a fresh install, because that is the only way to re-establish a set of fully contiguous, minimally enumerated files.

CASC is far more complex than you’re giving it credit for, and no, it isn’t efficient at all. It allows things such as slipstreaming a patch while a game is live (WoW does this sometimes, as does D3 on rare occasions), but unlike other older filesystems, the features it brings comes at a cost, and that’s speed. And that speed degrades over time, which is why a reinstall every few months is recommended.

The good news? Reinstalling couldn’t be easier. You don’t use the Uninstall button in the Battle.net app. In a grand twist of irony, manually deleteing the topmost /Data folder in any of Blizzard’s main game folder(s) nukes the game files (e.g. C:\Diablo III\Data). Delete that folder and then launch the Battle.net app after you’ve emptied the recycle bin/trash, and just click the Update button. Yep, when deleting the files manually, the Play button becomes Update, and it just downloads a fresh, contiguous set of files for maximum performance, unpacking/uncompressing notwithstanding. The beauty of doing a reinstall this way is it actually preserves your game’s settings, and in the case of WoW, all of the addons and their settings as well.

This is also part of why I tell people not to use the beta folders for a base for the launch day or future retail patch cycle rollouts. Performance will be heavily degraded if doing so, with the other part of why I tell people this being that corrupted/invalidated files can and do cause issues when using them as a base.

If you want full speed (sans unpacking) with CASC, the only way to get it is with a fresh/clean install. Thankfully, as I noted above, that’s done very easily with the way modern Blizzard games are structured.

Edit: Oh, and there is in fact a post-patch/install “reclaiming disk space” phase. Want to know what it’s doing? It’s literally writing files anew, while retaining the fragmentation. Yay extra write cycles for no net gain since, you know, all SSD controllers have built in garbage collection.

:woman_facepalming:

4 Likes