POStudios Forum

Phoenix Online Studios => Moebius => Topic started by: MarkoH01 on December 16, 2015, 03:43:30 AM

Title: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on December 16, 2015, 03:43:30 AM
I have already said this in the update thread but since nobody ansered yet and I think this issue is too important I made an extra thread for it.

The new Moebius version (2.0) has much better anti aliasing and works great. However vsync is not working anymore which you can clearly see if you watch the opening cut scene - there is screen tearing clearly visible. I tried the GOG version of the game and after seeing this I reinstalled my backuped older Moebius version and there vsync works. Please fix this because I cannot enjoy great cut scenes if they have screen tearing. I have also tried to force vsync and it did not work. (Win7/64 - GTX960).
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on December 17, 2015, 10:39:57 AM
I'm sorry to hear that you're having issues. We are currently working on an update for GK and Moebius which we hope to have out in January. These will be using newer versions of Unity and the video plugin, which should help. I know the code forces VSync to be on due to walking calculations, so it is there...
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on December 19, 2015, 04:10:53 AM
Quote from: Oldbushie on December 17, 2015, 10:39:57 AM
I'm sorry to hear that you're having issues. We are currently working on an update for GK and Moebius which we hope to have out in January. These will be using newer versions of Unity and the video plugin, which should help. I know the code forces VSync to be on due to walking calculations, so it is there...

Thank you for the quick answer. If you want to test if vsync is working correctly all you have to do is watch the first seconds of the opening credits (light and camera movement) you can clearly see the screen tearing. I always force vsync to be on because I cannot stand screen tearing at all. As I said it worked fine on the old engine (but oin the old engine AA was much worse). Maybe it is not forced during cut scenes but in the game? Anyway I am really looking forward to the (hopefully) january update and I am confident that you will be able to fix the issues. Please don't forget to update the GOG version (in my experience some devs like to update steam but seem to "forget" GOG, humble ect. ;)).

May I post another question here since I have your attention?
At the moment I am playing Cognition GOTY with German subtitles and I noticed that there are some translations which are still missing and some very few were there is the wrong subtitle shown. I have no problem to note those things (Even telling you which German subtitles SHOULD be displayed and maybe including screenshots) but I don't know since Cognition is quite old if it even still is supported. I don't want to get into this kind of work if it would lead to nothing. So the question is: would you like to have such notes to have the possibility to fix these few localisation bugs?
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on December 19, 2015, 08:41:06 AM
Alright, I'll give that a test on our current version to see if it's still an issue. We do try to be consistent with releasing patches to other sites as well, but it's difficult as we have a lot of distributors. We usually take care of GOG alongside Steam and standalone, so I'm surprised that one got missed until now.

We are definitely still doing some work on Cognition to get it ready for mobile, so that may be one of the issues we're re-examining. I've sent you a PM with more info on who to contact.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on April 09, 2016, 05:59:46 AM
Quote from: Oldbushie on December 17, 2015, 10:39:57 AM
I'm sorry to hear that you're having issues. We are currently working on an update for GK and Moebius which we hope to have out in January. These will be using newer versions of Unity and the video plugin, which should help. I know the code forces VSync to be on due to walking calculations, so it is there...

Any news about this patch? It should be released in january and now we have april.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on April 09, 2016, 09:02:53 AM
Sorry about that! We had a busy few months but we finally have a chunk of time next week we can devote to finishing up the Moebius patch. We've already addressed most of the urgent issues, so we're wrapping up polish and then we can push it out.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on April 27, 2016, 05:25:09 PM
Quote from: Oldbushie on April 09, 2016, 09:02:53 AM
Sorry about that! We had a busy few months but we finally have a chunk of time next week we can devote to finishing up the Moebius patch. We've already addressed most of the urgent issues, so we're wrapping up polish and then we can push it out.

Thank you very much for your reply. I am looking forward to it.

