Incbin 'auslagern' ?
Übersicht

PhillipKBetreff: Incbin 'auslagern' ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Community =)
Ich bin grade dabei, mir einen Kleinen Editor zu schreiben. Da ich schon öfters gesehen habe, das ressourcen(bilder etc) in eine exe 'eincompiled' wurden, habe ich mich auf die suche gemacht. Mir ist der befehl Incbin unter die fittiche gekommen - klappt auch wunderbar! Nur leider ist mein vorhaben ein wenig anders. Mein editor soll eine ressourcen datei mit Angaben zur Frameanzahl etc mit beipacken, sodass ich alles gesammelt an einem Ort habe, finde ich einfach übersichtlicher. Ich würde allerdings auch gerne funktionen wie Compress() nutzen, um meine Bilder kleiner zu machen und einzuspeisen.. Und hier kommt meine frage. Da ich keine ahnung habe, wie Incbin genau funktioniert, noch was ich mit IncBinPtr anfangen kann - ist es möglich, bilder ausgelagert einzuspeisen? Meine grobe vorstellung: Bild laden, informationen laden & einstellen, das ganze als batzen irgendwo speichern. Ich möchte keine 100mb große exe produzieren, weil ich alles einbinde.. Dazu sollen Thematisch sortierte Datein herhalten, auslesen ist erstmal egal. Mir fällt grade etwas ein, in einem anderen spiel habe ich mal die Archive durchforstet und strings gefunden, aus welchen die Bilder ausgelesen werden (temporär in einem ordner erstellt und von dort geöffnet) - sowas möchte ich vermeiden! Es sind meine grafiken, die soll mir keiner klauen ![]() Also: Ist es möglich, bilder als string oder ähnliches "einzubinden", und sie zusammen mit anderen Informationen (breite,höhe,framezahl, name, etc etc etc) wieder auszulesen, OHNE das sie temporär irgendwo erstellt werden? Am liebsten so Komfortabel wie Incbin, aber mir ist alles recht, solang es keine 10ms für 100x100 pixel braucht =) |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum brauchst du die Daten, wenn die Bilder in der Exe eingebunden sind? Wären das nicht alles konstante, bekannte Werte?
Du könntest dein eigenes Packet-Format schreiben: Alle Ressourcen hintereinander in eine Datei Packen und mit Compress zippen. Das deine Bilder sicher vor Diebstahl sind, ist aber in jedem Fall eine Illusion: Was du anzeigst, was im Speicher liegt, kann man auslesen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tja, aber ich kann es 80% der Usern schwerer machen ![]() Aber ich möchte keinen "gfx\blabla.png" krams beilegen, sondern eine einzelne datei, die meine ressourcen verwaltet. Der nutzen ist fraglich, mir gehts in erster linie ums lernen. In einem anderen Projekt schreibe ich grade einen Blockeditor, welcher 3D modelle mit Texturen verbindet, einstellungen speichert etc etc und bei laufzeit eine änderung ermöglicht, indem diese Datei einfach "erneuert" wird. (das ganze ist soweit sinnvoll, da es ein netzwerkspiel ist und es nichtmehr mal eben in 1 sek gestartet ist, nur weil man 2 pixel geändert hat.) Darum kam ich grade bei einem Spassprojekt auf die idee, alles gesammelt beizufügen. Allerdings kommt mir da IncBin nicht sehr gelegen. Wenn ich das richtig gesehen habe, wird der Dateitype + Inhalt + 'Pfad\name.endung' in die exe Roh eingebunden. Wenn es nicht anders geht, schade. Aber mir würds schon reichen, wenn ich diesen Part aus einem String aufrufen kann (dh den eingebundenen block aus einem TStream in einen String / Byte[] lesen und von dort mit "Incbin::"+string auslesen. Andersfalls werde ich mich dran setzen und die pixmaps + sonstige informationen roh einspeichern und später neue TPixmap objekte daraus bauen .. ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe nicht ganz, was Incbin mit deinem Vorhaben zu tun hat... Du kannst die ein Pack-Programm schreiben was die Ressourcen lädt und alles komprimiert/verschlüsselt in eine Datei speichert. Davon sollte es auch schon ein paar Programme im Forum geben.
Ob du dann diese Datei mit Incbin einbinden willst oder nicht, ist relativ gleich. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Chrm. Mein fehler.
Ich habe mich an Incbin festgefressen, weil es die erste möglichkeit war, die ich gefunden habe. Packprogramm - klingt nach einem Schritt in die richtige richtung. Entscheident für mich ist, das die datei in keiner form irgendwo "rekonstruiert" wird, zb in einer Tmp datei gebastelt und von dort geladen. Sie soll einzig und ausschließlich intern direkt aus einem string oder ähnlichem erstellt werden. Wie gesagt, wenn das nicht geht, werde ich wohl die komplette pixmap auslesen + packen :< |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
hole dir das Modul Koriolis.Zipstream:
http://www.koriolis-fx.com/for...topic=15.0 Du musst dich dort als User anmelden, um die Download-Links in den Beiträgen zu sehen! Es ist eine Erweiterung der Streams auf ZIP-Dateien. Ich arbeite damit schon seit langen sehr zufriedenstellend. Es ist sehr praktisch weil man jederzeit zwischen Daten aus einem DatenOrdner, der ZIP-Datei und sogar jederzeit zu einer mit INCBIN eingebundenen ZIP-Datei wechseln kann. Das Koriolis-Zipstream kennt nämlich keine neuen Befehle, sondern klinkt sich einfach in alle bestehende Datei-Aktionen ein. das kannst Du damit machen: Du hältst Daten in einem DatenOrdner bereit. Du erstellst eine ZIP-Datei aus den Daten. Das ZIP darf dabei auch Unterverzeichnisse enthalten. Du läßt dieses ZIP auf der Platte oder bindest es in ein INCBIN ein. BlitzMax: [AUSKLAPPEN] SuperStrict Auf die eigentlichen Dateibefehle hat es wie du siehst, keinerlei Auswirkungen! Du kannst die gezippten Dateien auch mit ReadFile() ansprechen. Nur speichern geht natürlich nicht! Also kein WriteFile() oder OpenFile() |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, Midimaster!
Das klingt nach einem weiteren Ansatz. Allerdings sind sie dann wieder so schön aufm präsentierteller.. Mh =) Ich werde es mir mal anschauen, vllt kann ich mit dem ansatz ja eine erweiterung schreiben. ![]() Gehe ich recht in der annahme, das incbin die datei 1zu1 in die exe integriert und ein paar bytes zusätzlich zur Identifizierung braucht? |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
da is' nix aufm "Präsentierteller", weil Du ja die ZIP-Daten mir Passwort schützen kannst. Allerdings habe ich jetzt beim 2.Durchlesen deines Beitrages herausgelesen, dass du diese Dateien zur Laufzeit ändern willst? Das ginge natürlich weder mit INCBIN noch mit ZIP | ||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bastel dir halt ein Containerformat und verschlüssle es, hab ich mir auch schon gemacht.
Musst dir halt Streams usw. anschauen. |
||
Blessed is the mind too small for doubt |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax kann Bilder usw. aus einer Bank laden - du kannst deine Ressourcen alle als eine Reihe Bytes komprimieren & verschlüsseln ohne temporäre Dateien zu erstellen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Huch, bei laufzeit ändern?
Nein, das wollte ich nicht ausdrücken! Das 'Datenpaket' soll von einer art Editor geschnürrt werden und später für mein Programm als ressourcenquelle diehnen. Änderbare sachen wie Optionen etc werden natürlich nicht mit eingeschnürrt ![]() Danke für den Tipp mit den Bank's! Das klingt auch brauchbar ![]() ![]() Das würde mir auch die möglichkeit des Verschlüsselns bringen - gleich mal drüberschauen! |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber was spricht dann gegen die in einer ZIP-Datei gesammelten und mit INCBIN eingebunden Daten? Für mich hört sich das geradezu ideal für dein Projekt an!
- Die Daten sind in einer gemeinsamen Datei zusammengefasst. - sie sind dort sogar platzsparend komprimiert. - sie sind in die EXE eingebunden - trotzdem musst du nicht für jede Datei eine eigene INCBIN-Zeile schreiben - durch das Passwort lassen sie sich auch nicht von außen öffnen. - Bilder werden auch in eine HEX-Editor nicht erkannt. - während der Programmierung kannst du einfach mit den einzelnen Rohdaten auf der Platte arbeiten. Das reduziert die Compiler/Linker-Zeit - in der Fertigversion sind die Daten direkt in die EXE gelinkt. Dazu muss nur eine einzige Zeile im Code geändert werden und alle Ladeaktion greifen auf die INCBIN-ZIP zu! Im Prinzip ist das nichts anderes als in Banks gepackte Daten. Aber Du musst eben nix entwickeln, um die Daten auszulesen. Und nix um Sie zu einem Paket zu schnüren. Einfach in den ZIP-Ordner werfen... |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es spricht nichts dagegen ![]() Zip finde ich persönlich sogar ziemlich gut. Allerdings habe ich keine möglichkeit, die Zip datei zu verschlüsseln oder sonstwie. Passwort hin oder her, ich bin paranoid =) Und direkt per incbin möchte ich höchstens ein paar Icons einbinden. Größere Grafiksammlungen (stichwort: Isometrische map + Teile als png's) gehören meiner meinung nach nicht in eine Exe. Ich würde ziemlich misstrauisch werden, wenn mir jemand eine >10mb exe unterschieben will, mit einem kleinen spiel was selbst programmiert ist ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab lieber eine 10mB-exe als einen Ordner voll diversen .paks etc. Es ist ja wohl klar dass die Medias irgendwo sein müssen. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich gehe sogar inzwischen den Weg, dass ich ALLES in eine solche INCBIN-ZIP packe...auch Dateien die später eigentlich in das User-Verzeichnis des Kunden müssen. Beim ersten Start werden die aus der INCBIN-ZIP dorthin kopiert.
10MB stellen dabei noch keine besondere Größe dar und wirken beim User glaube ich ziemlich normal. Beim Firefox ist z.B. einer der DLLs 13MB groß, die meisten Anwendungen wie Audacity so zwischen 5MB und 10MB. Ok, 100MB wären etwas ungewöhnlich, aber bei den 4GB Arbeitspeicher heutzutage auch keine Thema mehr... |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei einem Spiel würde ich die Ressourcen nicht unbedingt vom User verstecken; kann ja vorkommen, das jemand ein Grafikpack machen möchte... Solang es nicht wegen einem Onlinehighscore unfair wäre, haben die Leute u.U. noch mehr Spaß wenn sie etwas herumtweaken können. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Och grafikpacks sollten auch so machbar sein ![]() Dazu schmeiß ich einfach mein Blend file und nen Rohling bei, beim start wird der unterordner /mods/Tilesets/ durchsucht und evtl eingelesen *g* Naja, gewissermaßen haben hier alle recht. Aber meine nachforschungen zielen auf unser Hauptprojekt, welches eine ähnliche landschaft wie Minecraft bietet, allerdings mit einem anderen Spielprinzip. Sollte jemand an unsere Modell-daten rankommen, könnte er es einfach cracken. Da das ganze über einen Server läuft, wäre das weniger schön. Und nochmehr anti-cheat abfrage einbauen, wäre schon wahnsinn <.< Ich frage mich, ob mein Serversystem überhaupt noch für die angestrebten User-mengen ausreicht :< |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group