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

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

31

24.03.2015, 15:20

Speicherort gesucht

hallo zusammen

ungeachtet der merh oder weniger philospohischen Betrachtungen in den letzten Posts stehe ich zur zeit vor einem konkreten Problem:

ich brauche einen Speicherort, an dem ich für mein Spiel einen Spielstand speichern kann. Da ich mit visual Studio (Basic 2013) unterwegs bin, müßte ich bei meiner Anwendungs .exe ja immer "als Administrator" wählen, da die ganzen Ressourcen und die Programmatik unter Program Files/ Straights and Rows/ liegt.
Da ich das aber möglichst umgehen möchte, und dennoch meine Spielstände speichern will (zur zeit erfolgt dies noch als Ordner mit mehreren .txt Dateien), verweigert mir Windows die Schreibrechte auf C/Program Files/... (aus guten Gründen, sonst könnte ja jedes Programm da drin lesen und schreiben)
Unter C/User/Martin/Documents kann ich den Speicherpfad ja nicht angeben, da andere Benutzer ja andere Vornamen haben.
Ich suche also einen "neutralen" Ordner, in dem Dateien gelesen, gelöscht und neu geschrieben werden können. Kann mir da jemand weiter helfen?

Umgebung: Win 8.1, Framework 4.5.1, Visual Studio 2013/ Basic

PS: Das reine lesen von Dateien funktioniert (Zb. Punktewerte aus einer gewissen Datei unter C/Program Files/Straights & Rows/) - nur das schreiben geht nicht. Das Problem habe ich auch bei meinem Spiel-internen Editor, der eigentlich Änderungen/verbesserungen auf diese Weise möglichz machen sollte...
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Tobiking

1x Rätselkönig

  • Private Nachricht senden

32

24.03.2015, 15:28


Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

33

24.03.2015, 15:31

Ein Verzeichnis unterhalb des Benutzerverzeichnis zu verwenden ist schon richtig, da dieser Pfad aber nicht fest vorgegeben ist, musst du Umgebungsvariablen verwenden, um zu deinem Verzeichnis zu gelangen. In %APPDATA% dürfte (für Windows) das Verzeichnis enthalten sein, in dem Anwendungsdaten, wie bspw. Spielstände, gespeichert werden können.
Im Programmverzeichnis die Spielstände abzulegen ist außerdem nicht richtig, weil die Spielstände nichts Programm- bzw. Installationsspeziefisches sind, sondern Benutzerspeziefisch sind.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

34

24.03.2015, 16:00

hallo - danke schonmal soweit für den Tipp mit AppData.
Nur: der ist auch unter "Martin/AppData" eingetragen.

Wenn jetzt andere Benutzer (zB. "David") mein Programm benutzen, wird das Programm dann unter "David/Appdata" suchen, oder kommt ne fehlermeldung "Martin/AppData" nicht gefunden???
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

35

24.03.2015, 16:11

Das ist das Gute an Umgebungsvariablen: ihr Inhalt ist variabel und in diesen konkreten Fall vom Benutzer abhängig. Für einen Benutzer "David" würde also "C:\Users\David\AppData\" geliefert werden, während für einen "Martin" ein "C:\Users\Martin\AppData\" und für einen "Blue" ein "C:\Users\Blue\AppData\" geliefert werden würde.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

36

25.03.2015, 01:44

:dash: ich Dussel. ja... klingt logisch :rolleyes:

meine Migräne hat mich heut etwas begriffsstutzig sein lassen. Ich guck mir das morgen/die Tage genauer an. Danke für die Hilfe :)
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

37

15.04.2015, 12:27

speichern/laden

Hallo zusammen...

...ich kann nun meine Spielstände speichern, im appdata/local/ ordner. So weit, so gut. Allerdings erfolgt das im Moment in Form von einzelnen textdateien. Bei maximal 8 Spielern würden alle notwendigen listen, die benötigt werden, um den Spielstand wieder zu laden, in bis zu 89(!) textdateien gespeichert. Das ist natürlich etwas viel Aufwand und auch unpraktisch.
Nun habe ich mir gedacht, das vielleicht eine Tabelle wie excel ideal wäre: anstatt für jede gespeicherte Liste (denn darum gehts ja) eine Datei anlegen, lieber eine Zeile anlegen. Und was in der datei eine Zeile wäre, lieber in die fortlaufende Spalte in der Tabelle.
So käme ich ja für jeden abgespeicherten Wert über die entsprechende "Postleitzahl" des Tabellenkästchens an jeden Wert ran, den ich brauche.
Nun meine Problemstellung: ich besitze kein Microsoft Office: Wie schreibe ich mit Visual Basic 2013 eine wie auch immer geartete tabelle? ich besitze open office, und arbeite hin und wieder mit .xls Dateien.
Soweit ich im netz gelesen habe, kann man mit VB2013 sowas machen, wenn man office hat (und dann eine entsprechnde .dll in VB aktiviert). Aber ich habe das nicht.

Gibt es eine andere/ähnliche Lösung? ?(

Vielen Dank schon mal im voraus.
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Tobiking

1x Rätselkönig

  • Private Nachricht senden

38

15.04.2015, 12:48

Für eine vernünftige Lösung zum abspeichern von ganzen Objekten könntest du dir das Thema Serialisierung angucken. Von Haus aus werden Objekte binär serialisiert, also nicht direkt lesbar. Für Savegames ist es vielleich eher das was du willst.

Wenn du bei dem lesbaren tabellarischen Ansatz bleiben möchtest, guck dir mal CSV an. Das solltest du relativ einfach ein- und auslesen können. Das XLS Format nutzen ist wie mit Kanonen auf Spatzen geschossen.

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

39

15.04.2015, 12:52

ich will bestimmt nicht mit kanonen auf Spatzen schießen ;) es war halt nur ein Denkansatz von mir....
das mit dem .csv Format muß ich mir erstmal anlesen, den wikipedia-Artikel dazu hab ich noch nicht recht verstanden... Trotzdem Danke für den Tipp :)
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

40

15.04.2015, 15:17

Hi,

Wie Tobiking schon erwähnt hatte ist Serialisierung für dieses Problem ein ganz guter Ansatz. Speziell XML-Serialisierer oder der DataContractSerializer sind recht einfach zu Implementieren. Beim DataContractSerializer müsstest du dein Modell für die Savegames in DataContracts umwandeln, was recht schnell gemacht ist (letztendlich müssen die Felder und Klassen nur mit den Annotations versehen werden. [DataContract] an die Klassen und [DataMember] an die Felder, so weiß der Serializer, welche Daten er serialisieren muss). Damit lassen sich dann auch komplexe Modelle als XML abspeichern. Falls du noch weitere Eigenschaften hinzufügen musst ist das damit auch sehr schnell gemacht.

CSV ist recht schnell implementiert, da gibt es auch simple und schlanke Bibliotheken - am besten mal auf CodePlex oder CodeProject suchen - da hast du auch gleich Anleitungen und Beispiele dabei.

Werbeanzeige