adventuregamestudio / ags

AGS editor and engine source code
Other
705 stars 159 forks source link

Whispers of a Machine is run in wrong native resolution #868

Closed ghost closed 4 years ago

ghost commented 5 years ago

When run with our AGS engine "WoaM" appears to have higher native resolution than when run with the original executable. This is easily noticeable during intro sequence because the title splashscreens do not cover whole screen, and later in the main menu the game version is printed not in the left-bottom corner but somewhat higher.

If you run winsetup in the original game it indicates custom resolution 640x360, but the game data defines standard size of 640x400. Looking into their engine code it's apparent they modified the meaning of standard resolution constants.

I think in this situation the only way to force it run correctly (besides guessing by game GUID) is to support overriding options in config which tell wanted native resolution (and players will have to type this in config by hand).

morganwillcock commented 5 years ago

Could they not patch their game to specify a custom resolution instead of modifying constants?

ghost commented 5 years ago

Could they not patch their game to specify a custom resolution instead of modifying constants?

Their custom engine is made on top of AGS 3.3.0, while custom resolutions were implemented in 3.4.0. So the question is rather, may they upgrade to 3.4.0 (at least). It's also still unknown what other changes they had there (I did not compare their code fully to our 3.3.0 yet). And apparently their Android port works better too (https://github.com/adventuregamestudio/ags/issues/863#issuecomment-511150292) (or maybe it was our old Android port that worked better).

AlanDrake commented 5 years ago

I don't think this should be counted as an actual issue. Making guesses about custom engine versions is not something AGS should do.

fernewelten commented 5 years ago

I don't think this should be counted as an actual issue.

Analyzing C++ code and fiddling with it is a lot of very time-consuming hassle. So the game authors must have felt a lot of pain before resorting to this.

Why would they have thought that they cannot live without the 600x400 resolution constant, even to the point of perusing the code for it and then patching the code? That would be the real issue behind the issue.

If there is a bad “deficiency” in the AGS code that annoys other game writers, too, then we can improve the engine for everyone by fixing the “deficiency” in the main code path. Apart from that, however, AGS isn't SCUMM; we are under no obligation to maintain compatibility with any old obscure engine modification, hack, or copy protection that might have been built into the Adventure game engine anytime anywhere.

They've patched the engine code, so they have in essence forked the project. They must have known that those patches will not migrate into new versions and have been fine with that. Either they themselves are happy with patching all the new versions as they come along; or they don't plan on having their game run on new engine versions. In either way, why should we second-guess their intent.

messengerbag commented 5 years ago

Analyzing C++ code and fiddling with it is a lot of very time-consuming hassle. So the game authors must have felt a lot of pain before resorting to this.

Isn't the explanation rather obviously that when they started the project, the engine didn't support 640x360 resolution, so this was the simplest/only way to achieve that?

Anyway, Joel and Petter are not impossible to get hold of if you want to just ask them.

AlanDrake commented 4 years ago

Unsupported. The only way to handle this properly would be having game specific hacks, like ScummVM does, but AGS3 becomes officially an "AGS Player", this issue is beyond scope. Besides the game can be recompiled on newer engines with maybe just a minor game.agf modification.