Wintermute Engine Forum

Wintermute Engine => Technical forum => Topic started by: Sothoth on July 25, 2013, 11:02:19 PM

Title: WME1 fork with VSync support
Post by: Sothoth on July 25, 2013, 11:02:19 PM
Hi!

I've just create a fork of the Mnemonic repository in Bitbucket, and I've merge the VSync support from Kinjal sources (from http://kinjal.apeironstudios.com/wme-ke_v2.0_bin_src_26june2012.7z ).

The repository can be found in https://bitbucket.org/ricpelo/wme1 , and my addons/modifications are all in the "alphaaventuras" branch, in https://bitbucket.org/ricpelo/wme1/commits/branch/alphaaventuras .

I've tested it a bit and the VSync support works really good, as far as I can see. With VSync off, the mouse cursor has no lag in fullscreen and all seems to be more responsive. On the other hand, I can't see any perceptive lack of smoothness due to the lack of VSync.

I've tried even with some game demos, like Alpha Polaris, On The Track of Dinosaurs, or Face Noir, as well as the WME 3D demo (as you can see, all 2.5D games; I'm not interested on 2D games for now, sorry). All these games seems to be better with the VSync off.

The relevant commits are a4c53ab (https://bitbucket.org/ricpelo/wme1/commits/a4c53ab7a0220dc2f7cd56ea0dec63085786e6ad?at=alphaaventuras) (VSync support) and 49cc9b1 (https://bitbucket.org/ricpelo/wme1/commits/49cc9b1045703755e2c9b6327b76cb78cf210d59?at=alphaaventuras) (VSync = off by default).

DISCLAIMER! The above changes are totally untested apart from me, and I provide them without warranty of any kind. It's up to you if you use them. Hope this could be useful for somebody :)

Cheers!
Title: Re: WME1 fork with VSync support
Post by: Sothoth on July 25, 2013, 11:25:32 PM
Oh... Interestingly, disabling VSync fixed the slow save & load issue I commented here: http://forum.dead-code.org/index.php?topic=5530.0 . Now, save and load works in fullscreen as fast as in windowed.
Title: Re: WME1 fork with VSync support
Post by: Sothoth on July 26, 2013, 09:44:16 AM
More testing: the 2D wme_demo definitely shows smoother during scrolling scenes when VSync is off. The difference is not so big, but it is there. So I think the developer must choose between fast responsiveness vs smooth responsiveness. Anyway, the lack of smoothness is evident only on scrolling scenes, IMHO.

Just another 0,02 for the record ;)
Title: Re: WME1 fork with VSync support
Post by: Django on September 02, 2013, 06:57:38 PM
Thanks, this is definitely useful.
Any chance to get a compiled version?
Title: Re: WME1 fork with VSync support
Post by: Sothoth on September 02, 2013, 07:05:35 PM
Thanks, this is definitely useful.
Any chance to get a compiled version?

Hi!

You can take a look at here:

https://dl.dropboxusercontent.com/u/183992/wme_D3D9.exe

That's my latest build. I've tested it against Avira & Malwarebytes, but please (disclaimer!) double-check you personally ;).

Hope this helps.
Title: Re: WME1 fork with VSync support
Post by: Django on September 03, 2013, 06:47:15 PM
Works like a charm, thanks again!
Title: Re: WME1 fork with VSync support
Post by: piere on September 04, 2013, 01:54:28 AM
I guess I am a little confused about the VSYNC thing and what it actually does with Wintermute. Can you explain and maybe post a before and after image? Thanks  ???
Title: Re: WME1 fork with VSync support
Post by: Mnemonic on September 04, 2013, 07:28:08 AM
Vsync (vertical synchronization) basically means, whether your video card waits until one frame is completely painted on screen, before starting to paint another frame.
If vsync is enabled, a new frame is painted immediately when it's ready, even though your monitor is still busy painting the previous frame. That means you can end up with half the screen containing the old frame and half the screen the new frame. In 3D games this results in the "tearing" effect, in 2D games it's typically not that apparent (unless the majority of the screen is changing).
The practical result is the game framerate. If vsync is enabled, the game is being slowed down by the monitor refresh rate (typically 60Hz, i.e. 60 frames per second). If vsync is disabled, the only limit is how fast the CPU and the videocard can produce new frames (and since WME scenes are usually not too complex, frames can be produced rather quickly).

In DirectX 8 the windowed mode used disabled vsync and full-screen mode used enabled vsync. In DirectX 9 the application can configure this, but by default WME uses the same settings as DX8 did for compatibility. The modification in this thread overrides this default setting.