Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Manox

Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 29. duben 2011, 11:58:07 Předmět: |
|
|
Takže důvod vlastně žádný není, jen si to dobrovolně komplikuješ ?  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 29. duben 2011, 11:58:21 Předmět: |
|
|
VODA napsal: |
Ale mátě pravdu, že by bylo lepší, kdyby tahle doba otevírání odpadla... |
Moje pointa byla, že smysl archivů ve hrách podle mě je v tom, že to urychluje načítání. Proto v těch archivech často najdeš i nekomprimované soubory a komprimované jsou jen ty, kde se komprese vyplatí. Tady ti ale prostý .zip nestačí.
(spíš tady ale ztrácím čas) _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 29. duben 2011, 11:58:38 Předmět: |
|
|
VODA napsal: |
Už mi to trochu připadá jako na střelnici... úúú zastřelte Vóďu...
Ale mátě pravdu, že by bylo lepší, kdyby tahle doba otevírání odpadla... |
kazdy sa ti len snazi povedat ze robis blbost. ked tak si vytvor vlastnu sadu fukcii ktora bude citat zo suborov. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 29. duben 2011, 12:06:13 Předmět: |
|
|
Manox napsal: |
Takže důvod vlastně žádný není, jen si to dobrovolně komplikuješ ? |
Mě to jako komplikace vůbec nepřijde...
Eosie napsal: |
(spíš tady ale ztrácím čas) |
To určitě ne, já si Tvých rad neskonale vážím, jen teď nejsem asi dostatečně na úrovni, abych s tím chtěl něco udělat...
nou napsal: |
kazdy sa ti len snazi povedat ze robis blbost. |
Už jsem si všiml...
nou napsal: |
ked tak si vytvor vlastnu sadu fukcii ktora bude citat zo suborov. |
Ono to na mě časem přijde...
Jinak já jsem v tomhle vlákně chtěl především poradit co použít na načítání souborů ze ZIPu, to jste udělali, děkuji a až mi zase jebne v hlavě, tak to třeba udělám úplně jinak...  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 29. duben 2011, 14:11:15 Předmět: |
|
|
Asi hloupý dotaz, ale nepleteš si Vodo(promiň, nevím jak oslovit) archivaci a kompresi?
Píšeš tu, že hlavní důvod máš, že to chceš mít v jednom souboru, ale pořád se tu ptáš na zip kompresi, tak proto se ptám.
Jinak když jsem já vyvíjel v jedné firmě hru na mobil, tak se společné resource(týkající se např. jednoho levelu) archivovaly do jednoho souboru, protože načíst jeden velký soubor do paměti, a pak z něj vytahávat malé soubory je rychlejší než tahat malé soubory zvlášť. _________________
 |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 29. duben 2011, 16:08:44 Předmět: |
