libsdl-org / sdl12-compat

An SDL-1.2 compatibility layer that uses SDL 2.0 behind the scenes.
Other
193 stars 40 forks source link

Alpha Centauri - Game is stuck after playing a video #278

Closed vv221 closed 1 year ago

vv221 commented 1 year ago

Alpha Centauri used to be provided with a native engine developed by Loki, that can still be used with ./play.it (using the game build sold on GOG as a basis): https://www.dotslashplay.it/en/games/alpha-centauri

After playing the video of a secret project, the game is stuck on a black screen (maybe the last frame of the video). In addition, these videos can no longer be skipped. With the real SDL 1.2 the video can be skipped by clicking, and after it is played in full we are back to the regular game screen.

The attached saved game is one turn before the completion of a secret project. Ending the turn triggers the video playback: secret-project-video.sav.gz

The file needs to be ungzipped, then copied into ~/.loki/smac/saves/.

Since this would require access to a commercial game for investigating the issue, I would be OK to buy a gift code to someone willing to work on this issue but does not own a copy of the game yet.

I am of course willing to provide more information, but since I’m quite new to anything related to SDL I would need step-by-step instructions on how to debug the issue.

vv221 commented 1 year ago

The intro video played when starting the game does not have this issue. It can be skipped the usual way.

vv221 commented 1 year ago

More details on the Alpha Centauri build used to trigger this bug is shared in another issue: https://github.com/libsdl-org/sdl12-compat/issues/277#issuecomment-1327217654

vv221 commented 1 year ago

For some reason this no longer triggers, despite not changing anything on my host system (no upgrade of anything related to SDL). If I find more details on what triggers the freeze I will share them.

sulix commented 1 year ago

The inability to skip videos happens pretty sporadically for me, too. It mostly happens under Wayland, but even then, it's possible to skip the video if you're quick enough.

It looks like an issue with SDL_EVENTTHREAD: PR #281 seems to fix it here.

icculus commented 1 year ago

Will close this when @vv221 has a chance to confirm the PR we merged solved this problem as well.

vv221 commented 1 year ago

While I did not get the game freeze again, I still am sometimes unable to skip videos if I do not click in the first couple seconds (for some reason this is not always the case). This includes both the intro video, and the secret project ones.

For the intro video this is an issue that I get with the real SDL 1.2 too. For the secret project ones I would need to run some extra tests, as I tend never to skip them during regular gameplay so it might have been a long standing issue with real SDL 1.2 that I failed to notice in the first place.

Since the limited ability to skip videos does not seem to be specific to sdl12-compat, and I did not manager to replicate the game getting stuck after video playback, maybe it is worth closing this issue and opening a new one specific to the skipping issue? Or maybe it’s even out of scope for this library, as it happens with real SDL 1.2 too (at least for the intro video)?

icculus commented 1 year ago

If it happens with real SDL 1.2, too, then it's not a bug in sdl12-compat (arguably this is either going to turn out to be a bug or intentional behavior in Alpha Centauri, if I had to guess).

I'm going to close this, but if you have time and want to check if the secret project ones behave the same on SDL 1.2, we can reopen the bug if necessary!