Wo Spielstände und Einstellungen speichern?
Wo Spielstände und Einstellungen speichern?
Hallo,
welche Pfade darf (sollte) man zum Speichern von Spielständen und Einstellungsdateien verwenden? Unter MacOS ist das ja in der Regel dieser Pfad hier:
GetHomeDirectory() + "Library/Application Support/Name des Entwicklers/Name des Programms/"
Wie sieht es mit Windows (XP, Vista, 7 und 8 ) aus? Wo sollte ich da entsprechende Pfade anlegen?
welche Pfade darf (sollte) man zum Speichern von Spielständen und Einstellungsdateien verwenden? Unter MacOS ist das ja in der Regel dieser Pfad hier:
GetHomeDirectory() + "Library/Application Support/Name des Entwicklers/Name des Programms/"
Wie sieht es mit Windows (XP, Vista, 7 und 8 ) aus? Wo sollte ich da entsprechende Pfade anlegen?
Re: Wo Spielstände und Einstellungen speichern?
Unter Windows: AppData:
Code: Alles auswählen
GetEnvironmentVariable("appdata") + "\Name des Entwicklers\Name des Programms\"Re: Wo Spielstände und Einstellungen speichern?
Spielstaende in Appdata? Hab ich noch nie gesehen. GetHomeDirectory ist da wohl die bessere Wahl.
Re: Wo Spielstände und Einstellungen speichern?
Einstellungen würde ich (und mach ich auch) (egal ob Spiel oder Anwendung) unter
"%APPDATA%\Firma\Titel\" speichern.
Spielständen hingegen würde ich ehr (wenn die Nutzungsrechte da sind) im Ort der Anwendung/Spiel speichern oder gar nach einem Ort beim ersten Speichern fragen.
Spielstände sind ja hin und wieder zimlich "wichtig", sodass man diese ungern auf der Windows-HDD ablegen will.
"%APPDATA%\Firma\Titel\" speichern.
Spielständen hingegen würde ich ehr (wenn die Nutzungsrechte da sind) im Ort der Anwendung/Spiel speichern oder gar nach einem Ort beim ersten Speichern fragen.
Spielstände sind ja hin und wieder zimlich "wichtig", sodass man diese ungern auf der Windows-HDD ablegen will.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Wo Spielstände und Einstellungen speichern?
@edel
Dann kennst du nicht Minecraft.
Was ich aber meine, sind die Programmeinstellungen, die man im AppData-Verzeichnis abspeichern kann.
Spielstände können im "Eigene Dokumente"-Verzeichnis gespeichert werden:
Dann kennst du nicht Minecraft.
Was ich aber meine, sind die Programmeinstellungen, die man im AppData-Verzeichnis abspeichern kann.
Spielstände können im "Eigene Dokumente"-Verzeichnis gespeichert werden:
Code: Alles auswählen
EnableExplicit
Procedure.s GetSpecialFolder(CSIDL.l)
Protected *itemid.ITEMIDLIST
Protected location.s = Space(#MAX_PATH)
If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
If SHGetPathFromIDList_(*itemid, @location)
CoTaskMemFree_(*itemid)
If Right(location, 1) <> "\" : location + "\" : EndIf
ProcedureReturn location
EndIf
EndIf
EndProcedure
Debug GetSpecialFolder(#CSIDL_PERSONAL) + "Name des Entwicklers\Name des Programms\"Re: Wo Spielstände und Einstellungen speichern?
Das speichert wohl jeder woanders.
Persönlich mag ich AppData bei Spielen nicht, mal ein System Image wiederhergestellt und der Spielstand ist weg
Ich würde prüfen ob Schreibrechte im Spielverzeichnis vorhanden sind und wenn möglich ein "savegame" Ordner neben der game.exe nutzen.
Falls nicht dann halt in "Eigene Dokumente"
Persönlich mag ich AppData bei Spielen nicht, mal ein System Image wiederhergestellt und der Spielstand ist weg
Ich würde prüfen ob Schreibrechte im Spielverzeichnis vorhanden sind und wenn möglich ein "savegame" Ordner neben der game.exe nutzen.
Falls nicht dann halt in "Eigene Dokumente"
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- HeX0R
- Beiträge: 3070
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Wo Spielstände und Einstellungen speichern?
Im Spielordner hat das mal so gar nix zu suchen.
Was immer alle vergessen zu scheinen:
Nur weil Ihr Euren Rechner zuhause alleine benutzt, ist das in sehr vielen Haushalten eben nicht so.
Und wieso soll User 2 mit den Spielständen von User 1 leben müssen?
HomeDirectory oder APPDATA unter Windows.
Allerdings mag ich persönlich es überhaupt nicht, wenn Spiele unter meinem HomeDir einfach irgendwelche Ordner ablegen, es gibt doch meine ich (ab Vista?) einen speziellen Ordner für Spielstände, oder?
(Den allerdings keine Sau benutzt)
[Edit]
O.k. gefunden!
Hab mal was gebastelt:
Was immer alle vergessen zu scheinen:
Nur weil Ihr Euren Rechner zuhause alleine benutzt, ist das in sehr vielen Haushalten eben nicht so.
Und wieso soll User 2 mit den Spielständen von User 1 leben müssen?
HomeDirectory oder APPDATA unter Windows.
Allerdings mag ich persönlich es überhaupt nicht, wenn Spiele unter meinem HomeDir einfach irgendwelche Ordner ablegen, es gibt doch meine ich (ab Vista?) einen speziellen Ordner für Spielstände, oder?
(Den allerdings keine Sau benutzt)
[Edit]
O.k. gefunden!
Hab mal was gebastelt:
Code: Alles auswählen
Prototype SHGetKnownFolderPath__(rfid, dwFlags.l, hToken, *ppszPath)
Procedure.s GetPathToSavedGames()
Protected DLL, i, Result.s, *UnicodeBuffer, kfFlag.l, SHGetKnownFolderPath.SHGetKnownFolderPath__
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
DLL = OpenLibrary(#PB_Any, "Shell32.dll")
If DLL
SHGetKnownFolderPath = GetFunction(DLL, "SHGetKnownFolderPath")
If SHGetKnownFolderPath
If SHGetKnownFolderPath(?FOLDERID_SavedGames, kfFlag, #Null, @*UnicodeBuffer) = #S_OK And *UnicodeBuffer
Result = PeekS(*UnicodeBuffer, -1, #PB_Unicode) + "\"
CoTaskMemFree_(*UnicodeBuffer)
EndIf
EndIf
CloseLibrary(DLL)
EndIf
CompilerCase #PB_OS_MacOS
;something similar on MacOS?
CompilerCase #PB_OS_Linux
;something similar on linux?
CompilerEndSelect
If Result = ""
Result = GetHomeDirectory()
EndIf
ProcedureReturn Result
EndProcedure
Debug GetPathToSavedGames()
DataSection
FOLDERID_SavedGames:
Data.l $4C5C32FF ;{4C5C32FF-BB9D-43b0-B5B4-2D72E54EAAA4}
Data.w $BB9D, $43b0
Data.b $B5, $B4, $2D, $72, $E5, $4E, $AA, $A4
EndDataSection
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: Wo Spielstände und Einstellungen speichern?
Ahm, wo ist denn bitte das Problem?HeX0R hat geschrieben:Im Spielordner hat das mal so gar nix zu suchen.
Was immer alle vergessen zu scheinen:
Nur weil Ihr Euren Rechner zuhause alleine benutzt, ist das in sehr vielen Haushalten eben nicht so.
Und wieso soll User 2 mit den Spielständen von User 1 leben müssen?
Im Safegame Ordner sind halt Unterordner für jeden Spieler.
Was hast Du den vor WinXP gemacht, wo "MultiUser" noch ein Fremdwort war?
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Re: Wo Spielstände und Einstellungen speichern?
Naja, ist eigentlich logisch, wenn man das System neu aufsetzt oder ein Abbild wiederherstellt, dass da Dateien verloren gehen. Deshalb muss man ja auch vorher wichtige Dateien (Programmeinstellungen, Spielstände, eigene Dateien wie PB-Projekte etc.) sichern._JON_ hat geschrieben:Persönlich mag ich AppData bei Spielen nicht, mal ein System Image wiederhergestellt und der Spielstand ist weg![]()
Ich mach es immer so, dass ich den kompletten AppData-Ordner auf meine externe Festplatte rüberkopiere, wenn ich mein System neu aufsetze. Dann habe ich wenigstens alle Programmeinstellungen, die ich dann nach dem Aufsetzen problemlos wiederherstellen kann. Ebenso wie "Eigene Dokumente" u.ä.
Ansonsten gäbe es auch für dich die Möglichkeit, bestimmte Systemverzeichnisse wie AppData einfach auszulagern oder umzuleiten. Dann brauchst du nichts mehr machen, wenn du ein Abbild von C:\ wiederherstellt.
Ich bin zwar kein regelmäßiger Computerspieler, aber mich würds nerven, wenn ich in jedem einzelnen Ordner eines Spiels reingehen muss, um dort die Spielstände einzeln zu sichern. Da kopiere ich doch lieber einen separaten, zentralen Ordner für alle Spielstände, beispielsweise "Eigene Dokumente" oder "Gespeicherte Spiele"._JON_ hat geschrieben:Ich würde prüfen ob Schreibrechte im Spielverzeichnis vorhanden sind und wenn möglich ein "savegame" Ordner neben der game.exe nutzen.
Es geht aber nicht darum, dass man heute genauso machen kann, wie vor 15 Jahren. Es gibt von Windows bestimmte Verzeichnisse, die bereitgestellt werden, um dort bestimmte Dateien abzulegen. Und wenn mehrere Benutzerprofile vorhanden sind, dann müssen die jeweiligen Dateien getrennt werden. Ordnung muss schon sein. Und außerdem möchte vielleicht ein Benutzer nicht, dass ein anderer Benutzer auf seine Dateien zugreift, egal ob es nur Spielstände sind._JON_ hat geschrieben:Was hast Du den vor WinXP gemacht, wo "MultiUser" noch ein Fremdwort war?
Das ist so wie in PB. Du definierst doch auch nicht nur globale Variablen (hoffe ich mal^^), sondern jede Prozedur hat ihre eigenen Variablen, die i.d.R. nicht von außen zugreifbar sind.
- HeX0R
- Beiträge: 3070
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Wo Spielstände und Einstellungen speichern?
Ich habe mich immer gefragt was es mit dieser irre großen Anzahl an Programmen auf sich hat, die plötzlich unter Windows 7 nicht mehr funktionierten._JON_ hat geschrieben:Was hast Du den vor WinXP gemacht, wo "MultiUser" noch ein Fremdwort war?
Selbst meine allerersten Programme funktionieren einwandfrei unter Win7.
Wieso?
Naja, ich habe mich immer schon an die Empfehlungen von Microsoft gehalten.
Nur weil vor Win Vista nur "empfohlen" wurde, bestimmte Ordner zu benutzen, haben es Besserwisser jahrelang ignoriert.
Nachdem Microsoft dann ab Vista gesagt hat "Ihr könnt uns alle mal, wir machen es ab jetzt zur Pflicht",
kam das große Gejammer, dass "die irre hochgezüchtete Software ABC wegen den abartigen völlig unerwarteten Änderungen von Microsoft nicht mehr funktioniert"...
Lächerlich eigentlich, ... ein Zustand, der quasi Jahre, fast schon jahrzenhntelang im voraus angekündigt war.
Der heldenhafte ignorante Entwickler ist aber natürlich völlig unschuldig... schimpfen wir lieber ein wenig auf Microsoft.
Übrigens gibt es den Multiuser schon wesentlich länger als seit Windows XP...
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}

