Final game setup looks for 3.4.0

Started by Crimson Wizard, Sat 28/05/2016 02:23:48

Previous topic - Next topic

Crimson Wizard

I am trying to enhance the looks and work of winsetup for 3.4.0. I had done some additions to winsetup earlier, in one of the previous updates (http://www.adventuregamestudio.co.uk/forums/index.php?topic=51050.msg636517910#msg636517910), but later realized they complicate things instead of improving them (in attempt to give user more options).
I would like to give another version for testing before we make final 3.4.0 release. There were certain changes to how setup works, which hopefully make it a bit simplier.

The engine for testing may be downloaded here: http://www.mediafire.com/download/5ruoaw094t4oau4/acwin_3.4.0.7-improve-winsetup.zip

So, what has changed.
First thing to mention is that now you are not restricted to only one scaling factor when you choose filters with fixed scaling (Hq2x, Hq3x). If you choose higher scaling, that they do not support themselves, the game will be scaled by these filters as much as they can do, but then the filter result is additionally scaled to target amount using simpliest nearest-neighbour technique.
This was indeed technically possible before if you checked "Stretch to fit screen" option, but setup did not give you way to choose higher "even" scaling (e.g. x4, x5). Now it does.

Now, here is the main change in the setup window, the two separate options ("Stretch to fit screen" and "Keep aspect ratio") are going to be merged with Scaling option:

This is because they are, in basic sense, another type of game scaling.


Choosing game size in Windowed mode is done, as before, using only two options - Filter and Scaling, but Scaling now has little more selection:


"Best round scaling" is what "Max fit" was before - it means that the game is scaled up by maximal "round" value that fits in screen.
"Standard filter scaling" only available for filters with fixed scaling, and means it will use strictly their scaling.
"Stretch to whole screen" means game will be stretched up as much as fits in the computer screen. It may appear distorted this way, if game's aspect ratio is different from your current monitor settings.
"Stretch, keep game's aspect ratio" - will stretch game up, but keeping width/height proportions. In Fullscreen this may (or may not) produce black borders either at top/bottom or left/right (but not both).


Choosing game size in Fullscreen mode is still done using Mode, Filter and Scaling, but this time Scaling has only "special" choices:


As you may notice, when setting up Fullscreen mode, Scaling has only choices that scale game up as much as possible in three ways (max round scale factor, stretch and proportional stretch), plus the fixed filter's scaling left just in case.
This is done so because I believe that in common case the users will want game to take most of the screen, if they chose to run it Fullscreen anyway.



I would really love to know people's opinion on this, because there is not much left to be done for 3.4.0, and now it's a chance to improve something in setup before the release.

Also, do all of the option names sound clear? I could rename them if there are better alternatives.

Danvzare

I'm loving these changes. They simplify things and give a bit more freedom. :-D

morganw

Unless I'm misunderstanding scaling vs. stretching, aren't they the same thing? I think the way it's working at the moment is giving you multiple options that give the same result and this makes it quite confusing.

Is there actually any difference in the result of these 3 selections?

- Game resolution
- Nearest-neighbour
- Stretch (keep aspect ratio)

- Desktop resolution
- Nearest-neighbour
- Best round scaling

- Desktop resolution
- Nearest-neighbour
- Stretch (keep aspect ratio)

Crimson Wizard

#3
Quote from: morganw on Sat 28/05/2016 13:56:18
Unless I'm misunderstanding scaling vs. stretching, aren't they the same thing?
Yes they are same thing if you take these two words, but if you refer to the "Stretch (keep aspect ratio)", this is short for "Stretch to whole screen (keep aspect ratio)", not just "scale". I may use the full name if that would make it more clear what is it for. Or rename it to "Proportionally stretch to whole screen".

Quote from: morganw on Sat 28/05/2016 13:56:18
Is there actually any difference in the result of these 3 selections?

- Game resolution
- Nearest-neighbour
- Stretch (keep aspect ratio)

- Desktop resolution
- Nearest-neighbour
- Best round scaling

- Desktop resolution
- Nearest-neighbour
- Stretch (keep aspect ratio)

Yes, of course, there are differences, although the looks on your screen may be similar, depending on how game / monitor parameters relate.

Desktop resolution chooses the resolution of your current desktop. This is made a distinct option because people usually set the preferred resolution for their desktop, as it works best on their computer; so they supposedly would like want to run game in same resolution.
Game resolution just means that if you computer can set fullscreen resolution of the game's size, no scaling filters will be required, so game will likely run a bit faster. Of course this mainly is important for low-end PCs.
This is also why we have a list of all supported fullscreen resolutions there - so that people could switch to lower ones if the game runs not well in high ones on their machine. "Game resolution" option is a lowest resolution that runs without downscaling game image.

The difference between "Stretch (keep aspect ratio)" and "Best round scaling" is that stretching to whole screen, even if maintaining proportions, may produce fractional scaling (e.g. scaling to 3.2, or 5.1), which sometimes causes part of image to distort. "Best round scaling" on other hand uses maximal round (integer) scaling factor (e.g. x3 or x5) which always produce clear image.
Of course, as I noted, depending on game/monitor relation, these two options may be equal; for example if the game has 16:9 ratio, then it will scale perfectly to the full size of the 16:9 monitor resolution.

In short, you usually may want to leave the default settings, and only change them if the particular game does not look good at your monitor.

morganw

#4
Quote from: Crimson Wizard on Sat 28/05/2016 14:06:38
The difference between "Stretch (keep aspect ratio)" and "Best round scaling" is that stretching to whole screen, even if maintaining proportions, may produce fractional scaling (e.g. scaling to 3.2, or 5.1), which sometimes causes part of image to distort. "Best round scaling" on other hand uses maximal round (integer) scaling factor (e.g. x3 or x5) which always produce clear image.

So don't you just need these?

- Windowed or fullscreen
- Resolution (desktop resolution and anything else that is supported by the graphics card)
- Scaling type (HQ or Nearest-neighbour - with a note that HQ is only in-effect up to 2x scaling)
- Scaling (explicit scaling multiplier, max integer, fit to resolution, fit to resolution (preserve aspect ratio))

Crimson Wizard

Quote from: morganw on Sat 28/05/2016 14:26:23
So don't you just need these?

- Windowed or fullscreen
- Resolution (desktop resolution and anything else that is supported by the graphics card)
- Scaling type (HQ or Nearest-neighbour - with a note that HQ is only in-effect up to 2x scaling)
- Scaling (explicit scaling multiplier, max integer, fit to resolution, fit to resolution (preserve aspect ratio))

Yes.... well, this is all that this new setup has, unless I misunderstood you somehow?

Crimson Wizard

#6
Quote from: Gurok on Sat 28/05/2016 15:15:24
You have "Custom saved games path" in basic settings, CW. I think that's an overestimate of how often people will need it. Move it to advanced settings.
Okay, I will do that.

Regarding the rest, I remember all that well, but I do not want to do this right now.
If someone wrote a new setup program while 3.4.0 was in active development, I would agree to take it, but not now, when we are about to release a version.

I know I could make a mistake when rewriting setup code for 3.4.0 and keeping old looks, so I spent time for that instead, but it's also a question of design and I was not able to work on design at that time.

Gurok

I understand. I know it's a fiddly task working on the form. I would still like to try to move "Custom saved games path" to advanced, if we could.

Ignore this. I posted it before your edit :D

And yes, it's too late. Plus, the form is really fiddly.
[img]http://7d4iqnx.gif;rWRLUuw.gi

morganw

At the moment it's showing scaling multipliers under Filter (as in, the filter implies a scaling by it's name) and it looks like the scaling options are having certain multipliers removed based on the filter you pick.

