Es gibt kein solches Verzeichnis. %APPDATA%
ist Windows-spezifisch. Sie müssen es selbst abstrahieren: Erstellen Sie Ihre eigene GetSaveGameDirectory
Funktion, die auf jedem Betriebssystem, auf dem Sie ausgeführt werden, einen geeigneten Pfad zurückgibt. Sie können diese Bestimmung normalerweise zur Kompilierungszeit mit Präprozessorprüfungen anhand der entsprechenden Makros in C (und es ist ilk) vornehmen. Ich bin mir nicht ganz sicher, wie ich das am besten in Java machen kann.
Unter Windows ist ein %APPDATA%
Unterverzeichnis für Ihr Unternehmen oder Spiel geeignet. Auf dem Mac ~/Library/Application Support/Your Game
ist dies üblich, obwohl in den Richtlinien von Apple empfohlen wird, "Benutzerdaten" dort nicht zu speichern (sie sollten in das ~/Documents
Verzeichnis verschoben werden). Dies hängt in erster Linie davon ab, ob Sie den Benutzer zur Auswahl eines Verzeichnisses auffordern oder nicht.
Auf allgemeinen * nix-Systemen finden Sie wahrscheinlich weniger Standardisierung - vielleicht ein verstecktes Verzeichnis darin ~
, wie z ~/.yourgame
. Dies ist sicherlich die übliche Praxis für Konfigurationsdateien. Ein tatsächlicher * nix-Benutzer muss sich wahrscheinlich einschalten, ob dies ein geeigneter Speicherort für das Spiel ist oder nicht.
Um die besten Ergebnisse zu erzielen, codieren Sie den Pfad zum Verzeichnis nicht anhand der englischen Zeichenfolge fest, sondern verwenden Sie die Betriebssystem-API, um auf das Verzeichnis zuzugreifen. Auf diese Weise können Sie sicherstellen, dass Ihr Spiel auf einer nicht englischen Version des Betriebssystems ordnungsgemäß ausgeführt wird. Verwenden Sie beispielsweise unter Windows nach Möglichkeit SHGetKnownFolderPath oder einen entsprechenden Wrapper.
~/.gamename
ist das erwartete Verhalten (und wie es immer gemacht wird, siehe Minecraft, Warzone2100 und jedes andere Spiel). Wenn Sie weiterhin an einem anderen Ort speichern möchten, können Sie über dieses Verzeichnis einen Link erstellen.On general *nix systems you'll probably find less standardization
... eigentlich fühle ich genau das Gegenteil (wenn wir über Linux, BSD und Unix sprechen ... nicht sicher über MacOS). Abgesehen von einigen schrecklichen Closed-Source-Spielen, die die Verzeichnisstruktur nicht berücksichtigen, finde ich meine Konfigurationsdateien und Spielspeicher immer in~/.name
.~/Library/Application Support/Your Game
wie Josh es vorgeschlagen hat. Dadurch bleibt das gesamte Konzept "Sichern Sie Ihren Home-Ordner, um alles zu sichern, was Sie benötigen" von * nix erhalten, aber es gibt keine~/
Unmengen von Punktdateien. Während~Library
es sich jetzt um einen versteckten Ordner handelt, können Benutzer das Terminal öffnen, wenn sie wirklich speichern möchten. Oder Sie können eine Schaltfläche "Export speichern Datei" haben, die schöner erscheint. Ich bin mir nicht sicher, wie ich mich dabei fühleDocuments
.Unter Linux wäre der einzige standardisierte Pfad das Verzeichnis
XDG_DATA_HOME
undXDG_CONFIG_HOME
. Verwenden Sie die Umgebungsvariablen mit diesen Namen, falls vorhanden, andernfalls standardmäßig$HOME/.local/share/<appname>/
für Benutzerdaten (Speichern, Fortschritt, Spielerprofil) und$HOME/.config/<appname>/
für die Konfiguration. Das Löschen des letzteren Verzeichnisses sollte theoretisch keine Auswirkungen auf vom Benutzer bereitgestellte Daten haben, außer alles auf die Standardeinstellungen zurückzusetzen. Sie haben auchXDG_CACHE_DIR
($HOME/.cache/<appname>
) für nicht wesentliche / temporäre Dateien.Wenn Sie alles in
$HOME/.<appname>
den Home-Ordner des Benutzers werfen, wird dies möglicherweise nicht gewürdigt. Bei der neuen Free Desktop-Standardisierungsinitiative handelt es sich um eine meist veraltete Praxis.quelle
Windows :
Linux :
OSX :
Wie Josh erwähnt hat, keine Hardcode-Pfade - benutze die OS-API, um den richtigen Pfad zu verwenden :-)
quelle
~/.gamename
, denn das ist das Verhalten, das ich erwarten würde.Ich denke, der beste Ort zum Platzieren von Spieldaten ist der Installationsordner Ihres Spiels, IE:
Wobei% install% so etwas wie C: \ programfiles \ yourgame \ oder ~ / apps / yourgame / wäre
quelle
It works for me
Das ist großartig, aber für den Rest der Welt funktioniert es nicht.