#12964 closed defect (fixed)
AGS: Wrong font used for police report in Kathy Rain
Reported by: | criezy | Owned by: | criezy |
---|---|---|---|
Priority: | normal | Component: | Engine: AGS |
Version: | Keywords: | ||
Cc: | Game: |
Description
When playing Kathy Rain in ScummVM, a different font is used for the police report compared to the original game. However the font used in ScummVM is the same one as used with the standalone AGS executable. So the difference may be due to some changes made by the Kathy Rain developer.
The attached screenshots show the police report with the modified AGS used by the original game, the standalone AGS, and ScummVM, all using the same datafiles.
The source code for the modified AGS engine used by Kathy Rain is available at https://github.com/josthas/KrusAGS
Reproduction steps
- Load the attacked save game
- Click on the bookshelf behind the desk and select "Search Files"
Version
Kathy Rain from Steam (mac version)
ScummVM 07ce31ec (earlier versions crash due to bug #12948)
Attachments (4)
Change History (12)
by , 3 years ago
Attachment: | original game.png added |
---|
by , 3 years ago
Attachment: | scummvm.png added |
---|
by , 3 years ago
Attachment: | standalone AGS.png added |
---|
by , 3 years ago
Attachment: | kathyrain.006 added |
---|
comment:1 by , 3 years ago
comment:2 by , 3 years ago
That is interesting. I was loading the game from the launcher. But when loading it from inside the game I do indeed get the correct font (same as the original game)!
That means we do something better than the standalone AGS, as with that one I was obviously loading from inside the game, and still got the wrong font.
That could point to something that the ags_sprite_font plugin does, since this is the main piece of code that the Kathy Rain developer changed, and in ScummVM we integrated those changes in a special version of the plugin used for Kathy Rain (and Whispers of a Machine). But the standalone AGS does not have those changes. And maybe this plugin does some initialisation when starting the game, but not when loading from the launcher... That is only a wild guess tough.
comment:3 by , 3 years ago
And I have now verified that AGSSpriteFont::SetVariableSpriteFont
gets called a number of time when starting Kathy Rain, but it does not get called when loading a savegame from the launcher!
The calls come from RunTextScript(_G(gameinst), "game_start");
that is called from start_game().
* frame #0: AGS3::Plugins::AGSSpriteFont::AGSSpriteFont::SetVariableSpriteFont(params) at ags_sprite_font.cpp:116:2 frame #1: AGS3::Plugins::AGSSpriteFont::AGSSpriteFont::execMethod(name, params) at ags_sprite_font.h:39:2 frame #2: AGS3::Plugins::AGSSpriteFont::AGSSpriteFontClifftopGames::execMethod(name, params) at ags_sprite_font_clifftop.h:33:2 frame #3: AGS3::Plugins::PluginMethod::operator(params)(AGS3::Plugins::ScriptMethodParams&) const at plugin_base.h:205:8 frame #4: AGS3::call_function(method, object=nullptr, numparm=2, parms) at script_runtime.cpp:183:10 frame #5: AGS3::ccInstance::Run(curpc=31885) at cc_instance.cpp:998:17 frame #6: AGS3::ccInstance::CallScriptFunction(funcname="game_start", numargs=0, params=nullptr) at cc_instance.cpp:342:15 frame #7: AGS3::RunScriptFunctionIfExists(sci, tsname="game_start", numParam=0, params=nullptr) at script.cpp:364:32 frame #8: AGS3::RunTextScript(sci, tsname="game_start") at script.cpp:413:14 frame #9: AGS3::start_game() at game_start.cpp:89:2 frame #10: AGS3::initialize_start_and_play_game(override_start_room=0, loadSaveGameOnStartup=-1) at game_start.cpp:125:3 frame #11: AGS3::initialize_engine(startup_opts) at engine.cpp:1226:2 frame #12: AGS::AGSEngine::run() at ags.cpp:190:2
However when loading a savegame from the launcher we do not get there as start_game() is not called.
In initialize_start_and_play_game()
it first calls start_game_load_savegame_on_startup()
, and then calls start_game()
only if a savegame was not loaded.
I am wondering if the calls to the "game_start" scripts should be move from start_game()
to initialize_start_and_play_game()
so that they happen before the call to start_game_load_savegame_on_startup()
...
This is something we might need to discuss with the AGS developers as I have no idea if such a change would be a good idea and how it might impacts other games.
comment:4 by , 3 years ago
It is expected that the "game_start" scripts are not run on a reload.
We could hack the engine to run those on a reload for Kathy Rain, and cross our fingers that it does not introduce other issues, but the easiest solution seems to be to disable loading from the launcher for this game.
comment:6 by , 3 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
I have now disabled loading from the launcher for those two games.
comment:7 by , 3 years ago
I hope this is only a temporary solution. I would really hate to permanently lose the ability to load from the launcher.
comment:8 by , 3 years ago
Unfortunately there may not be a better solution.
I did experiment a bit with forcing executing the game_start script when loading from the launcher, which does get the correct fonts, but it also introduces other issues in both Kathy Rain and Whispers of a machine. Unless I missed something in my analysis of the issue, the game was just not designed with the load savegame on startup feature and is not really compatible with it.
Are you loading from the launcher or in-game? I’m wondering if this is a duplicate of #12945