One thing I noticed regarding vsync in general: vsync does seem to behave quite different on Win7 wether you have turned windows aero on or off. With aero on vsync problems are often not noticable. The problem is that I don't like aero therefore I have tuned it off constantly. But this might help in future testing of games treating vsync issues so you may figure out why some users report issues and some don't. It should be an additional QA step to try the game with aero turned off.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on May 17, 2016, 03:27:02 AM
Hi Oldbushie,
yesterday GOG uploaded the newest Moebius release. I tested it and unfortunately the tearing issues still are there. The only way to get rid of them is to turn aero on (which is turned off permanently because I don't like it). I still wonder why those tearing issues were completely absent (no matter if aero was turned on or off) in the Unity3 version of the game? Could it be that the new Unity engine was downgraded so that it only provides proper vsync handling when aero is turned on?
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on May 17, 2016, 08:54:56 AM
I have no idea. This is not something I experience on my own machine (Windows 7 with Aero off). We are using the latest version of Unity 4 for this release, but we are migrating to Unity 5 the next time we patch it. Due to the number of fixes that were required for the Linux release we didn't want to risk the jump to Unity 5 just yet. We do not have any control over how Unity handles VSync.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on May 17, 2016, 01:15:21 PM
Quote from: Oldbushie on May 17, 2016, 08:54:56 AM
I have no idea. This is not something I experience on my own machine (Windows 7 with Aero off). We are using the latest version of Unity 4 for this release, but we are migrating to Unity 5 the next time we patch it. Due to the number of fixes that were required for the Linux release we didn't want to risk the jump to Unity 5 just yet. We do not have any control over how Unity handles VSync.

That is interesting. So it IS possible to eliminate tearing (especially in the cutscenes) without turning aero on. So it seems to be a hardware issue. But thank you for telling me.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on May 17, 2016, 01:16:34 PM
You're welcome! Hopefully you're able to find a solution. I have an Nvidia 980 GTX, so that could be part of it. Have you tried different quality levels?
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on May 19, 2016, 02:10:00 PM
Quote from: Oldbushie on May 17, 2016, 01:16:34 PM
You're welcome! Hopefully you're able to find a solution. I have an Nvidia 980 GTX, so that could be part of it. Have you tried different quality levels?

GTX960 here - so not that much different.
It is getting better on lower quality ("fastest" was it, I think?)
It is really strange. In most of the games I have vsync works without any problem whenever I have turned it on in game or forced it via control panel. So far only these games won't work (only possibility turning aero on):

Moebius 2.0 +
Firewatch
MIND: Path to Thalamus (works after I press twice ALT+ENTER to switch from fullscreen to window then back to fullscreen)
Pony Island (does not have vsync option at all but forcing does not work either)

MIND is a Unreal 4 game and all others are Unity. I am quite sure that the creators of MIND just implemented borderless window instead of real fullscreen so switching to real fullscreen activates the vsync (which never did work for me in a window). The creators of Firewatch already confirmed that their fullscreen is borderless window but switching does not help - same with Pony Island and now Moebius. It must have something to do with the newer Unity engines (original Moebius and Cognition worked great) AND my GPU.

I always see people in "Let's Plays" turning off vsync and I never understood this. I really hate tearing, the game feels broken for me when the screen tears. Luckily with aero I have a workaround - now I am trying to turn on aero without seeing that it is turned on which of course is a bit paradox. :)
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on May 19, 2016, 02:57:57 PM
I'm glad you found a workaround! For what it's worth, we have VSync enabled on all quality levels, so for it to not work at all for you (outside of aero mode) is very strange. The only special thing we have done is disable DirectX 11 on our older games, because our shaders don't play nice with it.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: snabbott on May 20, 2016, 01:38:45 PM
Interesting discussion of Aero and preventing tearing:
http://superuser.com/questions/558007/how-does-windows-aero-prevent-screen-tearing (http://superuser.com/questions/558007/how-does-windows-aero-prevent-screen-tearing)
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on May 20, 2016, 03:12:18 PM
Quote from: Oldbushie on May 19, 2016, 02:57:57 PM
I'm glad you found a workaround! For what it's worth, we have VSync enabled on all quality levels, so for it to not work at all for you (outside of aero mode) is very strange. The only special thing we have done is disable DirectX 11 on our older games, because our shaders don't play nice with it.

