Essentially this is how I'd like to see this stuff implemented in the future. I'll use Steam as an example, but it could apply to any launcher or application itself.
- User purchases a game on Steam
- Begins downloading a game, time passes...
- Download finishes and Steam automatically kicks off a batch file which begins the shader compilation process in the background (think of it as just another "pre-requisite" required to install)
- Progress of pre-compilation is detailed in the downloads tab
- Pre-compilation finishes and automatically closes
- Game is *actually* ready to play when you click play
I honestly think this is the best way to go about it! It's an unfortunate reality that we have to do this on our own machines... but the goal should be to make it as frictionless as possible for gamers. I think perhaps removing the large initial pre-comp process from being "inside the game" and moving it instead to the "download/install/decrypt/compile" stage where perhaps it more suitably belongs, will be much better. People know and understand that things aren't ready yet when Steam is still downloading/decrypting/installing... but when they finally get into the game.. they expect the game to be ready. I think doing it this way would help a lot. Because I know for myself personally, if a game is downloading, installing or decrypting... I'm on the net messing around or listening to a video or something while I'm waiting, and you don't feel like you're just wasting time as much. When a user gets into a game, they expect to be able to play right away.. that's the way it should be.
Yes exactly this. It can take an hour or more to download and install a game so a few extra minutes (even 20) at this stage is far less intrusive than finally thinking the install is complete and you can play, only to be met with another wait.