Jump to content
Unity Insider Forum

Richtige Speicherung


Kurmuro

Recommended Posts

Hallo,

Ich hab jetzt lange danach gegooglet aber irgendwie finde ich nicht die passende Erklärung zum Speichern von meinem Spielstand. (Anfänger :P)

Was ich erreichen will:

Man befindet sich in einem 2D Raum und muss Objekte finden, rätsel lösen etc... (Escape Room)

Jetzt ist es momentan so der Spieler klickt auf eine Tür die dann aufgeklappt wird. Für mich der Logische Weg: ein bool doorIsOpen zu erstellen. 
Auch für mich der Logische Weg es anzuzeigen: ein Button wo die Tür offen zu sehen ist und einer wo sie zu ist.
Vor dem Laden jeder Scene wird dann verglichen was der gespeicherte zustand ist.

Jetzt der Speicherungsteil. Jetzt hab ich ja aber mehr Objekte als diese eine Tür und manchmal vielleicht auch zwei Zustände die gespeichert werden müssen. Zudem soll immer  automatisch gespeichert werden, praktischerweiße immer dann wenn sich der zustand geändert hat.

Von den PlayerPrefs wird ja, warum auch immer, abgeraten diese zur Spielstandsspeicherung zu nehmen.
Zu der Binary File Speicherungs gibt es zwar eine menge anleitungen aber die beziehen sich dann immer auf ein objekt.. meist der Spieler.

Zudem wird doch wenn ich es richtig verstanden habe eine datei erstellt die meine alte überschreiben tut, bedeutet wenn zuerst Tür eins gespeichert hat und danach Tür zwei speichert ist der Tür eins Speicherstand doch überschrieben und existiert nichtmehr oder?

Oder geh ich die Sache komplett falsch an? Wie würdet ihr das machen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 17 Stunden schrieb Kurmuro:

Von den PlayerPrefs wird ja, warum auch immer, abgeraten diese zur Spielstandsspeicherung zu nehmen.

Wer auch immer das sagt, hat keine Ahnung. PlayerPrefs sind genau dafür da. Sie skalieren nicht sehr gut mit einem Projekt mit - du willst also keinen Skyrim-Spielstand über PlayerPrefs speichern - aber um ein Dutzend Bools abzuspeichern ist die Klasse perfekt und angenehm unkompliziert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, Spielstände sind je nach Spiel unterschiedlich komplex. Das geht von supereinfachen Sachen wie einer einzelnen Zahl ("Bis zu welchem Level wurde freigespielt") über überschaubare Sachen ("Wieviele Sterne hat der Spieler jeweils in jedem Level Angry Birds") bis hin zu krassen Sachen wie einem Spielstand in Skyrim ("Welcher NPC lebt noch und was hält er vom Spieler, wo liegen was für Sachen herum, wie hat der Spieler seine Skillpunkte verteilt, welche Items besitzt er, ...").

PlayerPrefs sind supereinfach zu benutzen, um einzelne Werte abzuspeichern. Beispiel eins und zwei sind damit daher sehr gut zu machen. Komplexe Sachen wie Nummer drei dagegen - da hört der Spaß dann auf und du bist mit mächtigeren Systemen besser beraten.

Was Manipulierbarkeit angeht... mach dir mal über Cheater erstmal keinen Kopf. Wer cheaten will, wird cheaten können. Absolute Sicherheit gibt es einfach nicht. Überlege dir daher: Wie schlimm ist es wirklich, wenn ein Spieler schummelt? Ich würde mir niemals den Stress machen, bei einem Singleplayer-Spiel Cheatschutz einzubauen. Soll doch jeder Spieler selbst für seinen Spielspaß verantwortlich sein. Da würde ich erst mit anfangen, wenn jemand anderen Spielern den Spaß verhageln kann.

Und wie gesagt, wer cheaten will, wird cheaten. Auch wenn du selber eine Savegame-Datei anlegst, deren Inhalt krass verschlüsselt ist. Wo ein Wille ist, ist auch immer ein Hack. Selbst, wenn du dir die riesige (!) Arbeit machen solltest, ein halbwegs sicheres System zu bauen, ist das Savegame-System nur einer von vielen Angriffspunkten. Im Zweifelsfall kommt der Nutzer mit Low-Level Memory Access daher und dann kann dein Spielstand noch so gut verschlüsselt sein. Also... mach dir da keine Sorgen. Lohnt sich einfach nicht, da Energie reinzustecken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...