What I'm suggesting is that for scaling you pick Nearest-neighbour or High Quality and there is no scaling multiplier associated with the filter (i.e. there are two options to choose from). This means that the scaling list does not magically have it's content changed depending on which filter you have selected and also makes sure no-one thinks the multipliers are cumulative (since "Hq3x" filter with "x3" scaling is not "x9" scaling). It's probably best to move filter below the scaling options, and rename it as "scaling filter", i.e. if you aren't scaling you aren't using the filters.

Also the "no scaling" mode changes between "x1" and "none", depending on whether you are using fullscreen or a window, but aren't these the same thing?

I would also rename the scaling options, and put them in this order (lower options are potentially less accurate in how they draw, so you should default to the top option and work your way down):

Best round scaling --> Pixel-perfect scaling
Stretch, keep game's aspect ratio --> Full-screen scaling (preserve aspect ratio)
Stretch to whole screen (window) --> Full-screen scaling

...maybe someone else could think of better names, but I don't think many people would understand them as they are labelled at the moment.

morganw

Quote from: Gurok on Sat 28/05/2016 15:15:24
Also, some advice. Forgive me if it's overly presumptuous. I think we should take cues from the Unity setup tool:

Yes, just like this, where quality has no perceived effect on resolution.

Gurok

#10
Quote from: morganw on Sat 28/05/2016 15:44:39
Quote from: Gurok on Sat 28/05/2016 15:15:24
Also, some advice. Forgive me if it's overly presumptuous. I think we should take cues from the Unity setup tool:

