Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

1

04.03.2018, 19:07

Spielstand Verwaltung

Hallo,
ich hätte mal zwei theoretische Fragen ..




2

04.03.2018, 20:37

Ich weiß zwar nichts über die weiteren Hintergründe deines Spiels, aber ich würde einfach alles was irgendwie relevant für den Spielstand ist binär ganz easy in eine Datei speichern, d.h. du kreierst einfach dein eigenes Format. Bezüglich der Gegenstände würde ich natürlich alle abspeichern, die man eingesammelt hat. Wenn die nach dem nächsten Spielstart weg wären, dann wärs doch kein richtiger Spielstand? Also wenn ich speichere, dann würde ich erwarten, dass auch mein kompletter Spielfortschritt gespeichert wird. Und wenn du keine Abermillionen von Gegenständen hast, dann sollte das auch nicht soo hart auf die Performance drücken. Wenn du pro Gegenstand eine ID, eine Position etc. hast sind das doch nur wenige Byte. Bei einer Million Gegenständen bist du dann nur bei wenigen Megabyte. Da ich denke, dass du keine Million Gegenstände abspeichern willst, sollte da doch kein Problem entstehen?

Edit: Merke gerade, habe dich zuerst falsch verstanden :pinch:
Würde so vorgehen: In der Leveldatei speicherst du wo welche Gegenstände etc. vorhanden sind im Standardzustand, also wenn der Spieler noch nichts in der Welt verändert hat. Im Spielstand dann die IDs der Gegenstände, die der Spieler gesammelt hat. Diese müssen beim Laden des Levels dann nicht mehr erstellt/geladen werden. Das wäre der logischste Weg meiner Meinung nach. Das mit dem Performance Problem beim "erzeugen" der Gegenstände verstehe ich aber nicht ganz. Inwiefern ist das Performancetechnisch problematisch? Bswp. die Modelldaten musst du ja so oder so laden, egal ob du den Gegenstand "neu erzeugst" oder er bereits mit dem Level zusammen geladen wird?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Chaia*« (04.03.2018, 20:45)


Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

3

05.03.2018, 08:12

Es geht um Unity (ich hoffe mit anderen Engines ist es ähnlich)

Ein Level wird in einer Szene gespeichert, lädt man also das Level/die Szene, so wird die vorherige Szene komplett zerstört und auf ihren ursprünglichen Zustand zurückgesetzt. Man klickt sich die Szene ja bereits in der Engine zusammen. Stirbt der Spieler und respawnt am Anfang des Levels gibt es also 2 Möglichkeiten

Entweder die Gegenstände im Level prüfen selbst bei jedem Respawn, ob sie eingesammelt wurden und zerstören sich dann selbst

oder

Es gibt eine Klasse, die die Gegenstände an ihrer Position erzeugt, die noch nicht eingesammelt wurden.

EDIT
Natürlich ist es optimal, eine Komponente zu schreiben, die die Szene einfach zurückspult. Also eingesammelte Collectables deaktiviert anstatt zerstört und dann alle Komponenten in ihren Urzustand setzt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Garzec« (05.03.2018, 08:57)


TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

4

05.03.2018, 09:36

Du musst dir erstmal klar werden wieviel dir die Performance nun Wert ist. Einerseits kannst du deinem Inventar nicht ein Objekt hinzufügen. Andererseits kannst du ein json Dokument parsen. Widerspricht sich für mich ein bisschen.

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

5

05.03.2018, 10:21

Die Level sind sehr klein und es gibt vielleicht 3 oder 4 Collectables. Als Beispiel mal 2D Super Mario oder Super Meat Boy. Ich nehme an, dass es hier also um Nanosekunden gehen wird ... Es sind halt auch nur Collectables zum Einsammeln, mehr macht man damit nicht. Diese können dann andere Level freischalten, aber das kann man ja problemlos mit Abfragen lösen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

05.03.2018, 10:28

Dann gibt es doch überhaupt kein Problem? Vier Objekte zu erstellen die dann unter Umständen direkt wieder gelöscht werden ist jetzt nicht so problematisch. Versuch es doch einfach erst mal irgendwie umzusetzen. Wenn es dann klappt kannst du gucken ob du es strukturell verbessern kannst. Das bedeutet dass deine Lösung sinnvoll und verständlich ist. Performance sollte da erst mal eine untergeordnete Rolle spielen. Klar sollst du nicht unnötig Rechenzeit verschwenden, Die Verständlichkeit deiner Lösung ist aber erst mal wichtiger.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

7

05.03.2018, 11:18

Beide Wege sind schnell eingebaut und stellen überhaupt kein Problem dar. Es war nur eine theoretische Frage, welche Möglichkeit zu bevorzugen ist :P

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

05.03.2018, 12:51

Beide Wege sind schnell eingebaut und stellen überhaupt kein Problem dar. Es war nur eine theoretische Frage, welche Möglichkeit zu bevorzugen ist

Kann man so nicht sagen. Du kennst dein Projekt besser als wir. Mach was für dich funktioniert. Oder teste beides aus und guck was dir besser gefällt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige