AGS 3.3.0 Release Candidate

Started by Crimson Wizard, Thu 04/04/2013 19:16:28

Previous topic - Next topic

Radiant

And that works flawlessly. Well done, CW!

Crimson Wizard

Good to hear.

One final thing in my list is music skipping (without threaded audio).
Can someone provide me more information on this: which game, what room transitions are affected? Does this happen everywhere or on some computers only?
Does this happen in your "Heroine Quest"? I still have some beta version, I may use it for test if I'll know where to look at.

AGD2

#522
Quote from: Crimson Wizard on Mon 02/12/2013 21:19:56
Ok, here's another try. I found that in some cases D3D9 can change window style, so this version has a fix to set it back when D3D9 is cancelled.
http://www.mediafire.com/download/o2193bkfljdbgkk/acwin1148plus_3dec2013.7z

I can also confirm that this works on my netbook which doesn't support D3D9. However, this problem still persists which I reported a few pages back:

Spoiler

Here's some feedback running 640x400 games with the Max Nearest Neighbor filter:

On my 4:3 monitor:

-The "Max Nearest Neighbor" filter doesn't work for 640x400 games (Direct3d or DirectDraw5) in Full-screen mode if "Force alternate letterbox resolution" is unchecked. In this case, the game runs full-screen at 640x400, but stretches out vertically to fill the entire screen height.

-If I run the game in a window with the exact same settings above, then the Max filter (2x NN filter in my case) will be used.

-If I run at full-screen with the same settings above, but check "Force alternate letterbox resolution", then the Max filter (2x NN filter) will be used.
[close]

I was also wondering if it would be a good idea to do something similar for filter error messages? That is, rather than having game display an error message that X display resolution/filter is not supported, it could simply drop back to trying the Max NN filter instead, and if that fails, it would attempt to run the game with no filter.

Quote from: Crimson Wizard
One final thing in my list is music skipping (without threaded audio).
Can someone provide me more information on this: which game, what room transitions are affected? Does this happen everywhere or on some computers only?
Does this happen in your "Heroine Quest"? I still have some beta version, I may use it for test if I'll know where to look at.

Are you talking about music tracks skipping or stuttering? The latest version of Al Emmo music will often stutter if multi-threading is disabled in the acsetup.cfg file. Particularly when restoring a game from the title screen or when exiting/entering any room where there are a lot of animations playing. The game uses instant screen transitions and I think it happens on many peoples' computers. I can send you a copy of the latest version by PM.

Radiant

#523
Yes, the music skipping happens in HQ too. I cannot reliably reproduce this on my computer, but some of the others have the issue more consistently. It appears not to happen under Win8.

Testing suggests that the following:
ACI version 3.3.0.1148 has the skipping issue, but it stops with threaded=1 in the acsetup.cfg file
ACI version 3.3.0.1146 has the skipping issue, but apparently this depends on the contents of acsetup (other than threaded); we'll see if we can find details, but running without an acsetup.cfg file does have skipping.
ACI version 3.3.0.1144 does not have the skipping issue.

Monsieur OUXX

Quote from: Crimson Wizard on Tue 03/12/2013 11:01:50
One final thing in my list is music skipping (without threaded audio).

Try out the "glittery cursor" module I just posted in "modules and plugins". don't recompile it, run it "as is" -- it was compiled with 3.2.1. On my Windows 7, the sound is terrible. It's not even stuttering, it sounds more like two wires are touching each other and doing cracks in the speaker. It's a game issue, though, because the game's Ogg file sounds OK when played in VLC.
 

Crimson Wizard

Quote from: AGD2 on Tue 03/12/2013 15:44:12
-The "Max Nearest Neighbor" filter doesn't work for 640x400 games (Direct3d or DirectDraw5) in Full-screen mode if "Force alternate letterbox resolution" is unchecked. In this case, the game runs full-screen at 640x400, but stretches out vertically to fill the entire screen height.
But is not that what is supposed to happen if you uncheck "letterbox mode"?

AGD2

For 640x400 games, if you manually select the 2X NN filter and uncheck "letterbox" mode, it uses the 2X NN filter and displays black bars at the top and bottom of the screen. It's only when the "Max NN" filter is used that it runs the game with no filter at all.

To be clear, if I run a 640x400 game (letterbox mode unchecked) with no filter selected, it will also run at 640x400 stretched vertically to fill the screen. The real issue here is that the Max NN filter doesn't run the full-screen game with the 2X NN filter when my system is capable of doing so.

Crimson Wizard

AGD2, can you post the contents of agsgame.log produced when you run with max filter and letterbox unchecked?

