Poobslag / turbofat

Block-dropping puzzle game
MIT License
52 stars 17 forks source link

Game crashes sometimes on scene change #2821

Open Poobslag opened 2 days ago

Poobslag commented 2 days ago

In Adventure mode, I finished a level in Starberry Mountain. Instead of being dropped back to the map screen, the game crashed.

godot2024-10-15T12.34.30.log godot.log godot(4).log

The logs apparently show that the game was in the process of retrieving the achievement status for many achievements.

Poobslag commented 2 days ago

It always seems to be for the "aggregate achievement" achievement triggering the crash -- the one that checks for all of the dependent achievements.

Poobslag commented 2 days ago
func is_achievement_achieved(id: String) -> bool:
    _log("Getting Steam achievement: %s" % [id])
    var get_achievement_response: Dictionary = Steam.getAchievement(id)
    _log("getAchievement(%s) response: %s" % [id, get_achievement_response])

    return get_achievement_response["achieved"]

Maybe we should check achievements differently? This method optimistically assumes the method will always return a dictionary with an achieved boolean in it. Maybe it returns garbage sometimes?

Poobslag commented 1 day ago

I've made a new version of the game which checks these getAchievement responses and makes fewer steam calls, but it still crashed a moment ago. I'm hoping that if I run the game with --verbose flag enabled, it will maybe log something about the crash -- but it crashes very unpredictably.

On Monday, I playtested for 12 hours and the game didn't crash once. On Tuesday, it crashed 2 or 3 times for me! All of the crashes for me were during levels in Starberry Mountain.

Faulting application name: turbofat.exe, version: 1.3.0.0, time stamp: 0x66f60127
Faulting module name: ntdll.dll, version: 10.0.19041.5007, time stamp: 0x688f8c4b
Exception code: 0xc0000374
Fault offset: 0x00000000000ff3c9
Faulting process id: 0x6818
Faulting application start time: 0x01db1fe5d89fcc3c
Faulting application path: C:\workspace\steam\steamworks-sdk\tools\ContentBuilder\content\turbofat-win\turbofat.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: ae5dedad-6e58-4cb7-b4c4-839f75a74871
Faulting package full name: 
Faulting package-relative application ID: 
Poobslag commented 1 day ago

https://github.com/godotengine/godot/issues/85692

This may be related to Godot #85692. We could try adjusting breadcrumb.change_scene() to do something different.