Hey devs. I know you have PA.exe file in main game directory which determine version of Windows and run correct (32 or 64 bit) executable. I want ask you to add one more function to this file. You know that Coherent use DirectX 9 on Windows and many people have issues with it. I seen at least ~50 people who met this problem and two issues was today: http://steamcommunity.com/app/233250/di ... 649129475/ http://steamcommunity.com/app/233250/di ... 632333925/ When player run game though Steam and it's crash because of missing d3dx9_43.dll it's don't show any error to player. DirectX Web Installer also usually not download these DLLs for some reason. My idea: add simple check for d3dx9_43.dll to small PA.exe (400KB) and if not found show proper error message to player. Something like that: Or just any error message. Thanks. PS: Or alternatively you can just fix problem why game if it's started though Steam don't show startup crash messages.
Unfortunately, it's actually really not that simple at all. The game doesn't handle loading D3D DLLs. They are imported by an automatic mechanism, code generated by the Visual C++ compiler which runs before any of Uber's code has begun to execute. There's no way for them to interfere in the DLL loading process for these pre-linked DLLs.
Seems like you don't read my post carefully. I perfectly understand how executables and dependencies works. Currently on Windows PA have 3 executables: PA.exe - This is small one, it's only check Windows architecture and run correct executable. bin_x64/PA.exe bin_x86/PA.exe And actually none of them linked with DirectX. Only CoherentUI_Host.exe (which actually start independently of game) need d3dx9_43.dll. So I'm asking developers to add few lines of code check to first small PA.exe (which currently only used as arch chooser). I sure there is easy way to check if needed D3D version installed on system or not.
So Coherent uses DX9 on Windows and OGL on Linux, but it is impossible to force it to use OGL everywhere?
Yes. Even if Uber had Coherent source code they can't just toggle OGL usage if there is no built-in flag for that. It's obviously because Chromium codebase probably 100-times larger than Uber codebase, browsers is extremely complicated software. Chromium need D3D on Windows for ANGLE (OpenGL ES 2.0 to D3D wrapper): https://code.google.com/p/angleproject/ OpenGL ES used in Chromium not only for WebGL, but also for canvas and other hardware accelerated content.
I've played around with forcing Chrome to use different rendering engines, you can force it to use various forms of OpenGL instead of DirectX for it's rendering with the --use-gl=desktop flag. However the implications of forcing Chrome to use OpenGL is it also disables Angle which converts WebGL / OpenGL ES 2.0 calls to DirectX 9 which is often faster that most video cards native WebGL, if the desktop video cards even support OpenGL ES which most do not. That would mean we would likely have to disable use of WebGL for Coherent which might not be a terrible thing to do but we'd rather leave that option open to mod devs. The real fix for this would likely be to just make sure we install the necessary DirectX on first run like so many other Steam games already do, or figure out what Chrome / Chromium does to get around the DX install. It's been low priority for a while as it's easily resolved on the user's end, but obviously not a great user experience for those who run afoul of the problem. It's something we'll put more time into to smooth out once we near release.
Yeah, but in my experience it's only generated more problems for end-user because these flags aren't really supported in Windows builds like many other experimental/testing functions. At least it's will be extremely helpful if you check why users don't get proper error when run game though Steam. Quote from Steam: If user run PA.exe directly it's give him proper "d3dx9_43.dll is missing" error. ... PS: And one offtopic question if you please: neutrino said he's don't like idea about embeded voice chats, but as mod it's should be interesting. As long as I understand Coherent compiled with webrtc and devices support, but there is no API to request access to device. Is there some chances that Coherent and PA will expose proper WebRTC and Device support?
The entire issue is low priority at the moment, especially as others guessed it's an error that appears to be occurring outside of our own engine. We shouldn't need to add a D3D dependency to the game engine it doesn't actually need. I would guess this would come down to us working with the Coherent team to find an nicer answer, but this would take time away from our UI guys who are already busy trying to get in major game features. There's a chance, sure. This would fall under the multitude of mod related features we'll be investigating more thoroughly later in the project, likely post-release.