AGD2

#528
For comparison's sake, here's the log with the Max NN filter selected and "letterbox" unchecked:

Spoiler

Adventure Game Studio v3.3 Interpreter
Copyright (c) 1999-2011 Chris Jones and 2011-2013 others
ACI version 3.3.0.1148

*** ENGINE STARTUP ***
Installing exception handler
Reading config file
Initializing allegro
Setting up window
Initializing game data
Game data file: c:/AGS8/MAGESI~2/Compiled/MAGESI~1.EXE

Initializing TTF renderer
Initializing mouse
Checking memory
Initializing audio vox
Initializing keyboard
Install timer
Initialize sound drivers
Install exit handler
Initialize path finder library
Load game data
Mage's Initiation 640x400
Checking for disk space
Initializing MOD/XM player
Init gfx driver
Created graphics driver: Direct3D 9
Initializing screen settings
Init gfx filters
Detecting maximal supported scaling
Couldn't find acceptable supported resolution
Applying scaling filter: None
Switching to graphics mode
Widescreen side borders: disabled in Setup
Attempt to switch gfx mode to 640 x 400 (32-bit)
Succeeded. Using gfx mode 640 x 400 (32-bit)
Preparing graphics mode screen
Initializing colour conversion
Check for preload image
Initialize sprites
Set up screen
Initialize game settings
Prepare to start game
Audio is processed on the main thread
Checking replay status
Engine initialization complete
Starting game
Loading room 45
***** ENGINE HAS SHUTDOWN
[close]


Here's the log with the 2X NN Filter and "letterbox" unchecked:

Spoiler

Adventure Game Studio v3.3 Interpreter
Copyright (c) 1999-2011 Chris Jones and 2011-2013 others
ACI version 3.3.0.1148

*** ENGINE STARTUP ***
Installing exception handler
Reading config file
Initializing allegro
Setting up window
Initializing game data
Game data file: c:/AGS8/MAGESI~2/Compiled/MAGESI~1.EXE

Initializing TTF renderer
Initializing mouse
Checking memory
Initializing audio vox
Initializing keyboard
Install timer
Initialize sound drivers
Install exit handler
Initialize path finder library
Load game data
Mage's Initiation 640x400
Checking for disk space
Initializing MOD/XM player
Init gfx driver
Created graphics driver: Direct3D 9
Initializing screen settings
Init gfx filters
Applying scaling filter: StdScale2
Switching to graphics mode
Widescreen side borders: disabled in Setup
Attempt to switch gfx mode to 640 x 400 (32-bit)
Failed, resolution not supported
Widescreen side borders: disabled in Setup
Attempt to switch gfx mode to 640 x 480 (32-bit)
Succeeded. Using gfx mode 640 x 480 (32-bit)
Preparing graphics mode screen
Screen resolution: 640 x 480; game resolution 640 x 400
Initializing colour conversion
Check for preload image
Initialize sprites
Set up screen
Initialize game settings
Prepare to start game
Audio is processed on the main thread
Checking replay status
Engine initialization complete
Starting game
Loading room 45
***** ENGINE HAS SHUTDOWN
[close]

Both of these should ideally give the same result by adding black bars to the top and bottom of the screen under the 2X NN filter before attempting to run the game with no filter.

Crimson Wizard

Oh, I see now. This is something I missed.
What happens is that when AGS applies gfx mode and fails, it will try letterboxed mode even if told not to force one. Your monitor does not support (640x400)x2 => 1280x800, but supports (640x480)x2 = > 1280x960, that's why x2 scaling works.

At the same time the max filter detection did not check alternate heights unless it is forced.

Please try this new build:
http://www.mediafire.com/download/3cgabyvj23w0pab/acwin1148plus_3dec2013-2.7z

AGD2

That works perfectly now, thanks!

Radiant

I'm curious what happened to this issue, regarding characters scaling at a higher resolution than the game runs at? Or was that too complex to still fit in 3.3?
[IMGzoom]http://i.imgur.com/w3ge9ld.png[/imgzoom][IMGzoom]http://i.imgur.com/OtW4Qyi.png[/imgzoom]

Crimson Wizard

#532
Frankly, I have no idea.

How to reproduce this? Are there particular conditions?

Snarky

See here for earlier discussion.

This example is the behavior of Aeronuts running, I believe, with a 2x nearest-neighbor filter in Direct3D and DirectDraw. The captures are really old, but apparently this is still the current Direct3D behavior? What it seems to do is to FIRST scale the sprites to 2x, and THEN scale them down based on the in-game scale factor (or multiplying the two scalings together before applying it), rather than the other way around. This leads to them effectively running in twice the resolution of the game, as well as to a number of nasty artifacts.

