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

killmichnich

unregistriert

1

19.07.2009, 08:33

eigenes bilder format?

Hiho,
ich wollte mal nachfragen, wie/ob man sich denn ein eigenes Bilderformat machen kann. Bei den ganzen Spielen wo ich bis jetzt programmiert hab sind die ganzen Bilder halt alle offen sichtbar, und das find ich ein bisschen doof :/
Deshalb hab ich mir gedacht, könnte ich die ja iwie anders abspeichern, ich hab leider nur keine Ahnung wie ...
Gibt es denn da ieine "möglichst simple" Methode um das zu Realisieren?

MfG Killmichnich

LukasBanana

Alter Hase

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

2

19.07.2009, 10:40

Programmierst du deine Spiele denn mit OpenGL, Direct3D oder einer 3D Engine?
Die meisten 3D Engines sollten eigentlich eine Funktion wie "CreateTexture" oder "CreateImage" haben, der man einen Image Pointer mit allen Texel-Daten übergeben kann.
In OpenGL oder Direct3D musst du deine Texturen sowieso selbst erstellen, da bietet sich sowas doch gut an.

Entweder du speicherst die Bilder ganz einfach wie ein Bitmap, also jede Pixel Farbe in 3 Byte (R, G, B) oder sogar 4 (R, G, B, A).
Kannst ja ein kleines Programm schreiben, was deine bisherigen Bilder in dein eigenes Format speichert, vlt. sogar mit Verschlüsselung, wenn du das willst.

Mfg Lukas

killmichnich

unregistriert

3

19.07.2009, 11:01

ich programmier mit directx
heißt ich soll von jedem pixel einfach die farbe in ner datei abspeichern?

Mirlix

Supermoderator

Beiträge: 451

Beruf: Developer Advocate

  • Private Nachricht senden

4

19.07.2009, 11:21

Damit wuerdest du dann eigentlich das BMP Format nachgemacht haben:)
Um deine Bilder vom Zugriff von Spielern zu schuetzen wird ein eigenes Format recht wenig bringen. Entweder einer findet raus wie dein Format aufgebaut ist, was bei Bildern recht einfach sein kann wenn keine komplexen Algos vorkommen. Oder einer holt sich die Bilder aus dem Arbeitsspeichern wenn sie geladen worden oder einer faengt sie ab wenn sie an die Graka geschickt werden.
Man kann davon ausgehen das wenn einmal was auf dem Computer der Spieler ist das sie auch drankommen, man kann es erschweren aber nie verhindern.

Als reine Lernaufgabe kann aber ein eigenens Bilderformat sehr interessant sein.

C--

Alter Hase

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

5

19.07.2009, 11:28

Um es dem "durchschnittlichen" Spieler das auslesen der Bilder zu erscweren könntest du ja die Datein in einem verschlüsselten ZIP oder irgendsowas speichern.

@Mirlix: ich hatte mir auch schon mal überlegt, als Übung ein eigenes Bildformat zu schreiben.
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

killmichnich

unregistriert

6

19.07.2009, 11:28

oO also ich glaub von meinen freunden die das spiel spielen käme keiner auf die idee mal eben zu versuchen iwelche bilddateien zu "knacken" ^^

aber braucht das dann nich lang zum laden, wenn ich erst die farbe von jedem pixel aus der datei rauslesen muss und dann das pixel auf ner textur setzen muss? :/

C--

Alter Hase

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

7

19.07.2009, 11:33

@killmichnich: Laden die Engines, OpenGL, DX usw. nicht die Bilddateien auch "nur" "Pixel für Pixel" aus der Datei?
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

killmichnich

unregistriert

8

19.07.2009, 11:36

du da muss ich gestehen hab ich keine ahnung :/

ich hatte mir das ganze schonmal gedacht, dass ich die bilder so in ner datei abspeicher, da ging das ganze aber sehr langsam von statten ... hmm kann auch daran gelegen haben dass ich das ganze mit der WinAPI gemacht hab ... ^^

naja dann nochmal ne frage:
wenn ich das alles so in ner datei speicher, wie trenn ich denn dann die einzelnen farbwerte am besten voneinander?
farbe;farbe;farbe ... das wär wohl etwas speicheraufwendig oder?
farbefarbefarbe könnte ich wieder nich voneinander trennen ... ?

Mirlix

Supermoderator

Beiträge: 451

Beruf: Developer Advocate

  • Private Nachricht senden

9

19.07.2009, 11:40

Naja, da du weisst das jeder pixel aus 3 farbwerten besteht. Und jeder farbwert aus einem byte ist es eigentlich ganz einfach
du speicherst hintereinandere RGBRGBRGBRGB. Was du dir ueberlegen musst ist wie du weisst wann einen neue Zeile anfaengt. Entweder schreibst du am Anfang des Bilder die Dimension das Bildes oder du fuehrt : oA als zeichen fuer einen Zeilenumbruch ein.

C--

Alter Hase

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

10

19.07.2009, 11:48

@Mirlix: Ich würd die Variante mit den Dimensionen am Anfang bevorzugen, so muss man beim laden nicht immer wieder auf ":" oA überprüfen.
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Werbeanzeige