PeterTh / gedosato

The Generic DownSampling Tool
GNU General Public License v3.0
462 stars 166 forks source link

Guild Wars 2 #379

Open WoodenPoatoes opened 7 years ago

WoodenPoatoes commented 7 years ago

Hi!

So graphics enhancement via post-processing is a big thing in the Gw2 community, where we have used lots of SweetFX, GemFX and Reshade as a collective to improve on the developers shoddy own post processing.

I recently came across gedosato because of it's ability to apply effects and also bypass the user interface, which sounds excellent and absolutely leagues ahead of what the competing solutions are offering.

I am absolutely confident that if this tool worked with the game it would be a HUGE success, but unfortunately there seems to be an instant crash on launch. The advice of running as an administrator, which works for some other titles, doesn't work here.

I am actually willing to offer a small bounty and pay for it if anyone is able to resolve this issue, I think it would be that enormous for the community! I run a YouTube channel for the game where I'd have a platform to inform people about gedosato should it work, one day, which I'm very excited by the prospect of.

Thanks for reading! Is there any interest in looking at this or advice?

Cheers, ~WP

LordJBeckman commented 7 years ago

I've been using GeDoSaTo with Guild Wars 2 a couple of times and it works but it's not entirely stable for whatever reason and the UI scaling can be a bit problematic although I'd imagine if you aren't using the downsampling functionality then the UI is a non-issue. :)

For Guild Wars 2 I'm mainly using the "-autologin" parameter although it might work better to use the full account and password parameters as well and skip the launcher entirely outside of using it to update the game.

For GeDoSaTo I'm targeting the Gw2-64.exe file but there's no specific compatibility settings used for the game besides what I'm using for every game via GeDoSaTo_User.ini which mainly consists of forcing borderless display mode (GW2 supports this natively however.) and SMAA post-process AA along with the default set of mouse compatibility settings.

As for post-process effects I think ReShade 2.x offers more shaders (I'm using the 3.0 beta with the game but not all shaders are currently ported over for use with this version of ReShade.) although yes GeDoSaTo would be able to skip applying the effect over the game interface and other UI elements via a bit of tweaking with the "#" hash or tag parameters for PS and VS although I do not know fully how these work though I believe Durante has some documentation somewhere on his blog on this. :)

http://blog.metaclassofnil.com/

In some cases the newer version of GeDoSaTo can be a bit problematic whereas older versions work fine but it varies from game to game and usually it is solvable by tinkering with the various GeDo compatibility settings or if required also OS or even bios related ones such as the problem with secure boot mode and the way GeDo injects into other processes via the shim .dll file.

Not sure what else I can offer in terms of advice, hopefully Durante will eventually have time to continue updating the software with further fixes and improved compatibility along with support for newer API's from DirectX 11 to Vulkan, that's a lot of work though so it probably won't happen anytime soon but I don't think GeDo has been abandoned either, author is just very busy with real life and such. :)

WoodenPoatoes commented 7 years ago

Thanks so much for the comment!

On my end I've already tried running autologin, as well as the username and password arguments to skip the patcher, but I've still had no luck. Guild Wars 2 always instantly crashes.

Are you suggesting that the most recent version of GeDoSaTo is the cause? Any idea which version number is the most recently that actually still works?

Oh! And lastly, what is the 'instability' you're speaking about? I'm kinda curious, since I havent gotten to experience anything that far yet. Thanks so much for the advice!

LordJBeckman commented 7 years ago

I had problems where switching zones caused the game to crash very frequently when GeDoSaTo was being used and yeah now that you mentioned it I was using a older version of GeDoSaTo as it was a while since I ran the game through it. :)

If you want to try a earlier build you can do so via Github itself without too much of a problem by going to the commit overview of a project such as for GeDoSaTo it would be this: https://github.com/PeterTh/gedosato/commits/master