Yes, just like this, where quality has no perceived effect on resolution.

Do you mean fidelity? With Unity, it's left up to developers. I see that as a mistake too, but how else would you handle something like that in a generic way? Yes, there's some bad stuff about Unity setup. I wasn't saying copy it verbatim.
[img]http://7d4iqnx.gif;rWRLUuw.gi

morganw

I mean, your quality setting does not change the resolution you chose to run in. So don't have an option saying Hq3x that doesn't necessarily give you 3x scaling. Just pick 3x scaling, and then set scaling to high quality.

Gurok

#12
Quote from: morganw on Sat 28/05/2016 16:14:37
I mean, your quality setting does not change the resolution you chose to run in. So don't have an option saying Hq3x that doesn't necessarily give you 3x scaling. Just pick 3x scaling, and then set scaling to high quality.

Oh. In that case, I agree there. It might be too much fiddling for CW though.

Quote from: morganw on Sat 28/05/2016 15:39:47
At the moment it's showing scaling multipliers under Filter (as in, the filter implies a scaling by it's name) and it looks like the scaling options are having certain multipliers removed based on the filter you pick.

I don't know if this is the case. As I see it, the options for Filter change when you change Display Driver. I agree that we should putting filters below scaling anyway. It would make more sense that it's subordinate, even if it's not right now.

Regarding these:

Quote from: morganw on Sat 28/05/2016 15:39:47
Stretch, keep game's aspect ratio --> Full-screen scaling (preserve aspect ratio)
Stretch to whole screen (window) --> Full-screen scaling

This makes it feel like they apply to full-screen mode. I would go with:

Stretch, keep game's aspect ratio --> Stretch to fit screen (preserve aspect ratio)
Stretch to whole screen (window) --> Stretch to fit screen

And with this:

Quote from: morganw on Sat 28/05/2016 15:39:47
Best round scaling --> Pixel-perfect scaling

"Best" is troublesome here, but "pixel-perfect scaling" also doesn't help convey exactly what's happening, i.e. there's nothing that means maximum. I think max is the ideal term. In lieu of a good description for "pixels whose scale is a whole number", I would say we classify 1x, 2x, 3x, etc. as multipliers. I know that multipliers don't have to be integers, but integer values are the only multipliers mentioned. That would make it:

Best round scaling --> Max multiplier (5x)

Edit: If you wanted to be extra pedantic, you could have max whole-number multiplier or max round multiplier, but I think that just makes it a bit clunky.
[img]http://7d4iqnx.gif;rWRLUuw.gi

