Posted August 14, 2016
First, thanks to WormwoodStudio for writing this game. It is a well written story, portrayed by witty dialogue, endearing characters and beautiful art, all wrapped in a well executed interface. Very inspiring!
I played the Linux version as bundled by GOG, but should point out this is a AGS engine issue, so it may affect other platforms too.
I propose two solutions here to help anyone else who might encounter this error. Nobody should suffer through crash-interruptions when playing a great game like Primordia :)
ANALYSIS
Upon reaching Metropol City in-game, I started experiencing random crashes:
Error: SpriteCache::removeOldest: Attempted to remove sprite ... that does not exist
AGS: ***** ENGINE HAS SHUTDOWN
A search on the AGS forums yielded few topics on this error, with no solutions anywhere. The only hint was that it relates to the creation of dynamic sprites.
SOLUTION #1
Grab a copy of the AGS engine source and build it yourself. This is easy enough following the steps provided on Github. After verifying the engine version which GOG bundled vs the latest source version, I figured the bug may be fixed, or at least, improved checks within the engine prevents the fatal crash. I was rewarded with a fully playable game without any incident.
I should note that save games are not compatible across engine versions, and you will have to restart your game afresh.
1. clone or download the source from github.com/adventuregamestudio/ags
2. follow the provided steps on that URL to configure and build
3. enter the Primordia game directory
cd ~/GOG Games/Primordia/game # adjust to your needs
4. remove the original configuration
mv acsetup.cfg acsetup.cfg.bak
5. create a new configuration
edit acsetup.cfg
Paste in these configuration lines, adjusting them as you see fit:
[graphics]
gfxfilter=stdscale
game_scale=4
[mouse]
speed=1.000000
[sound]
usespeech = 1
6. start the game by executing "ags" inside this Primordia game directory.
SOLUTION #2
Much to my chagrin I only discovered this solution after I built the engine and completed the game, it is untested but I am pretty sure it resolves the issue. So try this one first if you feel extra lazy :)
1. enter the Primordia game directory and edit the configuration file
cd ~/GOG Games/Primordia/game # adjust to your needs
edit acsetup.cfg
2. add this configuration setting to up the engine's allotted memory:
[misc]
cachemax=102400
This ups the cache to 100 MB, as I understand the default allocation is 20 MB, and when large scenes in-game reach this limit, the engine starts dumping sprites to free up memory, wreaking havoc with dynamically created sprites.
I played the Linux version as bundled by GOG, but should point out this is a AGS engine issue, so it may affect other platforms too.
I propose two solutions here to help anyone else who might encounter this error. Nobody should suffer through crash-interruptions when playing a great game like Primordia :)
ANALYSIS
Upon reaching Metropol City in-game, I started experiencing random crashes:
Error: SpriteCache::removeOldest: Attempted to remove sprite ... that does not exist
AGS: ***** ENGINE HAS SHUTDOWN
A search on the AGS forums yielded few topics on this error, with no solutions anywhere. The only hint was that it relates to the creation of dynamic sprites.
SOLUTION #1
Grab a copy of the AGS engine source and build it yourself. This is easy enough following the steps provided on Github. After verifying the engine version which GOG bundled vs the latest source version, I figured the bug may be fixed, or at least, improved checks within the engine prevents the fatal crash. I was rewarded with a fully playable game without any incident.
I should note that save games are not compatible across engine versions, and you will have to restart your game afresh.
1. clone or download the source from github.com/adventuregamestudio/ags
2. follow the provided steps on that URL to configure and build
3. enter the Primordia game directory
cd ~/GOG Games/Primordia/game # adjust to your needs
4. remove the original configuration
mv acsetup.cfg acsetup.cfg.bak
5. create a new configuration
edit acsetup.cfg
Paste in these configuration lines, adjusting them as you see fit:
[graphics]
gfxfilter=stdscale
game_scale=4
[mouse]
speed=1.000000
[sound]
usespeech = 1
6. start the game by executing "ags" inside this Primordia game directory.
SOLUTION #2
Much to my chagrin I only discovered this solution after I built the engine and completed the game, it is untested but I am pretty sure it resolves the issue. So try this one first if you feel extra lazy :)
1. enter the Primordia game directory and edit the configuration file
cd ~/GOG Games/Primordia/game # adjust to your needs
edit acsetup.cfg
2. add this configuration setting to up the engine's allotted memory:
[misc]
cachemax=102400
This ups the cache to 100 MB, as I understand the default allocation is 20 MB, and when large scenes in-game reach this limit, the engine starts dumping sprites to free up memory, wreaking havoc with dynamically created sprites.