And by going back to a few commits before the recent D3D changes like this one: https://github.com/PeterTh/gedosato/commit/a5dd0132559ffd680d0915f4af48ddcc9ff41fb0

You can click on the browse files button and that will take you here: https://github.com/PeterTh/gedosato/tree/a5dd0132559ffd680d0915f4af48ddcc9ff41fb0

And then by clicking the green download button and getting the .zip archive it'll be from this older build which can be very useful for testing compatibility problems. :)

It'll download the source assets too but you do get a fully compiled and ready to use GeDoSaTo software suite too by just using the files in the .\pack folder which can be extracted anywhere and then you can use it just as usual.

I have tested against the newer 64-bit version of Guild Wars 2 though back then it was still in beta but GeDoSaTo does support 64-bit since a while back but sadly the stability issue with crashes after switching to a different zone still occurred very often, I'm not 100% sure on what exactly causes that, if it was a form of protection from file injection it should also have affected other injectors ranging from simple framerate utilities like Fraps to overclocking software with overlay support such as MSI Afterburner and also shader injectors such as ReShade and GeDoSaTo but so far ReShade seems to be perfectly stable. (And if it was from downsampling well that I actually did test as to fix the UI size problems and sadly it still caused a crash when teleporting to a new area.)

I haven't tested the newest GeDoSaTo with Guild Wars 2 but I will do a quick test shortly to see for myself if either the game has been updated and somehow fixing this zoning crash problem or if it'll instead be worse like what you mentioned with these posts where it's now crashing on start and won't even pass the launcher screen. (If so then older versions of GeDoSaTo might not be helpful for that particualr problem.)

As a software injecting via DirectX there are also various other ways the game could act up from a conflict between different injectors (For example Razer Synapse is causing a lot of problems with the ReShade injector going by comments on their forums.) or even a difference in GPU vendors and how AMD and Nvidia might have different compatibility modes for the game where it might crash for one and work for the other, it's not the easiest to work around these driver problems either if it turns out to be something like that as they go a bit deeper than these injectors can when using the DirectX API to re-route and alter functionality.

This is why some games have inbuilt software compatibility profiles beyond what the game specific config files allow for although it can also be used to bypass limitations such as a locked max resolution. (I haven't looked to closely on the various existing profiles that GeDoSaTo have now but hopefully it won't come to that where it'll require a update to the program itself.)

I will hopefully know more after having tested this myself, altering the log level in the GeDoSaTo config file could possibly also help troubleshoot what goes wrong or at least where in the launch process it does crash but I'm not very good at code myself so I wouldn't be able to help much with understanding the resulting log info.

Hopefully it will be possible to solve this issue without any major complications though. :) (It is a complex piece of software and every game can have their own quirks even when running on a similar or sometimes even the same base engine, various UE3 games can be a good example of this and Unity required some work due to how it by default renders the screen in a sort of windowed mode.)

EDIT: Tried GeDoSaTo (The current version.) and the game starts up without issue here although the text on the menus and such is slightly blurred (Possibly due to SMAA.)

Gw2-64 added to whitelist_user.txt and in the Gw2-64 folder and it's GeDoSaTo.ini I'm only using a setting to make sure it uses the native display resolution which is this:

http://pastebin.com/J7F0556P (EDIT: Now in "Pastebin" format due to the length of the GeDoSaTo config file, keeps things a bit cleaner and less cluttered this way.)

Guess next up is teleporting around a bit to see if it's stable or if that problem is still there which would make GeDoSaTo a bit difficult to use even if the game might be starting OK with it running. (Not going to be too helpful if there's a high chance of the game client crashing when moving to a different area so hopefully that won't happen and it's been resolved somehow.)

As for Guild Wars 2's settings I'm running it in borderless mode although that shouldn't make a difference far as I know and it should also work when borderless is turned off in GeDoSaTo's ini file if fullscreen is preferred or even windowed mode. :)

