Visto che per lavori miei dovevo assolutamente trovare un sistema di compressione di dati e file mi sono messo a sbattere la testa per creare una dll per la compressione dei file(anche della memoria ma con game maker non si può fare quindi...)
Eccovi la mia creatura di soli 61 kb:
http://njgames.altervista.org/files_misti/NJZlib.7z
L'archivio(compresso con 7z, non con la mia dll ) contiene due file, la dll ed un semplicissimo esempio che contiene tutto.
Per fare i test ho usato un txt ed un bmp da circa 10-12 megabyte che vengono compressi e decompressi in meno di mezzo secondo. E' inutile postarvi i file di esempio in quanto vi basta veramente poco per creare un'immagine bmp 2048x2048. Sicuramente da qualche parte nel vostro pc avete un bel po di file abbastanza grossi quindi non perdo tempo.
La dll è basata sulla libreria zlib
http://zlib.net/
che fa praticamente tutto il lavoro anche se ci è voluto un giorno intero tra le varie problematiche per fare questa dll.
La dll è composta da 2 sole funzioni:
NJZ_compress(input file, output file)
NJZ_decompress(input file, output file)
Che direi non servono essere spiegate, dategli come input il file da comprimere e come output il nome del file generato.
Input ed output file non possono essere identici.
In caso di errore come file di input inesistenti o inaccessibili la funzione restituirà false mentre se riuscirà a comprimere il file restituirà true(utile per sapere se ha funzionato o no).
Il file generato può avere una qualunque estensione in quanto è solamente un file tuttavia POTRA' ESSERE DECOMPRESSO SOLO ED ESCLUSIVAMENTE DALLA MIA DLL!!!
Quindi andateci piano.
La dll come potete constatare è molto veloce e comprime i file con lo stesso algoritmo usato per i png, tuttavia anche se ho aggiunto controlli sulla riuscita nella compressione il lavoro può essere migliorato. La dll non è ancora progettata bene e copia tutto il file in memoria quindi potrebbe causare facilmente out of memory. Quindi cercate di evitare file eccessivamente grossi, preferibilmente mai sopra i 100 MB anche se dubito ci arriverete mai. Tuttavia comprimere molti piccoli file uno alla volta risolverà tutti i vostri problemi.
L'esempio originale è stato fatto con gm 8.1 ed è stato successivamente portato e provato su gm8.0 e funziona su entrambi quindi nell'archivio troverete l'editabile in formato gmk per compatibilità.
Prossimi obiettivi:
-comprimere il file un po alla volta così da non andare in out of memory.
-Inserire un basilare sistema di criptaggio tramite password che male non fa
-idee?
Licenza: Questa dll è utilizzabile da chiunque gratuitamente anche a scopo commerciale.
Non è necessario creditarmi anche se è consigliabile inserire un link nei vostri giochi per farla conoscere ad altri.
[DLL] NJZlib, dll per la compressione dei file
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
[DLL] NJZlib, dll per la compressione dei file
Ultima modifica di Jak il 11/06/2012, 13:00, modificato 1 volta in totale.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
- enick
- GMI VIP
- Messaggi: 3749
- Iscritto il: 26/06/2011, 19:34
- Specialità: 39dll e 3D
- Località: Sardegna
- Contatta:
Re: [DLL] NJZlib, dll per la compressione dei file
davvero ottimo,mi sarà utilissima, per il criptaggio sono daccordissimo
Re: [DLL] NJZlib, dll per la compressione dei file
Potresti aggiungere una funzione per criptare e decriptare una stringa?
senza files esterni...
Itendo proprio
string_crypt(str,password)
string_decrypt(str,password)
la funzione restituirà la stringa crittata o decrittata
senza files esterni...
Itendo proprio
string_crypt(str,password)
string_decrypt(str,password)
la funzione restituirà la stringa crittata o decrittata
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: [DLL] NJZlib, dll per la compressione dei file
Bè, per una cosa simile direi che tanto vale farci un'altra dll.
Si la posso fare ma finchè parliamo di una dll per la compressione che tra le altre cose cripta pure posso fare una cosa semplice mentre per criptare una stringa dovrei studiarmi qualche algoritmo di criptatura più complesso.
Vedrò che posso fare comunque si, bella idea.
Secondo voi è meglio fare una dll a parte o mettere tutte le funzioni solo su questa?
Si la posso fare ma finchè parliamo di una dll per la compressione che tra le altre cose cripta pure posso fare una cosa semplice mentre per criptare una stringa dovrei studiarmi qualche algoritmo di criptatura più complesso.
Vedrò che posso fare comunque si, bella idea.
Secondo voi è meglio fare una dll a parte o mettere tutte le funzioni solo su questa?
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Re: [DLL] NJZlib, dll per la compressione dei file
Beh a me servirebbe quella delle stringhe
perché in GML é lentuccio
se vuoi farla a parte la userei di sicuro
perché in GML é lentuccio
se vuoi farla a parte la userei di sicuro
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: [DLL] NJZlib, dll per la compressione dei file
Aggiunta la possibilità di criptare i file tramite password!!!
Il link è sempre lo stesso, la dll ora è passata a ben 64 kb, un'enormità
La velocità nel comprimere i file è pressochè identica con file relativamente piccoli(circa 12 megabyte) quindi direi che non ci sono problemi tuttavia ho tenuto anche le vecchie funzioni.
Ora che ci penso ho messo che non esegue alcun codice se la stringa è vuota "" quindi potrei anche eliminare le vecchie funzioni visto che è possibile ottenere lo stesso risultato.
L'algoritmo di criptatura è decisamente semplice tuttavia, anche per questioni di velocità, viene utilizzato sui dati compressi quindi senza una logica ben precisa risultando molto difficile trovare una "chiave di lettura" per i programmi di hacking.
Probabilmente non aggiungerò anche lo spezzettamento dei file visto che comprimerebbe meno e mi renderebbe più difficile la vita, dopotutto è praticamente impossibile con game maker ritrovarsi con un file esterno da più di 10 MB e sopratutto non già compresso(es, png, mp3 ecc) dove la compressione è praticamente inutile.
Una cosa che forse aggiungerò è il livello di compressione lasciandovi decidere se prediligere la compressione o le prestazioni.
A breve posterò la versione con due sole funzioni così da essere più minimale possibile
Il link è sempre lo stesso, la dll ora è passata a ben 64 kb, un'enormità
La velocità nel comprimere i file è pressochè identica con file relativamente piccoli(circa 12 megabyte) quindi direi che non ci sono problemi tuttavia ho tenuto anche le vecchie funzioni.
Ora che ci penso ho messo che non esegue alcun codice se la stringa è vuota "" quindi potrei anche eliminare le vecchie funzioni visto che è possibile ottenere lo stesso risultato.
L'algoritmo di criptatura è decisamente semplice tuttavia, anche per questioni di velocità, viene utilizzato sui dati compressi quindi senza una logica ben precisa risultando molto difficile trovare una "chiave di lettura" per i programmi di hacking.
Probabilmente non aggiungerò anche lo spezzettamento dei file visto che comprimerebbe meno e mi renderebbe più difficile la vita, dopotutto è praticamente impossibile con game maker ritrovarsi con un file esterno da più di 10 MB e sopratutto non già compresso(es, png, mp3 ecc) dove la compressione è praticamente inutile.
Una cosa che forse aggiungerò è il livello di compressione lasciandovi decidere se prediligere la compressione o le prestazioni.
A breve posterò la versione con due sole funzioni così da essere più minimale possibile
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: [DLL] NJZlib, dll per la compressione dei file
Un richiamo a dll non è "così" pesante. Anche se decidete di decomprimere un migliaio di file che in tutto fanno boh, 100 MB la differenza dovuta alle chiamate a funzione non è così grande. Mi pare che potete tenervi sui 60 fps con 500 chiamate a dll quindi non sentirete nemmeno la differenza rispetto alla decompressione del fileXeryan ha scritto:hmm forse si potrebbe risparmiaree chiamate e quindi velocizzare con una funzione che prende una lista di files da comprimere
Senza contare che ti toccherebbe smanettare con gm per fare la lista dei file quindi rischi anche di rimetterci
Ho aggiornato il file togliendo le funzioni originarie, ora ci sono solo quelle con criptatura visto che basta usare una password vuota "" per non usarla.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Re: [DLL] NJZlib, dll per la compressione dei file
quello che gli ho risposto l'altro giorno alla domanda "perchè non usi la mia?"Xeryan ha scritto:ci vorrebbe il packing di files come GMZ, allora potrei utilizzarla
mah, sinceramente non trovo differenze, nell'usare una o l'altra, era più una discussione di "made in italy", ma se mancano le features, non posso usarla...
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: [DLL] NJZlib, dll per la compressione dei file
Ho fatto il sistema di packing giusto ieri e domani passerò a inserirla nel sistema di compressione anche se forse sarebbe meglio riorganizzare meglio la struttura del file...
Visto che me lo chiedete in molti devo assolutamente farlo
Visto che me lo chiedete in molti devo assolutamente farlo
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Re: [DLL] NJZlib, dll per la compressione dei file
Jak ha scritto:Ho fatto il sistema di packing giusto ieri e domani passerò a inserirla nel sistema di compressione anche se forse sarebbe meglio riorganizzare meglio la struttura del file...
Visto che me lo chiedete in molti devo assolutamente farlo
2 features NECESSARIE(che in gmz non ci sono)
-estrarre in una cartella che voglio io, e non perforza in working directory
-possibilità di criptare senza avere errori nelle immagini (cosa molto strana)
se fai queste 2 cose hai superato di gran lunga gmz, e ti faccio una gex (non perchè non ne sei capace, ma perchè mi serve, quindi tantovale pubblicarla )
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: [DLL] NJZlib, dll per la compressione dei file
La posso fare anche ioTizzio ha scritto:se fai queste 2 cose hai superato di gran lunga gmz, e ti faccio una gex (non perchè non ne sei capace, ma perchè mi serve, quindi tantovale pubblicarla )
Facilerrime da fare. Stavo pensando che a sto punto mi conveniva usare il source di 7zip ma ho provato varie volte e dell'lzma non ci capisco nienteTizzio ha scritto:2 features NECESSARIE(che in gmz non ci sono)
-estrarre in una cartella che voglio io, e non perforza in working directory
-possibilità di criptare senza avere errori nelle immagini (cosa molto strana)
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Re: [DLL] NJZlib, dll per la compressione dei file
meglio, lavoro risparmiatoJak ha scritto:La posso fare anche io
già che ci sei ti cosiglio di pubblicarla su gmc
c'è tanta gente che cerca un estensione simile, ed esiste solo quella porca/bugga ta
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti