Dateien verbergen

JUserToto

Aktives Mitglied
Hallo zusammen,

nun programmiere ich schon seit ich zwölf bin und mich beschäftigt schon immer die Frage "Wie verberge ich meine Dateien?".
Im Moment programmiere ich eine kleine Adventure-Engine, um mich in Swing einzuarbeiten.

Die Engine benötigt natürlich diverse Dateien:

- eine Textdatei, in der der eigentliche Spielablauf gespeichert ist. Diese Textdatei wird von der Engine geparsed und damit wird das Adventure erstellt.
- Bilder. Hintergrundbilder, Objektbilder, Animationsgrafiken...
- Audiodateien für die Sprachausgabe.

Nun wäre es im Endeffekt ja nicht so toll, wenn andere Benutzer an der Textdatei herumschreiben könnten und damit das Spiel ändern könnten. Es wäre auch nicht toll, wenn man die Bilder ändern könnte und sie dann auch so im Spiel dargestellt werden.

Meine Frage also: Wie verberge ich diese Dateien?
Ich vermute, dass man dies mit einem Archiv macht, aber auch ein Archiv könnte ja jeder Benutzer öffnen...

Gibt es irgendeine einfache Lösung, die ich noch nicht bedacht habe, oder ein nettes Tutorial, wie man dieses Problem lösen kann?

liebe Grüße
Toto
 

Kaffeebohn

Bekanntes Mitglied
Hiho,

ich finde es grundsätzlich nicht schlimm, dass der Benutzer das Spiel "grundsätzlich" verändern kann. Ich denke da gerade an ReVolt wem das Spiel was sagt. Da kam der Spass erst richtig auf, wenn man selbstbemalte, getunte Autos gebastelt hat. Oder was wäre Age of Empires II ohne die eigenen Taunts!

Grundsätzlich kannst du deine Dateien ja verschlüsselt ablegen oder in einem eigenen Format. Dann wäre das Ändern schon um ein Vielfaches schwieriger.

Dein Spielverlauf wird ja in irgend einer Form von deinem Programm geparst. Du könntest auch das Ergebnis dieses Vorgangs serialisieren und in einer Datei abspeichern. Die wäre auch nicht so einfach zu verändern.


Aber überleg es dir noch mal ;-)

Liebe Grüße
 
Zuletzt bearbeitet:

JUserToto

Aktives Mitglied
Hey,
Danke.
natürlich bin ich grundsätzlich für solche Geschichten.
Ich hätte auch nichts dagegen, einen Editor zur Verfügung zu stellen etc.
Es geht mir eher darum, dass ein fertiges Spiel "abgeschlossen" sein sollte, sodass man durch falsche Grafiken oder Änderungen an der Textdatei nichts "kaputt machen" kann. Man kann das Spiel zwar auch kaputt machen, indem man eine Datei einfach löscht, aber ich finde eine unverschlüsselte Textdatei, in der das ganze Spiel niedergeschrieben ist (und damit auch alle Lösungen) REIZT nahezu dazu, daran rum zu schreiben.

An Verschlüsselung habe ich auch schon gedacht. Das wäre bei der Textdatei sicherlich eine Möglichkeit (Die könnte man theoretisch ja auch als String per StringReader übergeben, sodass man garkeine Textdatei braucht)... Bilder und Audiodateien zu verschlüsseln scheint mir da wesentlich komplizierter...
Wenn man das allerdings tatsächlich so macht, werde ich mich da wohl einlesen müssen.
 

JUserToto

Aktives Mitglied
Hey,

da sagst du was...
Meine Bilder liegen zur Zeit im Arbeitsverzeichnis. Das Arbeitsverzeichnis ermittle ich vorher.
Besser wäre es natürlich schonmal, wenn sie im jar Verzeichnis wären.
Ich sitze nun seit du mir den Tipp gegeben hast hier und versuche das umzustellen.

Doch es klappt einfach nicht. Rufe ich die Datei einfach mit "file.txt" auf, funktioniert es überhaupt nicht.
Ich habe es also so probiert:

String scenes = "Images/Scenes/";
scenes = DirConstants.class.getResource(scenes).getPath();

DirConstants ist eine Klasse, die ich mal zum Verwalten der ganzen Pfade erstellt habe...