Since the topic is back up, let me respond to this:

Quote from: AGD2 on Mon 11/11/2013 22:28:14
Yes, though the effect looks more pronounced on a low-res 320x200/320x240 background than it does on a 640x400/640x480 background.

[imgzoom]http://www.himalayastudios.com/scratch/hi-res_scaling.jpg[/imgzoom]

A couple of things about this:

The screen on the left is blurrier in general (noticeable e.g. on the rock in the foreground). I don't know if that's because you've saved the file as a jpeg, or if it's another Direct3D artifact. (In addition to the scaling issues, Direct3D has at least in the past also tended to mess up the colors â€" you can see the increased banding in the sky in the Aeronuts example above. Just one more reason why I never use it.)

The difference in the look of the sprite is not just due to the higher resolution, but also that one of them is scaled with interpolation and the other with nearest neighbor. Simulating an interpolated low-resolution version (using a mosaic filter), gives this:


(high-res interpolated, sim. low-res interpolated, low-res NN)

I agree that in this example the resolution mixing is not as bad as in the one I gave, but I still prefer to stick to one consistent resolution. Respect the grid!

AGD2

The reason it's smooth in that screenshot is because the "Smooth scaled sprites" option is selected in winsetup.exe.

I'm still gonna request an option for this behaviour. There are other cases where it has come in handy. When putting together hi-res 2D cutscene shots which were scripted in AGS and then converted to Vorbis video files, for example. This style of downscaling made the images much sharper. Being optional, those who don't like it don't need to use it. But I'd prefer to have that option available.

Calin Leafshade

I'd argue that it's a bug for the following reason:

It's inconsistent. You will get different character resolution depending on the scaling mode the player chooses. It might look ok at 2X because the character is only out by a factor of 2. But, like in the aeronauts screenshot, where the factor is larger like 4, 5 or 6 times it's always going to look ridiculous and theres nothing the developer can do about it.


Snarky

The Aeronuts example is, on closer inspection, running in 3X. If it was running with "smooth scaled sprites" you probably wouldn't be seeing those weird thin pixels, but of course the sprite would still be conspicuously higher resolution than the background.

I agree with Calin that in principle, the scaling filters, particularly the nearest neighbor ones, shouldn't change how different parts of the game appear relative to each other. If a game maker wants this effect, it should be some kind of internal setting that happens before the final, user-configured filters.

JJS

Ask me about AGS on PSP, Android and iOS! Source, Daily builds

selmiak

hmm, maybe AGS should then provide a 200%, 75%, 50%, 25% scaling view option for more control over enginenative scaling that might work different from what the autor/artist wants to happen.

Scavenger

Quote from: selmiak on Fri 06/12/2013 12:16:56
hmm, maybe AGS should then provide a 200%, 75%, 50%, 25% scaling view option for more control over enginenative scaling that might work different from what the autor/artist wants to happen.

Couldn't you script that really easily in AGS anyway? Set a few properties, and have in your rep_exec_always:

Code: AGS

function game_start ()
{
    player.ManualScaling = true;
}

function repeatedly_execute_always ()
{
    if (GetScalingAt (player.x,player.y) > 100) 
    {
        player.ChangeView (player.GetProperty ("BIG CHARACTER!!!"));
        player.SpeechView = player.GetProperty ("BIG CHARACTER TALKIN!!!");
        player.SetIdleView (player.GetProperty ("BIG CHARACTER IDLING!!!"),whatevervariableyousettheidletimerto);
        player.Scaling = GetScalingAt (player.x,player.y) / 2; 
    }
    else if (GetScalingAt (player.x,player.y) =< 50)
    {
        player.ChangeView (player.GetProperty ("tiny character"));
        player.SpeechView = player.GetProperty ("tiny character talkin");
        player.SetIdleView (player.GetProperty ("tiny character idlin"),whatevervariableyousettheidletimerto);
        player.Scaling = GetScalingAt (player.x,player.y) * 2; 
    }
else
{
        player.ChangeView (player.GetProperty ("Normal Character"));
        player.SpeechView = player.GetProperty ("Normal Character Talking");
        player.SetIdleView (player.GetProperty ("Normal Character Idling"),whatevervariableyousettheidletimerto);
        player.Scaling = GetScalingAt (player.x,player.y); 
}

}


And you could just use the Properties to set the initial values and just have an array you change at runtime, to have like, different outfits and junk. No need to implement it as an engine function.

SMF spam blocked by CleanTalk