|
|
Houp napsal: |
Jinak když jsem já vyvíjel v jedné firmě hru na mobil, tak se společné resource(týkající se např. jednoho levelu) archivovaly do jednoho souboru, protože načíst jeden velký soubor do paměti, a pak z něj vytahávat malé soubory je rychlejší než tahat malé soubory zvlášť. |
nikdo tu netvrdime ze to smysl nema - ale tomu co tu VODA vyrabi se rika proste 'premature-optimization' a nebo chujovina
to prvni, protoze chce zrychlit neco co je nejspise dostatecne rychle
to druhe, protoze resi zcela zbytecnou vec, kterou ma smysl resit az kdyz zjistim, ze opravdu mam problem s nacitanim dat z disku |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 29. duben 2011, 16:09:33 Předmět: |
|
|
Ne, určitě si ty dva pojmy nepletu.
Já jsem měl původně implementovanou vlastní verzi archívů bez komprese(pokud jste zkoušeli tu mojí aplikaci, tak tam byl soubor resources.arx), jenže mě nebavilo psát tu low rutinu kolem a hlavně jsem nechtěl dělat vlastní archivátor... No a pak jsem si říkal, co použít nějaký hotový archiver, abych na to nemusel nic psát, pouze něco co to bude umět číst...
Napadl mě třeba TAR, ten mám takové tušení, že je bez komprese, ale přeci jenom ZIP je podle mého rozšířenější (alespoň na Windowsech)...
A to že umí ZIP navíc komprimovat, to je jen plus...
Teď teda taková otázka, dejme tomu, že bych to udělal tak, jak jste radili, číst ty data přímo...
Co kdybych to chtěl číst textově, třeba něčím podobným jako je fscanf? _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 29. duben 2011, 16:42:24 Předmět: |
|
|
S tou kompresí již komprimovaných souborů to nevidím tak černě. Quake 3 měl taky jpgčka v zipu.
K načítání textových souborů přes scanf: Pokud nechceš scanf implementovat (což bych ani nedoporučoval), tak jedině asi celý soubor dekomprimovat do paměti a číst přes sscanf. K formátovacímu řetězci vždy připojit %n, abys věděl, kolik znaků jsi přečetl. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 29. duben 2011, 17:12:00 Předmět: |
|
|
No jeden velký soubor je fajn.. rychle se to nasosne do paměti.. ALE... mít to celý v jednom monstr zipu (archivu) není taky ideál. Zaplácáš paměť daty, které tam jen leží. Archiv pro každý level je ok, pro celou hru už moc ne. Je lepší si přidělat trochu práce a napsat to univerzálnější, pak se to dá znovu použít...
Temp soubory... to snad ne To už rovnou můžeš ten archiv zrušit, ne... když to bude archiv plný jpgů, tak ve výsledku.. komprese bude minimální a akorát to bude pomalejší - musí běžet dekomprese a pal tvroba souborů na disku -> teprve fopen... kdežto bez archivu dáš rovnou fopen...
Tohle chce napsat si vlastní fopen.. nebo objektově prostě třídu která ti vrací handle někam do paměti
Podobný systém jsem používal (akorát byl napsaný jako prase, takže mám v plánu to přepsat)
kód: |
//misto ZIP_ARCHIVE treba RAR_ARCHIVE, MY_ARCHIVE,
MY_FILE * f = myfopen("neco.txt", "archiv.zip", ZIP_ARCHIVE);
//lze to rozvest i do extremu, kdy mas archiv v archivu
//MY_FILE * fIn = myfopen("jiny_archiv.zip", "archiv.zip", ZIP_ARCHIVE);
//MY_FILE * f = myfopen("soubor.txt", fIn, ZIP_ARCHIVE);
//nebo pro přímý přistup na disk
//misto jmena archivu nastavis root adresar
//MY_FILE * f = myfopen("/data2/neco.txt", "/", NO_ARCHIVE);
myfread(buffer, sizeof(char) * 256, f);
|
A dekompresi dělá až myfread
Coz se dá brát jako ekvivalent ke klasice
kód: |
FILE * f = fopen("neco.txt", r);
fread(buffer, sizeof(char), f);
|
(c++ souborové třídy nějak nemusím, takže používám C styl, popř. si ho zabalím do třídy)
Vypadá to čistě, nedělá to žádný mazaniny ala temp soubory a můžeš snadno přidat podporu pro další archivy. Pokud by ti šlo o low level... můžeš ve výsledku napsat ručně i zip dekomresi (základní je ok... ale pro složky nevim kolik je to práce navíc, to jsem nikdy nepsal).
Tímhle můžež udělat pak i vlastní balík (změnit existující) a v kódu se nic nezmění _________________ Perry.cz
Naposledy upravil perry dne 29. duben 2011, 17:14:45, celkově upraveno 2 krát |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 29. duben 2011, 17:13:25 Předmět: |
|
|
To frca:
No a tak to v podstatě mám, jen je to uložené v tempu (ZIPfile)...
Jelikož většinu dat mám v textové podobě, tak to potřebuji nějak takhle...
Binárně čtu akorát Textury...
Shadery, modely, kolizní geometrie, navigační meshe jsou textové...
EDIT: Teď jsem to otevření z archívu ještě zrychlil (volbou vhodné velikosti bufferu při načítání a ukládání do tempu). 6 MB ogg ze ZIPu otevřu za 80 ms, což si myslím, že je snesitelné... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 29. duben 2011, 17:26:45 Předmět: |
|
|
Asi by bylo lepší místo cpát to do tempu, tak to mít uloženo jenom v paměti...pole charů...a z toho to pak číst... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 29. duben 2011, 18:18:01 Předmět: |
|
|
Tady jsem zkoušel nějaký debug, uvedený čas je čas potřebný k otevření souboru (ne čtení)...
kód: |
D:\archive.zip\AQCX_ROOT\ottselGirl.tga
1048620 B
Consumed time: 17 ms
D:\archive.zip\AQCX_ROOT\cursor.tga
16428 B
Consumed time: 32 ms
D:\archive.zip\AQCX_ROOT\font.tga
1048620 B
Consumed time: 35 ms
D:\archive.zip\AQCX_ROOT\navmesh2.txt
17067 B
Consumed time: 37 ms
D:\archive.zip\AQCX_ROOT\resources.arx
3017219 B
Consumed time: 43 ms
D:\archive.zip
1027622 B
Consumed time: 12 ms |
Ten poslední záznam je otevření fyzického souboru archívu... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 29. duben 2011, 18:36:21 Předmět: |
|
|
Pokud nemáš skutečně velké soubory, tak je to afaik jedno. U velkých datasetů (které třeba používám já u raytracingu), nějakých třeba 28M triangle - jako má model Lucy - by to trvalo docela dlouho (ono tam tedy trvá i postavení Kd-tree v O(n log n) docela dlouho - pár minut afaik).
Další věc je, pokud bys potřeboval data streamovat, to také není taková sranda co se napsání týče (aby to bylo rychlé), a chce to tam rychlý přístup samozřejmě. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 29. duben 2011, 21:00:51 Předmět: |
|
|
VODA napsal: |
Co kdybych to chtěl číst textově, třeba něčím podobným jako je fscanf? |
Nechci tě nějak demotivovat, ale tohle už je dost začátečnická otázka. Můžeš začít třeba tím, že si uděláš čtení po řádcích (tj oddělovač stringů je '\n') a budeš parsovat vždy samostatný řádek (přes sscanf třeba). Nebo si nad tím uděláš nějakej automat (konečnej nebo zásobníkovej) a máš vymalováno.
perry napsal: |
No jeden velký soubor je fajn.. rychle se to nasosne do paměti.. ALE... mít to celý v jednom monstr zipu (archivu) není taky ideál. Zaplácáš paměť daty, které tam jen leží. Archiv pro každý level je ok, pro celou hru už moc ne. |
Blbost. Monstr archiv používá hodně her. Vždycky se čte jenom ta část souboru, kterou reálně čteš, a to z místa, které sis naseekoval, takže můžeš mít 20GB archiv a z něho si streamovat hudbu a zároveň občas naloadovat nějakou texturu a hudba se ti sekat nebude, když to neuděláš úplně blbě. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Xena

Založen: 01. 08. 2007 Příspěvky: 9
|
Zaslal: 29. duben 2011, 22:15:04 Předmět: |
|
|
Svyho casu sem mel ve First Encounter naroubovanej tenhle data manager od demo grupy 7gods:
http://7gods.org/files/cdi.zip
to by mohlo bejt to, co shanis. |
|
Návrat nahoru |
|
 |
|