I don't think there's any other settings that could otherwise cause it to act up, it did take a while longer for the game to start up with GeDoSaTo active whereas otherwise it's almost instant when going from the log-in launcher to the character screen / main menu but it did load after waiting a bit.

WoodenPoatoes commented 7 years ago

Thanks again for the lovely long response!

I feel quite awful, actually, because despite taking all your advice and following these steps, I can't get the damn thing to run!

Just to be clear:

  1. The crash is either on the launcher, with an instant fatal error, or if I use autologon, it'll fatal error on the character select screen.
  2. I've confirmed other games are functioning, such as Guild wars 1.
  3. I've used the old version of the software you linked, as well as the most recent up to date version!
  4. I've disabled razer synapse, any NVidia overlaying or intergration stuff, and am running windowed-fullscreen at 1440p through the ingame menu.
  5. I've used your exact user settings, and still the same crash.
  6. I've ran Gw2 as administrator, as well as in compatibility mode for windows vista service pack 2 (which is known to fix a black screen flash bug during loading screens)
  7. I've tried making sure GenDoSaTo is installed and running from the same drive as Guild Wars 2.
  8. I've fresh installed Gw2 to a completely new drive and tried

Last on my list is to try on a totally different installation of windows 10, and we'll see what happens. It heartens me to hear you got it running, though! Just not sure what my issue is. How has the instability been lately for you?

LordJBeckman commented 7 years ago

I'm using Windows 10as well, 64-bit Anniversary 1607 / RS1 although with a slightly newer cumulative update via "release preview" insider branch but that doesn't really matter.

I am using a AMD GPU so the worst case would be that it's a GPU vendor difference in either something in the drivers or the profile for the game causing a crash.

Driver issue would be a pain because it's no fun running older drivers for just one game and losing out in other games or other important fixes and potential OS compatibility updates too or other features.

Profile is easier where you can just rename the exe (And with that also the exe that GeDoSaTo targets.) and that should skip the driver settings although it can lead to worse performance and functionality such as multi-GPU support or forced driver-level AA, it's not much for AMD but Nvidia has a number of useful compatibility settings and AA modes that can be adjusted via the NV Inspector utility.

You can also try to hook via the games UI exe file and see if that could possibly help if the game exe is being unstable, it should hook and allow for normal functionality as if you hooked to the game exe but might help bypass the client crash on login. :) (Can also combine this with the auto-login command parameters to launch the game exe directly to the in-game character selection screen which might further reduce any compatibility issues although we've already established now that this did not work when hooking through the GW2 exe.)

I'll try to look for some more info and hopefully find posts from others who've had problems with injectors and Guild Wars 2, possibly even with GeDoSaTo in case there's a solution I've overlooked or did not know about. :)

I will also try searching around for compatibility info with newer Nvidia drivers to see if there's anything there, I know there were some problems with injectors a while back but Nvidia had since fixed that so hopefully that won't be what is causing this issue.

Win10 might have some changes to DirectX as well (And some more with these bigger updates to it.) but if GeDoSaTo works in other games that's not a problem, come to think of it then hopefully GeDo working in other games also eliminates any chance that it could be something in the display driver which will make things a bit less complicated.

aRestless commented 7 years ago

About instabilities in loading screens: GW2 essentially stops its normal rendering process while in character select screen and on loading screens. ReShade also always recompiles when coming out of a GW2 loading screens, so something's happening there.

Also, a bit off-topic but GW2 related: Does GeDoSaTo currently support changing configs at runtime? Or is an application restart required to see the effects?

WoodenPoatoes commented 7 years ago

aRestless, I'm pretty sure you can stop reshade from recompiling on every loading screen by setting the compatibility mode of Gw2-64 to vista service pack 2. Guild wars 1 actually had the same problem, I think, and as far as I remember that resolves it.

Theres also a specific command line argument for the FPS of the character select screen, too, which I find kinda curious. Wonder if it affects loading screen frames also.