Speicherung von Npc-Daten

Snakay

Mitglied
Hallo liebe Java-Community,
ich bin mir nicht sicher ob durch die Überschrift schon das Thema meiner Frage hervorgeht.
Ich programmiere gerade ein Top-Down-Rpg und habe bereits einen Npc hinzugefügt, würde dafür aber gerne ein universelles System verwenden,deshalb habe ich mir gedacht, ich lege für jeden Npc eine Text-Datei an, in der sein gesprochener Text, sein Laufweg bzw. Path usw. stehen sollte. Ich weiß auch, wie ich das angehen muss, das ist nicht das Problem, aber ich habe mal über dieses System nachgedacht, das Problem wäre, dass jeder einfach die Text-Datei öffnen könnte, den Text, den Path, seinen Namen ändern könnte und somit das ganze Spiel verändern würde, das möchte ich natürlich nicht, kennt ihr vielleicht andere Möglichkeiten, die Daten eines Npc's zu speichern, ohne dass sie ohne Probleme zu verändern sind. Ich bedanke mich schon mal im Vorraus für jede Antwort :)
Mit freundlichen Grüßen
Snakay aka Jonas
 

Snakay

Mitglied
Wenn ich das richtig verstanden habe, dient die Serialisierung um Daten zu speichern und danach wieder auszulesen, so kann natürlich nicht einfach irgendetwas verändert werden, aber Ich möchte dem NPC natürlich auch erstmal Standard-Werte(Text, Path usw.) verpassen, aber das alles im Code hinzuzufügen, ist natürlich nicht sehr schön gelöst. Müsste ich dann ein zweites Programm schreiben, womit ich für jeden Npc etwas eintragen kann?
MfG
Jonas
 

JuKu

Top Contributor
Das müsstest du.

Es ist fast unmöglich, dass die Daten nicht vom Spieler verändert werden können, da du ja den Quellcode quasi mitgibst (man kann Java ja dekompilieren).
 

krgewb

Top Contributor
Der Schummler muss das Programm dekompilieren und danach wieder kompilieren.
Eine Textdatei zu ändern ist viel weniger Aufwand.

@Snakay Kannst du die Text-Datei mit den Default-Werten auch im Internet hinterlegen? Die Datei könnte dann gelesen aber nicht geändert werden. Wenn der Spieler schummeln will muss er den Pfad ändern. Dazu muss er das Spiel dekompilieren.

PS: Das MMORPG RuneScape wurde in Java geschrieben (inzwischen steigen Sie um zu HTML5).
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Wenn es kein Mehrspieler-spiel ist, ist es doch ziemlich egal, ob jemand das Spiel ändert?
Ich mein, wer sich selbst den Spaß nehmen will, warum nicht?

Außerdem, Modbarkeit ist gern gesehen ;P
 

JuKu

Top Contributor
Der Schummler muss das Programm dekompilieren und danach wieder kompilieren.
Eine Textdatei zu ändern ist viel weniger Aufwand.

Da hast du recht, aber der Aufwand für ihn selbst steigt ebenfalls!
Schließlich muss er erst einen (In-Game) Editor bauen, um seine eigenen Levels zu erstellen.

Wenn es kein Mehrspieler-spiel ist, ist es doch ziemlich egal, ob jemand das Spiel ändert?

Bei Mehrspieler sollte die Map eh eher nicht lokal liegen, sondern gestreamt werden, sonst könnten Spieler cheaten.
 

JuKu

Top Contributor
Es macht aber einen Unterschied, ob du mal fix Notepad in die Hand nimmst und mit JSON ein paar Daten einträgst, oder ob du gleich einen eigenen Editor dafür schreibst.
 

mrBrown

Super-Moderator
Mitarbeiter
Es macht aber einen Unterschied, ob du mal fix Notepad in die Hand nimmst und mit JSON ein paar Daten einträgst, oder ob du gleich einen eigenen Editor dafür schreibst.

Und wenn er ein Auto bauen will hat er noch mehr Aufwand, aber was hat das mit dem Speicherformat zu tun?

Viel mehr als das Objekt in nen Stream schreiben muss er nicht, nen Editor braucht das nicht, die Daten kann er auch als Code hinterlegen oder aus ner anderen Datei laden, etc...
 

Times

Bekanntes Mitglied
Wieso erstellst du dir nicht zunächst ein kleines Programm welches dir diese NPC-Dateien erstellt.
Das Programm kann dann die ganze Datei nach belieben verschlüsseln und noch irgendwo n CRC mit reinpacken. Wenn du es dann von deinem Spiel ausliest musst du erneut den CRC über den gesamten Inhalt (bis auf den Teil wo der ursprüngliche CRC Teil drin steht) berechnen und kannst diese dann miteinander vergleichen.

Wenn die beiden CRC nicht mehr übereinstimmen sollten, kannst du ja eine Meldung ausgeben die Spieldateien beschädigt sind o.ä.

Wenn du 100%ig sichergehen willst das niemand etwas aendert, kannst du auch noch zusaetzlich den geforderten CRC-Wert im Java-Code selber hinterlegen und dann nurnoch mit dem des Inhaltes der gesamten Datei vergleichen, wobei dies für mich persönlich zu viel Aufwand wäre^^
 

Oben