Damit bekommt er auch eigentlich das richtige Verzeichnis...
c:/users/bla/Desktop/Neuer%20Ordner/spiel.jar!/Images/Scenes/

wenn ich allerdings versuche damit etwas anzufangen krieg ich eine FilenotFound Exception. :(

Warum macht einem Java nur manchmal das Leben so kompliziert? ???:L
 
Zuletzt bearbeitet:

babuschka

Top Contributor
Recht einfach wäre es doch, für die Bild- und Tondateien eine Checksumme (z.B. MD5) zu berechnen. Bei Programmstart berechnest Du von allen Dateien im Programmverzeichnis erneut die Checksumme und vergleichst sie mit dem Original. Stimmen sie nicht überein, so wurden die Dateien manipuliert und Du kannst entsprechend darauf reagieren.
 

JUserToto

Aktives Mitglied
Hallo,
danke für die Idee.
Ist sicherlich auch eine Überlegung wert.
Allerdings müsste ich die md5 hashes dann auch fest einprogrammieren.
Jetzt muss ich es erstmal schaffen, die Dateien direkt im Jar File anzusprechen...
 

Steev

Bekanntes Mitglied
Dateien werden direkt im JAR-File über die URL bzw. URI angesprochen. Und zwar relativ zur entsprechenden Klasse mithilfe von getClass().getResource(yourResource).

Gruß
Steevn
 

JUserToto

Aktives Mitglied
Hallo,

das habe ich probiert, kriege aber eine FileNotFound Exception :( Sitze da nun seit Stunden dran und es kommt nichts gescheites bei rum.
Ich habe eine Klasse zum Starten des Spiels (StartGame). Da steht nun u.A. drin:

[Java]
URL filepath = StartGame.class.getResource("/RUN/game.jefag");
GUI.Game game = Parser.parse(filepath,
darstellung);
[/Java]

Im Parser dann folgendes:

[Java]
BufferedReader reader = new BufferedReader(new InputStreamReader(filepath.openStream()));
GUI.Game game = gameParser.parse(reader, [...]);
[/Java]

Was mache ich falsch? Geht es nicht statisch? ("StartGame.class.")
 

Steev

Bekanntes Mitglied
Die Datei muss relativ zu der angegebenen Klasse angegeben und abgvelegt werden. Das bedeutet, wenn die Klasse in dem Ordner / Package X liegt, dass dein Ordner Run ebenfalls dort abgelegt sein muss.
 

JUserToto

Aktives Mitglied
Mittlerweile funktioniert es. Warum... weiß ich nicht.

BufferedReader reader = new BufferedReader(new InputStreamReader(Parser.class.getResource("/RUN/game.jefag").getFile()));

So geht es. So wie es oben geschrieben ist nicht.

Danke jedenfalls! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Taknax Minecraft: Export der Mod dupliziert Dateien Spiele- und Multimedia-Programmierung 0
Splayfer Zuweisen vn Dateien Spiele- und Multimedia-Programmierung 0
MiMa MP3 Dateien für Metadaten abgleichen Spiele- und Multimedia-Programmierung 0
J wav Dateien vergleichen Spiele- und Multimedia-Programmierung 3
E TMX - Dateien in Java laden Spiele- und Multimedia-Programmierung 1
I Sound Dateien abspielen Spiele- und Multimedia-Programmierung 9
Hercules Slick - .fon Dateien benutzen? Spiele- und Multimedia-Programmierung 6
D 3ds max dateien in java einbinden, 3d welt Spiele- und Multimedia-Programmierung 9
C Problem mit Abspielen von Audio-Dateien Spiele- und Multimedia-Programmierung 3
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
S shp-Dateien wie z.B in C&C RA2 Spiele- und Multimedia-Programmierung 4
P Verzeichnis auslesen - Dateien werden zu oft gespeichert Spiele- und Multimedia-Programmierung 6
B Java3D .obj dateien Spiele- und Multimedia-Programmierung 2
D *.blend Dateien in 3ds umwandeln? Spiele- und Multimedia-Programmierung 2
G wie kann ich jar dateien fürs handy kopatibel machen Spiele- und Multimedia-Programmierung 3
A Auf Dateien in *.jar zugreifen Spiele- und Multimedia-Programmierung 3
K Importieren von 3D-Dateien Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben