# Speicherung von Npc-Daten



## Snakay (4. Mrz 2017)

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


----------



## Thallius (4. Mrz 2017)

Wieso serialisierst du den NPC nicht einfach?


----------



## Snakay (4. Mrz 2017)

Thallius hat gesagt.:


> Wieso serialisierst du den NPC nicht einfach?


So lange programmiere ich schon mit Java , aber mit Serialisierung habe ich mich noch nie beschäftigt.
Das ist traurig, danke dir, ich werde mich da mal einlesen


----------



## Snakay (4. Mrz 2017)

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 (10. Mrz 2017)

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 (10. Mrz 2017)

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).


----------



## mrBrown (10. Mrz 2017)

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 (13. Mrz 2017)

krgewb hat gesagt.:


> 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.



mrBrown hat gesagt.:


> 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.


----------



## mrBrown (13. Mrz 2017)

JuKu hat gesagt.:


> 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.


Warum sollte er, um NPCs aus Dateien zu laden, nen Editor für Level brauchen?


----------



## JuKu (13. Mrz 2017)

Sry, meinte eben einen Editor für NPCs. Oder was auch immer er serialisieren will.


----------



## mrBrown (14. Mrz 2017)

JuKu hat gesagt.:


> Sry, meinte eben einen Editor für NPCs. Oder was auch immer er serialisieren will.



Erstellen muss er die so oder so, völlig egal wie die gespeichert werden oder ob die On-The-Fly erstellt werden...


----------



## JuKu (26. Mrz 2017)

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 (26. Mrz 2017)

JuKu hat gesagt.:


> 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...


----------



## JuKu (26. Mrz 2017)

mrBrown hat gesagt.:


> 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...



Das stimmt.
Die Daten als Code zu hinterlegen wäre allerdings das schlimmste, was er machen kann. Aus einer Datei dann schon eher...


----------



## Times (29. Mrz 2017)

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^^


----------

