Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Problem with 'white screen of death', seems to be nvidia cards...

Discussion in 'Scripting' started by astracat111, Aug 26, 2019.

  1. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    Hey there,

    Recently after sending out playtesting copies of my game some players have been getting a white screen of death. Here's a video of a playtester having the problem:


    I've found a topic that seems to have a similar problem:
    https://forum.unity.com/threads/aft...ws-a-white-screen-and-no-unity-splash.260831/

    Playtesters have reported that they have GeForce cards. This particular player was using a GeForce GTX 750 Ti, and two others were using GeForce GTX 1080s. I myself have a laptop version of the GeForce 1050 Ti and I'm having no problems on my end.

    My thought was that it was a shader problem, so I switch to OpenGL. One of the players wrote in to me today to tell me that it was still happening for them. So now I'm completely stumped at this.

    I'm using Unity 2018.4.2f1. I'm wondering if it's safe to move the project over to DirectX 12 (It says after all 'Direct3D12 (Experimental)'. I'm not really sure what experimental means. I would have DirectX 12 as my primary one, and then it would fall back to OpenGL I guess if I have that selected secondarily?

    As you can see, another problem is that the sound is coming off really insanely loud when he selects new game............................yeah............I'm not sure what would cause this at all. This was the same problem that was reported by another player as well. I can't really get a read on what the problem would be other than a shader problem but then there's this sound problem as well. All I know is that the three players that reported this same problem all had GeForce graphics cards.

    Here is one of the let's players specs that wrote in by e-mail today:
    "
    - AMD Ryzen 7 2700X Eight-Core Processor, 3700 MHz
    - Windows 10 64bit Home
    - NVIDIA GeForce GTX 1080 Ti
    "

    Something VERY odd is that both people that had the problem were from Germany. Would that have anything to do with it? Every other let's player that tested it had no problems in running the game.

    Thanks for any help you can provide.
     
    Last edited: Aug 26, 2019
  2. Brathnann

    Brathnann

    Joined:
    Aug 12, 2014
    Posts:
    7,144
    It can be tough when you can't repeat it, but I suggest using Unity's crash analytics (I think they call it something else now) but it will send errors and crash reports to Unity's analytics. We use it in our live apps as it can be hard to get feedback of issues.

    If it's test builders that you can easily direct, I'd look at a runtime console. We use log viewer at work sometimes, it's a bit out of date, but it's easy enough to remove the code that targets the web player. There are also others as well.

    Otherwise, next thing is to look at what nvidia drivers everyone is using. And possibly expand your pool of testers to see if there is a pattern. (Also see how they connect to their monitors, etc)
     
  3. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    My thought is that somehow there are some sort of German version of the Nvidia drivers that are throwing off the shaders and the sound fx at the same time for some reason. Perhaps it's a German PC or Laptop manufacturer? It's worked with all of the other let's players I had contacted so far.

    There are three audio sources, one for BGM, one for ambient SFX (AMBSFX), and one for just SFX.

    The sound that plays too loud is run through this method:
    Code (CSharp):
    1. audioSource.PlayOneShot(audioClip, volume * masterSFXVolume);
    This has worked tried and true for everyone else that's tested it. It must be a driver problem.

    The only thing I can deduce as for the white screen is just that the Nvidia drivers are conflicting with the shaders. This has happened before with bloom and screen effects when using OpenGLES for me, but on my setup, using a laptop with a GeForce 1050 Ti, I've had no problems, and I haven't on the Integrated Intel graphics as well.
     
  4. Yoreki

    Yoreki

    Joined:
    Apr 10, 2019
    Posts:
    2,590
    Is it really a white screen? In the video it looks like a sort of cloud animation, even with somewhat fitting sounds. Maybe it's just weirdly organic video compression artefacts, but i have a pretty good IPS monitor, and it's definitely not pure, still white. On the other hand, the picture in the thread you linked actually looks like a pure, still white color.
    So similar to the tester in the video, i actually thought that this is how it's supposed to look like for a moment.

    I'm assuming you have no scene / animation that plays at the beginning, which may explain these visuals if it got stuck or something? Does it happen when the intro is skipped?
     
    Joe-Censored likes this.
  5. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    I thought I was seeing some cloud intro as well, and kept waiting to pop out of the clouds.
     
  6. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    Hmmm...so it could be a coding error....I have no way of debugging it, I can't afford to pay a tester as well until probably 2 or 3 weeks from now. I'm not sure if I should delay the game granted it's coming out at the end of this week....

    My solution for now was to create a launcher where you can launch one of the different versions of the game, OpenGL or DirectX 12...
     
  7. Yoreki

    Yoreki

    Joined:
    Apr 10, 2019
    Posts:
    2,590
    Are you able to ask one of your testers (preferably the same one from the video) if the problem persists if they skip the intro? In the video at least, both times he selected to watch the intro.
    That way we could start to narrow down the problem: if it does not occur when the intro is skipped, then you are sort of lucky since the problem is (probably) only related to the intro. Not good for story telling, but it shouldnt affect the launch too badly (especially if you mention it with a notification on the mainscreen and reassure that it's being worked on).
    I feel like people are very understanding with indie-games, but it would of course be better to launch without such problems. If the problem persists independantly of watching the intro or not, then we can at least exclude the intro sequence causing the problem.

    It would greatly help with debugging if you could get your hands on a system where this problem occurs, if at all possible.
     
  8. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    @Yoreki

    It did happen when he skipped the intro as well at 8:14 of the video...hmmm....

    Well, for now what I'm doing is creating a launcher in where you select Vulkan, OpenGL, or DirectX and .exe shortcuts have -force-opengl etc etc... for the three apis so they can try on each one. I'm also making a drop down list with an option for three different graphics modes 'high end', 'low end' and 'windows 95', and making it so that these parameters are passed to the build like '-hiend' for example. The low end will shut off the anti-aliasing and lower the resolution to 720p, while the 'windows 95' option will shut off all screen effects and shadows. That should get to the bottom of whether it's a shader issue or not, and you know what people will also be able to play on older computers so that's a bonus.

    It is interesting, I'm noticing, that in both of those parts music was supposed to play and no music played....also, when he skips the intro, it does proceed to run through the tutorial images like it's supposed to (which shows that it's probably not a problem with scene flow). I'm wondering if SOMEhow it could just be an audio driver problem of some sort? You're right, the only way to really tell would be to get a-hold of the system. The ambient sfx played just fine, though.
     
  9. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    So the last post I'll make on this, I basically just created a launcher and fed parameters through to the application using this code in a WPF App:

    Code (CSharp):
    1. public static Process GetProcess(string executableName, string parameters)
    2.         {
    3.             Process process = new Process
    4.             {
    5.                 StartInfo =
    6.                         {
    7.                             FileName = executableName,
    8.                             Arguments = parameters
    9.                         }
    10.             };
    11.             return process;
    12.         }
    13.  
    14.         public static void LaunchGame(GameGraphicsAPI gameGraphicsAPI, GraphicsQuality graphicsQuality)
    15.         {
    16.             switch (gameGraphicsAPI)
    17.             {
    18.                 case GameGraphicsAPI.Vulkan:
    19.                     GetProcess(EpisodeFileName, "-force-vulkan " + GetGraphicsQualityParameter(graphicsQuality)).Start();
    20.                     break;
    21.                 case GameGraphicsAPI.OpenGL:
    22.                     GetProcess(EpisodeFileName, "-force-glcore " + GetGraphicsQualityParameter(graphicsQuality)).Start();
    23.                     break;
    24.                 case GameGraphicsAPI.DirectX:
    25.                     GetProcess(EpisodeFileName, "-force-d3d12 " + GetGraphicsQualityParameter(graphicsQuality)).Start();
    26.                     break;
    27.             }
    28.          
    29.         }
    30.  
    31.         public static string GetGraphicsQualityParameter(GraphicsQuality graphicsQuality)
    32.         {
    33.             switch (graphicsQuality)
    34.             {
    35.                 case GraphicsQuality.HiEnd:
    36.                     return "-Quality_HiEnd";
    37.                 case GraphicsQuality.LowEnd:
    38.                     return "-Quality_LowEnd";
    39.                 case GraphicsQuality.Windows95:
    40.                     return "-Quality_Windows95";
    41.                 default:
    42.                     return "-Quality_HiEnd";
    43.             }
    44.         }

    Then in my Unity application, I did this:

    Code (CSharp):
    1. private void SetGraphicsBasedOnParametersPassedIntoExecutable_ByTheLauncher()
    2.         {
    3.             if (Environment.GetCommandLineArgs().Length > 1)
    4.             {
    5.                 string firstargument = Environment.GetCommandLineArgs()[1];
    6.                 string graphicsQuality = Environment.GetCommandLineArgs()[2];
    7.                 switch (graphicsQuality)
    8.                 {
    9.                     case "-Quality_HiEnd":
    10.                         QualitySettings.SetQualityLevel(0);
    11.                         break;
    12.                     case "-Quality_LowEnd":
    13.                         QualitySettings.SetQualityLevel(1);
    14.                         break;
    15.                     case "-Quality_Windows95":
    16.                         GeneralScreenEffectsOn = false;
    17.                         QualitySettings.SetQualityLevel(2);
    18.                         break;
    19.                 }
    20.             }
    21.         }

    If it's a shader problem, I don't think it'll be impossible to catch now given that the launcher looks like this:



    The 'Windows 95' mode disables all screen effects on the game completely, while the 'Low End Computer' one disables just anti-aliasing and motion blur speeding up the game dramatically.

    The greatest suspect here is bloom to be honest, but then that wouldn't explain the audio problem (no music playing, sound effects playing at 100x the volume and ambient sound effects just working fine for some reason).

    Honestly in the 3 years full time I've been working on this project, I've never encountered a bug as rough as this one. I would have to assume it's something to do internally with Unity. I HOPE it's just a shader problem like usual so I can counter it with graphics api changes or better yet changing my shader (probably my sprite shader). Again, this doesn't explain what the whole SFX playing at 100x the volume is about...so it COULD be an audio driver problem.

    And the game comes out in 3 days. Since it's only happened to a fraction of the playtesters that have tried it out, I'm going to just have to refund the money of any people that are having the problem or just suggest to use another computer.
     
  10. Yoreki

    Yoreki

    Joined:
    Apr 10, 2019
    Posts:
    2,590
    Ouh, sorry. I seem to have missed that in the video.
    Taking a closer look at the last white screen, it actually seems to be just white; not this cloudy looking animation.
    So... it's a problem that either occurs before the intro, or after the controller tutorial, but not before either of those moments. Maybe you can find common things that happen at these two occasions, but not before either of them?

    I dont really have experience with driver problems, but i'd imagine if it was a sound driver problem we wouldnt be able to hear the birds background clip without any problems. The driver would either crash or malfunction. But again, i'm only guessing on this one, so take that deduction with a grain of salt.
    Either way, i wish you good luck with the problem if you intend to not post here anymore.
     
  11. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    @Yoreki No thanks for the reply. Here are the results of the German tester with the GeForce 1080 Ti. It's a very very very strange problem for a few reasons:

    After I created the launcher on the windows 95 mode (without the screen effects) he can actually see something! This tells me that the shaders are screwed up and conflict with Unity's built in bloom effect, which has been one of the known problems.

    BUT, the game hangs now. I use my own interpreters that read my own scripting language's events, and the interpreters seem .....SEMI...busted? While the music is completely dead and the SFX are blasting way too loud. That is................very very strange. If it was a purely graphical problem, why wouldn't it just have the screen effect problems...Yet if it's a coding error, why is it messing with the visuals when there are absolutely zero screen effects....odd...

    Oh, and another thing. The opening title screen scene works great, but then the loud SFX problem happens...the other scenes are then entirely broken...Oh, and by the way, the menu where you select difficulty the sound effects are fine! Wow, I've never seen a bug like this and I've spent maybe almost 1000 hours of coding out bugs this year!

    Again both testers were German and both were using semi-recent Nvidia graphics cards, the 1080 Ti and the 970MX I think.

    I've tried this game on as many computers as I can get a hold of and it works flawlessly, it's only these two computers that it's having these problems on.

    P.S - An idea is coming to me....the game basically reads an xml database in UTF-8...I'm wondering if that's not supported in German, and that could be the problem with the audio? But then, that would mean the game wouldn't run at all...No, it has to be an Nvidia display driver problem I think.
     
    Last edited: Aug 28, 2019
  12. ibbybn

    ibbybn

    Joined:
    Jan 6, 2017
    Posts:
    193
    Just a shot in the dark, maybe ask them to uninstall the nvidia HDMI audio drivers if they have them installed?
    Could test your game with a 1060 in Germany if it helps. Are there no null reference errors or shader warnings in their player log?
     
  13. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    @ibbybn That would help out a lot, send me over an e-mail at astralojia [@ ] gmail.com if you'd be interested in helping out.

    Nvidia HDMI Audio drivers definitely sounds like it'd be closer to the culprit if they have something like that installed. I told one of the playtesters to also try out the game in Vulkan and DirectX 12 with the launcher if possible. I'm going to assume that this is a Unity problem, maybe actually if I install 2019 it would be fixed. I could try cloning the project and upgrading, building and checking that as well.
     
  14. Yoreki

    Yoreki

    Joined:
    Apr 10, 2019
    Posts:
    2,590
    I dont know why or how some language-specific version of a driver would mess anything up, since the code should stay the same. Not that i could exclude this problem, i'm only stating what seems reasonable to me.

    As it happens i'm also german with a 1080ti. If you send me a download link in a forum PM i could take a quick look if the problem occurs on my system as well. Or you could just add a temporary download link to this thread so we could sort of use crowd sourcing to find common software / hardware components between people with / without the problem. Dont know if you wanna do that, given that the game is shortly before its release. But it may speed up the process of finding the problem if a couple people participate.
     
  15. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    @Yoreki I'll make sure to soon, thanks again for taking the time out of your day to help me out.
     
  16. ibbybn

    ibbybn

    Joined:
    Jan 6, 2017
    Posts:
    193
    Thx astra. I just tried to play it but i do also get the same problem.
    In "Windows95" mode I can actually see the trees etc in the intro but then there's nothing to do except look around? There's no log being produced to sift through unfortunately. In the game everything is still ultra bright and unplayable. Doesn't seem to matter if I click vulkan opengl or dx12. High and low end computer also doesnt change a thing. Only win95mode. Already tried with 416.94 and 436.15 nvidia drivers. I think you might just need to work on the image effects compatibility if you can or use different shaders.

    I also get the really loud sound clicking on New Game. I noticed there's a Surround.data in LocalLow\Astralojia\Astralojia Episode 1
    I think the sound problem is likely a surround mixdown to stereo problem and not a driver thing. During the development of Project Cars there also were a lot of surround mixdown problems where the mid sounds were distorting and too loud etc. You probably need to add a stereo mode if you worked on the game in surround mode all the time. Most people still have stereo setups. ;) I don't have the nvidia audio drivers installed so that's definitely not the problem.
     
    astracat111 likes this.
  17. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    @ibbybn Oh boy, it's actually not a surround problem, that file doesn't have to do with surround sound....This is the same exact problem everyone from Germany has now been having (now 4 people including yourself and @Yoreki...). I'm going to have to pm one of you...I may be willing to even compensate you a bit if you would help out with playtesting, especially if you have more than one computer you can test on.

    This is a very odd problem, as this has happened with only German Nvidia computers. My thought is that something is screwed up concerning this. Is there any other computer you can test on, something with integrated intel graphics, or something with an AMD GPU?

    If it's not an Nvidia driver I did have one other idea....You see, everything that's loaded into the main game database is loaded from an xml file. Maybe, just maybe the xml file is reading differently in German countries? Events from that xml file are parsed by in game interpreters, so you'd have an SFXPlay command that does SFXPlay(NewGame,1.00). Maybe somehow the "." isn't read in German so it comes out as SFXPlay(NewGame,100)........

    This would also explain the brightness problem, because there's something like SetBrightness(1.00) and that would also read as SetBrightness(100)....So are "."s read differently when parsed into strings from the xml file I wonder....I will have to personally give you guys a non-DRM Debug copy of the game with the first few scenes so that you can test it, if you'd have the extra time...

    I may have to delay the game, if it's having this problem on German computers there's no way I could release it...I'm going to have to make a quick decision with this. This is, again, the worst bug that I've ever encountered, and I've spent like 1000 hours this year fixing bugs and making sure this thing is as stable as I can make it.

    EDIT: Holy crap sorry for necroposting but I just may have found it:
    https://stackoverflow.com/questions...correctly-from-an-xml-file-independently-from
    https://forum.unity.com/threads/float-parse-different-for-german-os.70012/
    https://issuetracker.unity3d.com/is...xml-file-and-system-language-is-set-to-german

    Unity has released a resolution note for this:
    Code (CSharp):
    1. "If you want to parse a number and use
    2. a decimal points '.' regardless of the system, application,
    3. or thread locale you need to specify to use the InvariantCulture:
    4.  
    5. float.Parse(numberString, CultureInfo.InvariantCulture);"
    I'm going to make a backup and take all my float.Parse commands and use the CultureInfo.InviantCulture and see what I can come up with.

    I'm wondering if there's a way to change my computer's region to German? I have a testing laptop that I haven't used in a while that I need to try it on...
     
    Last edited: Aug 28, 2019
    Yoreki and ibbybn like this.
  18. Yoreki

    Yoreki

    Joined:
    Apr 10, 2019
    Posts:
    2,590
    Unfortunately my controller seemingly just broke over night, which is a typical case of coincidental bad luck lol.
    So i didnt get further than the screen telling me no controller is plugged in. However, are you aware that the menu (New Game and such) still pops up with no controller plugged in (and that message on screen) and that these texts are overlaying a bit? Given the circumstances this is a minor problem, but i thought i'd mention it.
    I'll try getting my hands on a controller again. Sorry for being useless :p

    Further, using OpenGL my game crashes with an exception telling me it was unable to adjust the resolution.

    I hope you got the problem there. Wishing you luck!
    On windows you can change the region settings by simply typing "region" into the search bar. However, i'm afraid this wont do a lot. If anything you'd probably need a german version of the operating system, but then again i still find it weird how some localization of a software could cause these major problems.
     
    astracat111 likes this.
  19. Ekzalphantoss

    Ekzalphantoss

    Joined:
    Sep 27, 2016
    Posts:
    11
    Yep, it's from Nvidia cards. I've had this bug since two years ago (don't remember the exact update by Nvidia). Ever since then I've been playing games with Nvidia disabled. Don't have problems with the audio though - it plays normally but the game screen is only white, aka white screen of death. Also even opening the Unity editor showed a white screen until I forced Unity to launch in webgl mode (which is no longer possible since you open it from Unity Hub). But using the integrated graphics card is not that bad. I just have to pause from time to time so my laptop doesn't overheat

    Just wanted to share my experience with the white screen bug. As for your problem, you could tell your users to go to the Nvidia panel and set your game to be opened by their integrated graphic card, it their are true gamers, they should be tech savvy

    P.S. My laptop is not in German, so no, the bug isn't related to your regional settings
     
    astracat111 likes this.
  20. astracat111

    astracat111

    Joined:
    Sep 21, 2016
    Posts:
    719
    @Ekzalphantoss I know it's hard to believe but actually in my case it really was just the problem with decimals not being used in some international languages. Basically I have my own scripting language commands that are parsed, and when float.parse() is used you need to use CultureInfo.InvariantCulture.

    Reading around now though, I don't want this topic to be misleading for people that are in desperate need to fix it and are using Google to find the topic! In my case it actually luckily wasn't a shader problem, though.