Steam-API manchmal nicht erreichbar

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Schrompf
Moderator
Beiträge: 5042
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Steam-API manchmal nicht erreichbar

Beitrag 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!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5042
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Steam-API manchmal nicht erreichbar

Beitrag 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.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
TomasRiker
Beiträge: 96
Registriert: 18.07.2011, 11:45
Echter Name: David Scherfgen
Wohnort: Hildesheim

Re: Steam-API manchmal nicht erreichbar

Beitrag 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?
Matthias Gubisch
Establishment
Beiträge: 488
Registriert: 01.03.2009, 19:09

Re: Steam-API manchmal nicht erreichbar

Beitrag 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.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
Schrompf
Moderator
Beiträge: 5042
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Steam-API manchmal nicht erreichbar

Beitrag 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.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Steam-API manchmal nicht erreichbar

Beitrag 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.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten