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

1

06.11.2012, 21:02

C# Tilemap speichern und laden

Hallo Community,

ich schreibe momentan die Grundlagen für ein 2D RPG und habe dazu auch schon einen sehr simpel gestrickten Level-Editor geschrieben.
Die einzelnen Tiles werden in einer verschachtelten Liste gespeichert, um mehrere Ebenen zu ermöglichen.

Das klappt alles soweit ganz gut, nur frage ich mich nun, wie ich das am besten speichern und wieder laden kann.
Eine Möglichkeit wäre vermutlich einfach die einzelnen werte, mit einem Trennzeichen, Reihe für Reihe in einer Textdatei zu speichern. Aber gibt es für solche Fälle auch elegantere Lösungsmöglichkeiten?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

06.11.2012, 21:04

Binär in eine Datei schreiben. Dann brauchst du kein Trennzeichen und das ganze geht schneller.
Ansonsten ist es doch egal wie du speicherst.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

3

06.11.2012, 21:07

Während der Entwicklung würde sich Xml anbieten.
Zur Speicherplatz- und Performanceoptimierung solltest du aber die Option offen lassen, später einfach auf Binärdaten umzusteigen.

Yannic

unregistriert

4

06.11.2012, 21:11

Guck dir dazu mal den BinaryFormatter an.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

07.11.2012, 00:31

wichtig sind hierbei deine Anforderungen an deine Maps
wenn sie immer relativ klein sind, dann kann eine Map auch "einfach so" in einer Datei liegen
wenn es allerdings Maps gibt, die riesig sind (beispielsweise weil die gesamte Oberwelt auf einmal enthalten ist), wirst du um Map Streaming wohl nicht drumrum kommen

die Geschwindigkeit beim Laden und Speichern dürfte wohl eher nebensächlich sein, sollte es einmalig sein (wenn also kein Streamen erforderlich ist)
ich habe mit meinen Maps in Python keine nennenswerten Probleme
die übertrieben große Map (80x50 Tiles auf 21 Ebenen, also 84000 Einzelwerte, die durch Kommas und Zeilenumbrüche getrennt sind), die ich mal zu Testzwecken angelegt hatte, benötigt geschätzt 1 Sekunde zum Laden (eine 20x15x3 große Map benötigt eine unmerkbar kurze Zeit)

sollte Interesse bestehen, kann ich die Ladezeit messen und die Werte hier schreiben


zusammengefasst:
am Anfang ist es quasi vollkommen egal, wie du die Maps ablegst, weshalb du dich nach den Anforderungen richten solltest
da du ja bereits einen Editor hast, steht einem Binärformat im Prinzip nichts im Wege
allerdings kann es während der Entwicklung dennoch immer mal wieder passieren, dass du Maps von Hand anpassen willst (außerhalb des Editors)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

6

09.11.2012, 12:17

Ok, danke euch. Werde mich dann mal näher mit der BinaryFormatter-Klasse befassen.

@Sacaldur: Danke für das Angebot, um die Geschwindigkeit geht es mir dabei allerdings nicht.

Werbeanzeige