Maybe I should add that I stopped playing after the tearing started in the first cutscene. So maybe it is not the game itself but the way the cutscene is rendered or played?
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on May 20, 2016, 06:54:59 PM
It's possible. We're using a special plugin that helps the videos play in mobile mode as well (across all our games) so maybe it's not playing nice in your setup. You could try playing the videos directly from StreamingAssets and see if that tearing still happens.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on May 21, 2016, 09:15:29 AM
Quote from: Oldbushie on May 20, 2016, 06:54:59 PM
It's possible. We're using a special plugin that helps the videos play in mobile mode as well (across all our games) so maybe it's not playing nice in your setup. You could try playing the videos directly from StreamingAssets and see if that tearing still happens.

Unfortunately it seems to be the game. I renamed the into cutscene file in StreamingAssets and it did play correctly in bsplayer (although without any sound). I also tested the game itself a bit and noticed those tearing effects whenever there was a fade out or fade in to the map.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on June 10, 2016, 12:23:17 PM
I meanwhilce bought GK and it is the same. Unity 4 no tearing Unity 5 tearing. It really seems to be the engine here. I am just downloading the newest nvidia drivers in the hope that nvidia may have fixed this.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on June 10, 2016, 12:40:33 PM
Moebius is still on Unity 4, so it's not a Unity 5 specific thing. We did fix GK at least to use the native video plugin for desktop, so I'm surprised cutscenes would still be tearing on the latest update (2.01) for you.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on June 17, 2016, 03:00:45 PM
Quote from: Oldbushie on June 10, 2016, 12:40:33 PM
Moebius is still on Unity 4, so it's not a Unity 5 specific thing. We did fix GK at least to use the native video plugin for desktop, so I'm surprised cutscenes would still be tearing on the latest update (2.01) for you.

All I know is thet the problem never occured on Cognition and on the oebius release prior 2.0. So if Moebius 2.0 was Unity 4 and it wasn't before it seems that all Unity versions greater 3 are problematic for me which means many, many games. I intent to write directly to the Unity devs and ask them if they would have an explanation or better even a fix. All other games don't have a problem no matter if aero is on or off - only those specifoc Unity games. There HAS to be an explanation and I really want to find out what this explanation is.

Since GK still does have the issue even with the video plugin replaced it's quite clear that this was not the source of the problem. It would have surprised me if it were because as I said other newer Unity games produce the same problem for me.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on July 06, 2016, 12:23:18 PM
I am pretty sure the reason fpr this whole is a mixture of newer Unity versions and actual Nvidia divers. I just opened a Unity account so I could talk to them and in the forum. Unfortunately the only way to file a bug report is as a developer. Fun thing this:

http://answers.unity3d.com/questions/950989/screen-tearing-on-windowed-mode-with-vsync-on.html

Sounds pretty familiar and the "solution" also does. It's also interesting that the GPU mentioned seems to be nearly the same as mine (GTX960). I am planning to post a new topic in their Unity answers section (because obviously there IS no real support section). Could you please tell me which version of Unity was used to make Moebius 2.0? This was the first version of the game with this issue and I want to tell the version in their forum. Since more and more Unity games are getting released I have to switch aero on every time I play one of them which is a bit annoying. Obviously this is NOT your fault but the fault of the engine you are using. But I wanted to keep you informed you because you tried to help me for such a long time - which btw is very much appreciated :)
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on July 06, 2016, 12:44:57 PM
I'm not 100% sure which version we used back then, probably Unity 4.6.0 or Unity 4.6.1. The latest version we recently pushed was built with Unity 4.7.1. The original release of the game likely used Unity 4.3.4.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on July 07, 2016, 11:06:15 AM
Quote from: Oldbushie on July 06, 2016, 12:44:57 PM
I'm not 100% sure which version we used back then, probably Unity 4.6.0 or Unity 4.6.1. The latest version we recently pushed was built with Unity 4.7.1. The original release of the game likely used Unity 4.3.4.

Thank you for your quick reply and the information.
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on July 14, 2016, 01:33:40 PM
Quote from: Oldbushie on June 10, 2016, 12:40:33 PM
Moebius is still on Unity 4, so it's not a Unity 5 specific thing. We did fix GK at least to use the native video plugin for desktop, so I'm surprised cutscenes would still be tearing on the latest update (2.01) for you.

I have now also posted my "problem" in the nvidia forum and got some interesting answers that MAY help to shed a bit light on this:

