Seite 1 von 1

Steam-API manchmal nicht erreichbar

Verfasst: 09.06.2024, 20:05
von Schrompf
Moin,

ich kriege einen seltenen Crash von Splatter-Spieler*innen. Hab jetzt einen Minidump bekommen, und der ist überraschend lesbar. Im Log dazu sehe ich, dass die Steam-Einrichtung nicht geklappt hat.

Code: Alles auswählen

if( !SteamAPI_Init() ) 
  Log("Ach herje, so ein Scheib");
Dahinter gibt's leider paar Ecken, wo ich unbemerkt Code eingebaut habe, der sich auf Steam verlässt. Allen voran meine interne Profilverwaltung, auch so ein Fall von Lebenszeitverschwendung. Ohne Steam gibt's da verschiedene Spielprofile, zwischen denen man hin- und herschalten kann. Und im Steam gibt's dann automatisch eins mit dem Namen des Steam-Users. Das kann ich jetzt auch nicht mehr ändern, weil dann alle ohne ihre Spielstände da stehen würden. Beim nächsten Spiel bin ich schlauer.

Warum könnte die SteamAPI manchmal nicht verfügbar sein? Und wie lös ich das jetzt? Es scheint laut Log insgesamt der erste Start zu sein, also kann ich auf diesem Rechner nix kaputt machen. Aber wenn die SteamAPI wirklich random mal scheitern sollte, dann hab ich den Spielernamen nicht und dann lege ich stillschweigend ein neues Profil an und die Leute stehen ohne Geld, Upgrades und Spielstände da!

Re: Steam-API manchmal nicht erreichbar

Verfasst: 09.06.2024, 20:07
von Schrompf
Inzwischen kann ich es reproduzieren, indem ich einfach die Steam-Version ohne AppID starte. Damit kriege ich das Ding zumindest crashfrei, wenn ich mich nur darauf verlassen kann, dass die SteamAPI dann *immer* scheitert. Wenn die SteamAPI bei nem späteren Run überraschend wiederkommt, hab ich auch wieder das Problem, dass damit ein neuer Strang Fortschritt eröffnet wird und alles vorher verdeckt.

Re: Steam-API manchmal nicht erreichbar

Verfasst: 10.06.2024, 08:11
von TomasRiker
Könnte das Fehlschlagen von SteamAPI_Init mit Netzwerkproblemen zusammenhängen?
Spricht was dagegen, einfach das Spiel mit einer Fehlermeldung zu beenden, wenn das fehlschlägt?

Re: Steam-API manchmal nicht erreichbar

Verfasst: 10.06.2024, 09:32
von Matthias Gubisch
Ausgehend davon dass die Doku vollständig ist, findest du hier die Gründe warum SteamAPI_Init fehlschlagen kann ;)

https://partner.steamgames.com/doc/api/steam_api

Invalid/fehlende AppID ist zwar ein Grund, aber ob das auch beim dem Crashdump den du bekommen hast der Grund war?

Viele Spiele haben das so gelöst dass sie den Steam Fortschritt auch lokal halten und in so einem Fall dann der Fortschritt nur lokal gespeichert und bei der nächsten erfolgreichen Verbindung mit Steam dann synchronisiert wird.

Re: Steam-API manchmal nicht erreichbar

Verfasst: 11.06.2024, 09:47
von Schrompf
Stimmt, die Doku von Steam ist ja echt gut. Dass das überhaupt scheitern kann, obwohl die Leute das anscheinend ganz banal aus ihrer Spielebibliothek starten, hat mich verwundert.

Der Crash war im Profil-Handling - das Ding hätte es nie geben dürfen, niemand "erstellt ein neues Profil", um auf nem Rechner zusätzlich zur Rechner-Besitzerin einen eigenen Progress zu bekommen. Nun hab ich das aber, und jetzt muss ich damit leben, dass das Spiel eine unnötig komplizierte Verzeichnisstruktur auf vielen Rechnern aufgemacht hat, die weiter funktionieren muss.

Ich hab jetzt aber genau das gebaut, was ihr empfahlt: das Spiel speichert jetzt Fortschritt und Spielstände sowohl in die SteamStorage als auch auf die lokale Platte, und lädt das jeweils Neuere. Jetzt hab ich das Problem, dass mir SteamStorage()->GetFileTimestamp() die Sekunden seit 1970 gibt, aber duration_cast<seconds>(std::filesystem::last_write_time().time_since_epoch()) nicht. SteamAPI sagt 2021, filesystem sagt 2393.

Re: Steam-API manchmal nicht erreichbar

Verfasst: 11.06.2024, 13:56
von Krishty
Weil die Epoche auf Windows nicht mit 1970 beginnt, sondern mit 1570 oder so. Gibt ja nicht nur eine. (In der Astronomie auch gern 1900 oder 2000.)