![]() |
|
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Neuer Benutzer
Bit
Registriert seit: 11.03.2011
Fachbeiträge: 6
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
|
Hi,
Ich bin grad dabei mir zu überlegen wie ich am besten Spielerinformationen in eine Datei speicher Mit Informationen mein ich z.b. name,password,level,pos usw.Bis jetzt sieht meine datei wie folgt aus Code:
Name: balbal Password: blabla usw. Das System funktioniert bei wenig infos ganz gut aber umso mehr informationen dazu kommen desto schwerfälliger wird es... Meine Frage ist nun, ob es einen besseren weg gibt mein problem zu lösen? danke |
|
|
|
| #2 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 11.07.2011
Fachbeiträge: 245
Abgegebene Danke: 5
Erhielt 28 Danke für 28 Beiträge
|
Was meinst du denn mit "schwerfälliger" ? Ist es schwerer für dich die Daten zu verarbeiten ? Ich würd auch gerne wissen wie du die Daten beim auslesen verarbeitest.
__________________
Ich Trinke um meine Probleme zu ertränken aber diese verdammten Bast..e können schwimmen |
|
|
|
| #3 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 02.12.2009
Fachbeiträge: 1.268
Blog-Einträge: 15
Abgegebene Danke: 77
Erhielt 108 Danke für 108 Beiträge
|
Properties, XML, Serialisierung...
__________________
-- M$ ist gut! *hust* --jAvamak Download (neue Version 1.1 unstable) Discussion Wiki --QuickBench Blog |
|
|
|
| Danke sagt: |
Coolies (09.08.2011)
|
| #5 (permalink) | ||||||||||||||||
|
Stammbenutzer
Floppy Disc
Registriert seit: 06.07.2011
Fachbeiträge: 793
Blog-Einträge: 4
Abgegebene Danke: 2
Erhielt 172 Danke für 171 Beiträge
|
|
|||||||||||||||
|
|
|
|||||||||||||||
| #6 (permalink) | |||
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 11.03.2011
Fachbeiträge: 6
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
|
danke für eure Antworten
Momentan lese ich jede zeile aus, "splitte" den String (split) und überprüfe dann mit equals was in dieser zeile steht
Properties hört sich schon sehr interessant an, Serialisierung hab ich noch nicht ganz verstanden, das muss ich mir nochmal genauer anschauen und XML scheint sehr komplex zu sein, das muss ich mir ebenfalls in ruhe anschauen... ich denke mal "Properties" ist genau das, was ich gesucht habe =) ansonsten hab ja noch genug Ausweichmöglichkeiten nochmal danke an alle |
||
|
|
|
| #7 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 11.07.2011
Fachbeiträge: 245
Abgegebene Danke: 5
Erhielt 28 Danke für 28 Beiträge
|
Also properties wären je nach Umfang geignet. Falls du 100+ Spieler haben solltest, dann ist es vielleicht bisschen "unschön" dann so etwas zu machen
Code:
p1.name=Player 1 p1.lvl=15 p2.name=Player 2 ........ ........ ........ p423.name=Player 423 ........ Properties Dateien sind (wie der Name schon sagt) für Konfigurationszwecke geschaffen, und nicht für Speicherung solcher Daten. Ebenso xml's (ok, diese vielleicht noch z.B für den Import/Export der Daten), die xml müsstest du aber nach jeder Änderung entweder neuschreiben oder über JDOM "aktualisieren", was für diesen Zweck einfach viel zu viel Aufwand wäre. Versuchs vlt. mit 'ner Datenbank
__________________
Ich Trinke um meine Probleme zu ertränken aber diese verdammten Bast..e können schwimmen Geändert von RySa (10.08.2011 um 08:04 Uhr) |
|
|
|
| Danke sagt: |
Coolies (10.08.2011)
|
| #8 (permalink) | |
|
Stammbenutzer
Floppy Disc
Registriert seit: 06.07.2011
Fachbeiträge: 793
Blog-Einträge: 4
Abgegebene Danke: 2
Erhielt 172 Danke für 171 Beiträge
|
Ich stimme RySa zu, dass es unschön werden kann.
Daher würde ich auch zu einer DB raten (z.B. Derby embedded), wenn bereits abzusehen ist, das da viele User gepflegt werden müssen. Aber natürlich handelt man sich dabei auch Probleme ein. Möchte man mehrere Attribute hinzufügen, hat man Migrations-Aufwand, weil halt in allen Zeilen die neuen Attribute gesetzt werden müssen. Das kann bei derartigen Mini-DBs überschaubar sein, ist aber in grossen Projekten auch ein grosser Aufwand, der Wochen/Monate dauern kann. Hängt also von den Anforderungen ab: Anzahl_User/Änderungshäufigkeit/Skalierbarkeit. Musst halt also Du entscheiden. Ich rate eigentlich sehr oft, eine interne embedded SQL-DB zu nehmen, weil dann der SQL/Java-Code bereits geschrieben wurde. Hinterher dieses auf eine mächtigere, performantere DB umzustellen, ist dann sehr einfach. Aber nach dem, was Du bisher geschrieben hast, habe ich den Eindruck dass ein RDBMS Overkill für Deine Anforderungen wäre. Du solltest nur darauf achten, dass Dein Code für den Zugriff l"leicht" auf ein RDBMS geändert werden könnte (Stcihwort: DAO-Pattern, Programmierung gegen Interfaces). Dein Restprogramm sollte also keine Kenntnis darüber benötigen, ob die Daten aus einer Properties-Datei, XML-Datei oder RDBMS kommen. |
|
|
|
| Danke sagt: |
Coolies (10.08.2011)
|
| #9 (permalink) | |||
|
Stammbenutzer
Floppy Disc
Registriert seit: 07.01.2005
Fachbeiträge: 875
Abgegebene Danke: 31
Erhielt 30 Danke für 29 Beiträge
|
Ich würde dir auch zu einer Datenbank raten, wenn du mehr Daten hast. Es würde aber reichen, wenn du eine Datenbank hast, die ohne Service läuft, also direkt von deiner Anwendung gestartet wird.
Ich habe aber trotzdem noch 2 weitere Empfehlungen: bei nicht allzu vielen Daten könntest du, wie meine Vorredner schon gesagt XML nehmen und per Xstream deine Objekte direkt ins xml speichern:
oder bei größerer Datenmenge, aber dafür kannst du das File nicht mit einem Texteditor bearbeiten => db4o ... eine Objektorientierte Datenbank, die direkt in ein File schreibt und von deiner Anwendung gestartet wird:
__________________
Gruss Freez ... als mich dann die Arbeitswut überkam, setzte ich mich in die Ecke, und wartete ab, bis der Anfall vorbei war. |
||
|
|
|
| Danke sagt: |
Coolies (10.08.2011)
|
| #10 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 11.07.2011
Fachbeiträge: 245
Abgegebene Danke: 5
Erhielt 28 Danke für 28 Beiträge
|
Deswegen sollte man sich vorher überlegen, welche "attribute" brauche ich für die Spieler. Auch wenn diese in der ersten Version noch nicht genutzt werden, du aber schon Pläne hast, es später zu nutzen, sind die schon jetzt anzulegen (wie der turtle schon sagte, eine Datenbank einmal erstellt und mit Daten befüllt, ist nachher sehr aufwendig zu ändern).
Jetzt wissen wir natürlich nicht, was du genau vor hast zu machen. Aber ich denke, dass auch eine kleine MySQL Datenbank, die auch auf dem Xampp läuft, für kleinere und nicht komerzielle Projekte geignet ist. Das musst dann aber du entscheiden, unter Beachtung deiner Kentnisse ![]() EDIT: Noch mal kurz zu xml. Wenn du dich dafür entscheiden solltest, dann aber nur, wenn die xml-Datei wirklich klein wird (sonst füllst du dir über JDOM den Arbeitsspeicher voll), und nur wenn du nur Informationen über die Spieler speichern möchtest. Für Infos über andere "Objekte" müsstest du idealerweise mehrere xml-Dateien haben, was auch wiederrum sch...e ist. Ich würd aber generell von xml- und vor allem über JDOM abraten. Der Grund dafür - ich nehme an, du willst keine Infos von Spielern im Speicher behalten, die nicht "eingeloggt" sind. Und du die Daten über die einzelnen Spieler nur beim einloggen, einmal abrufen willst. Nun wenn du JDOM benutzt, wirst du jedes mal wenn sich ein Spieler einloggt gezwungen, die gesamte XML in den Arbeitsspeicher zu laden, um nur an diese Informationen zu kommen. Ist einfach schlecht. Am besten Vergiss die Idee mit xml-Files :P Properties genauso. Eine Datenbank ist das, was du suchst :P
__________________
Ich Trinke um meine Probleme zu ertränken aber diese verdammten Bast..e können schwimmen Geändert von RySa (10.08.2011 um 08:50 Uhr) |
|
|
|
| Danke sagt: |
Coolies (10.08.2011)
|
| #11 (permalink) | |
|
Neuer Benutzer
Bit
Themenstarter
Registriert seit: 11.03.2011
Fachbeiträge: 6
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
|
danke für eure Antworten
ich hab mein Projekt nicht näher beschrieben, da ich dachte das macht die ganze sache nur unnötig komplizierter aber da ihr mir so kräftig geholfen habt, will ich das auch nicht offen lassen. Also... hab mir ein spiel mit der JMonkeyEngine3 zusammengebastelt (besser nachgebaut) und bin nun dabei einen Multiplayer zu kreieren, momentan werden die Informationen über Objekte und Spieler in Dateien gespeichert, dass fand ich nicht besonders schick und hab nach einer andere möglichkeit gesucht(so nun war ich hier). Da ich mich mit Java erst seit kurzen befasse, waren mir die verschiedenen Möglichkeiten nicht bekannt... aber hab mich für ne MYSQL Datenbank entschieden(XAMPP), wie ihr mir das geraten habt. Directupload.net - Dgmcyqwmh.jpg |
|
|
|
| #12 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 17.07.2008
Fachbeiträge: 238
Abgegebene Danke: 21
Erhielt 9 Danke für 9 Beiträge
|
Knuffiges Bild...
Irgendwie verstehe ich noch nicht ganz warum das Speichern der Spielstände schwerfällig sein soll. ![]() Wie oft soll das denn geschehen? Ununterbrochen wäre natürlich schlecht, weil die HDD anzurufen extrem teuer ist. Oder willst Du in Intervallen speichern, dann fällt das nicht ins Gewicht. Meinst Du nicht? Das bißchen Daten kann man auch problemlos im Speicher über JDOM behalten. Fällt doch nicht wirklich ins Gewicht. Erkläre doch mal wie die Struktur Deines Spiels ist. Client-Server? Peer-to-Peer? Lokal? Man weiß noch nichts über die Kommunikation. Erst wenn das bekannt ist, lohnt es sich darüber nachzudenken, ob und wie etwas persistiert bzw. anderen zugänglich gemacht werden soll oder nicht. Viele Grüße, Semox
__________________
Disce quasi semper victurus, vive quasi cras moriturus! |
|
|
|
| #13 (permalink) | ||||||||||||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 11.07.2011
Fachbeiträge: 245
Abgegebene Danke: 5
Erhielt 28 Danke für 28 Beiträge
|
__________________
Ich Trinke um meine Probleme zu ertränken aber diese verdammten Bast..e können schwimmen |
|||||||||||||||
|
|
|
|||||||||||||||
| #14 (permalink) | |
|
Stammbenutzer
Floppy Disc
Registriert seit: 07.03.2011
Fachbeiträge: 894
Abgegebene Danke: 57
Erhielt 110 Danke für 102 Beiträge
|
Xampp mitliefern/vorraussetzen bezeichne ich jetzt mal als schrottig. Eine embedded DB wie H2 oder Derby, kann genau das selbe leisten wie MySQL und braucht aber kein schrottiges Softwarepaket wie xampp
|
|
|
|
| #15 (permalink) | ||||||||||||||||||||||||||||||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 11.07.2011
Fachbeiträge: 245
Abgegebene Danke: 5
Erhielt 28 Danke für 28 Beiträge
|
__________________
Ich Trinke um meine Probleme zu ertränken aber diese verdammten Bast..e können schwimmen Geändert von RySa (11.08.2011 um 10:06 Uhr) |
|||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||
| #16 (permalink) | |
|
Benutzer
int
Registriert seit: 22.02.2008
Fachbeiträge: 35
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
Eine Datenbank lohnt sich meiner Meinung nach für so eine kleine Aufgabe nicht.
Bei meinem Spiel habe ich es ganz simpel gelöst. Die Properties Dateien werden mittels eines BufferedReaders Zeile für Zeile eingelesen, jede Zeile wird in eine Liste (Hashtable) gespeichert, durch diese dann später durchiteriert wird. Mit hashTable.get(key) kannst du dann ganz praktisch auf das jeweilige Attribut zugreifen. Ist es nicht vorhanden, wird null zurückgeliefert.
__________________
http://www.forgottenelements.com - 100% Free Online Action RPG - Start your adventure today! |
|
|
|
| #17 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 02.12.2009
Fachbeiträge: 1.268
Blog-Einträge: 15
Abgegebene Danke: 77
Erhielt 108 Danke für 108 Beiträge
|
Für Properties-Dateien brauchst Du aber nicht extra einen Reader zu schreiben, nutze einfach die java.util.Properties.
__________________
-- M$ ist gut! *hust* --jAvamak Download (neue Version 1.1 unstable) Discussion Wiki --QuickBench Blog |
|
|
|
| #18 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Floppy Disc
Registriert seit: 07.03.2011
Fachbeiträge: 894
Abgegebene Danke: 57
Erhielt 110 Danke für 102 Beiträge
|
|
||||||||||||||||||
|
|
|
||||||||||||||||||
| #19 (permalink) | ||||||||||||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 11.07.2011
Fachbeiträge: 245
Abgegebene Danke: 5
Erhielt 28 Danke für 28 Beiträge
|
![]() __________________
__________________
Ich Trinke um meine Probleme zu ertränken aber diese verdammten Bast..e können schwimmen |
|||||||||||||||
|
|
|
|||||||||||||||
| #20 (permalink) | |||||||||||||||||||
|
Benutzer
int
Registriert seit: 22.02.2008
Fachbeiträge: 35
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
Habe mich leider schon zu sehr daran gewöhnt das Rad neu zu erfinden...
__________________
http://www.forgottenelements.com - 100% Free Online Action RPG - Start your adventure today! |
||||||||||||||||||
|
|
|
||||||||||||||||||
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben | Sophie | Java Basics - Anfänger-Themen | 6 | 25.04.2011 19:15 |
| DefaultEditorKid komme nicht weiter! | DDHP | Java Basics - Anfänger-Themen | 4 | 16.07.2009 21:11 |
| Probleme mit Notepad | DDHP | Java Basics - Anfänger-Themen | 4 | 08.06.2009 18:33 |
| Datei auf Server mit lokaler Datei vergleichen | Solitary Man | Allgemeine Java-Themen | 4 | 21.03.2009 18:54 |
| RAM Speicher in Datei auslagern (Java Swapping) | Craven | Allgemeine Java-Themen | 4 | 02.07.2004 08:14 |
| Lesezeichen |
|
|