"Most Unity games don't run in a true fullscreen - only a borderless window with the same dimensions as your desktop. As a result, like any other Windowed game, if you have disabled Aero (which is pointless on any system that actually meets the requirements for a Unity game) than you've also disabled the ability to use V-sync at all."

I then answered that you told me that you did not experience the issue even without aero and it was replied:

"It's odd that they couldn't reproduce it, though. This has been the case with Aero and windowed software since Aero was introduced with XP. I can only figure that their internal build is running in a true fullscreen mode where the release code isn't, as is likely to be happening with older Unity games."

The user also suggested a tool (of which I haven't heard of until now):
"As a potential work-around, maybe try GeDoSaTo and use it to force a true fullscreen mode. Assuming, of course, it's DX9 (it's not DX11-only since it still supports XP) - I don't know if GeDoSaTo supports OpenGL or not. "

What do you say, could this be the problem - not real fullscreen but borderless window in newer unity games?
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: Oldbushie on July 14, 2016, 03:22:19 PM
There IS a setting in Unity where you can pick between Fullscreen Window and Exclusive Mode. I suspect the latter is more likely to be "true fullscreen". The one big catch I'm reading is that exclusive mode is more likely to crash when alt-tabbing.

https://docs.unity3d.com/Manual/CommandLineArguments.html

In the Unity Standalone Player command line arguments section, try:
-window-mode exclusive
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on July 15, 2016, 12:02:11 PM
Quote from: Oldbushie on July 14, 2016, 03:22:19 PM
There IS a setting in Unity where you can pick between Fullscreen Window and Exclusive Mode. I suspect the latter is more likely to be "true fullscreen". The one big catch I'm reading is that exclusive mode is more likely to crash when alt-tabbing.

https://docs.unity3d.com/Manual/CommandLineArguments.html

In the Unity Standalone Player command line arguments section, try:
-window-mode exclusive

If you meant starting the executable with the shown parameters like
\Moebius\Moebius.exe -window-mode exclusive
I just did this and it did not help. I may try some of the other graphic options and will tell you if I should find one that helps. I cannot tell you how much I appreciate it that you are taking so much time to help me here :)
Title: Re: Moebius 2.0 has broken Vsync - please fix
Post by: MarkoH01 on July 22, 2016, 08:02:37 AM
Not really helping but interesting reply in the Uity forum regarding the issue:

Normally, I would agree that forcing the user to activate a feature of the OS shouldn't be a solution, but in the case of Aero, that's actually one of the rare exceptions. The problem isn't with Unity, but with the OS Windows itself since Aero was added to it back at Windows XP. To put it bluntly, Microsoft did a BIG blunder when they developed Aero... They put some of the essential parts of Windows' display system directly within the Aero plugin itself. For example, without Aero, Windows XP or later OS's display drivers are unable to render opacity on any frames.

The best way to describe the problem is that, when Aero is turned off, Windows is unable to use the GPU anymore to render its frame-related content and relies solely on the CPU. It wouldn't be a problem if it was ending there, but here comes the next problem... What happens if you have a screen that has a part that is rendered solely with the CPU and one that is rendering with either the GPU or a mix of CPU and GPU? Ping-pong! The dominating software render both in row and not at the same time! The screen-tearing that comes around when you try the game in windowed mode without Aero is caused by the fact that Windows let the applications render their frame, then render the "outer" frame (rest of the screen) through the CPU... and through that comes the possibility that the second rendering produce a screen-tearing.

If you still don't get it, another more simplistic way of explaining it is this : 1) You turn off Aero. Now Windows is unable to use the GPU to render any frame and solely relies on the CPU. 2) You run an application in Windows mode. 3) Windows can't do its own rendering with the GPU, but the application (which has priority) can so Windows wait for the application to finish rendering its frame. 4) Then Windows take the rendered frame save it into its memory bandwidth. 5) Windows renders its own frames through the CPU (which exclude any application that runs on the GPU). 6) Windows fuse both the GPU rendered frame with the CPU rendered frame. 7) Sometimes, when Windows fuse both frames, it does a sloppy job (like any software running purely on CPU) and a screen-tearing appears with the positioning of the memorized GPU-based frame being 1 or half a pixel off.

The reason why it only appears in newer Unity version is because of a change in how the software is handled CPU-wise... which without Areo also affect how much memory bandwidth Windows can handle for rendering its content.