morganw

Quote from: Gurok on Sat 28/05/2016 16:37:47
I don't know if this is the case. As I see it, the options for Filter change when you change Display Driver. I agree that we should putting filters below scaling anyway. It would make more sense that it's subordinate, even if it's not right now.
At the moment, if you pick Hq3x, the 2x scaling option will magically disappear. I think it's best if the options presented remain consistent. After changing the graphics driver, that's fair enough, you'd expect it works differently.

Quote from: Gurok on Sat 28/05/2016 16:37:47
Best round scaling --> Max multiplier (5x)
Sound good to me.

Presumably this form isn't straightforward to edit? Also I seem to recall someone already wrote a replacement in Lua, what happened to that one?

Crimson Wizard

#14
Quote from: morganw on Sat 28/05/2016 16:47:34
Presumably this form isn't straightforward to edit?
That depends on which kind of edit you have in mind. Moving controls around and modifying their content is trivial, adding something advanced is not, because the form is still written using pure WinAPI.
Also, currently setup program is very tightly bound with the engine, it receives some data from it (like lists of supported filters). If whenever we change to different application, we would need to implement similar bind somehow.

E: The main issue (at least for me) is the time, because I honestly do not want to spend more than needed on setup program while there are more important issues waiting to be adressed.

Gurok

Quote from: morganw on Sat 28/05/2016 16:47:34
Presumably this form isn't straightforward to edit? Also I seem to recall someone already wrote a replacement in Lua, what happened to that one?

Well, I think the Lua replacement still exists.

http://www.adventuregamestudio.co.uk/forums/index.php?topic=49511.0

The main problem I see with it is that there's no way to externally query the resolution of a game (e.g. 320x200) and various devices available to AGS. I think this implementation just assumed common devices and scaling up to 8x. It's a nice idea, but without perhaps some command-line support for querying game and hardware info in the AGS runtime, it can't completely replace the functionality of the built-in setup tool.
[img]http://7d4iqnx.gif;rWRLUuw.gi

morganw

Quote from: Crimson Wizard on Sat 28/05/2016 16:58:07
E: The main issue (at least for me) is the time, because I honestly do not want to spend more than needed on setup program while there are more important issues waiting to be adressed.

That's fair enough. I think just these things would make it easier to understand:

- rename scaling options using Gurok's suggestions
- imply filter does not apply unless scaling is in use (just move it underneath and potentially disable it if not scaling)
- Change "Best round scaling (x1)" to "None", because that isn't going to use any scaling filter (right?)

Crimson Wizard

Here's an update:
* merged two Hqx filters into one. This means that now you cannot select distinct one, and algorithm is chosen automatically judging on required scaling. I hope that won't cause any trouble...
* made filter partially depending on scaling (disabled when scaling is None).
* scaling renames.

http://www.mediafire.com/download/5ruoaw094t4oau4/acwin_3.4.0.7-improve-winsetup.zip

Also, I removed downscale multipliers. Downscaling works pretty bad in general, I guess making it fit in the screen is the only sane choice (this is what engine does on its own when it finds out that game is too large for the screen)?



morganw

I think that this one is much easier to understand. If automatic selection of the Hqx filter type would be an issue you could have "Limit Hqx to x2" (or something similar) in the advanced section, for spacing you could move VSync option out of advanced and into "Graphics settings" (now that it works in Direct3D mode). But as it is now is fine to me.

Dave Gilbert

#19
Thanks CW!

I compiled my game with the new ACWIN and played around. Sadly, using any type of scaling in windowed mode results in a black screen. The music plays, but the screen is completely blank. Running in full-screen or a non-scaled window (native: 640 x 360) is fine. I am trying to run the game in Direct3D mode if that helps. (AGS games don't even run in DirectDraw mode on my computer!)

edit: I found one scaling setting that DOES work. If I select x2 it works fine. Any other option but "None" results in a black screen.

SMF spam blocked by CleanTalk