![]() |
Показать все 29 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Поддержка unzip (zlib) (https://hlfx.ru/forum/showthread.php?threadid=3261)
Поддержка unzip (zlib)
Помогите добавить поддержку unzip (zlib) в half-life. Прочитал статью http://www.gamedev.ru/articles/?id=70122, но не могу понять где взять unzip.lib
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
avegamer
Раздел для темы наугад выбрал, или ты таки бот?
__________________
Случайно тему не в том разделе создал.
Мне нужно, чтобы все ресурсы, например спрайты или wav-файлы хранились в архивах .zip или .gz и чтобы можно было их использовать в функциях, напимер, PrecacheModel, PrecacheOther и тому подобные.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Чтоб вес был не 5 мегобОйт, а 4.8
__________________
А что нет?
PunkPaToB ага... и время загрузки увеличивалось в несколько раз.
Government-Man
c таким подходом оно только уменьшиться =)
avegamer юзай *.pak и будет счастье, или *.gcf но тут на лицензии не сделаешь вроже.
Ну не знаю, чего там сложного.
Ладно, держите код, который я использовал при разработке VampireSDK
1 | int UnCommpressBuff( unsigned char *destbuff, unsigned long *destbufflen, unsigned char *sourcebuff, unsigned int sourcebufflen ) |
2 | { |
3 | int res = uncompress( destbuff, destbufflen, sourcebuff, sourcebufflen ); |
4 |
5 | return res; |
6 | } |
1 | char pTtzFileName[256]; |
2 | memset(pTtzFileName, 0, sizeof(pTtzFileName) ); |
3 | sprintf(pTtzFileName, "%s.ttz", pBaseFileName ); |
4 |
5 | FileHandle_t fileTtzHandle = g_pFileSystem->Open( pTtzFileName, "rb" ); |
6 |
7 | if( !fileTtzHandle ) |
8 | { |
9 | Warning( "\"%s\": cached version doesn't exist\n", pTtzFileName ); |
10 |
11 | delete tthbuf; |
12 | delete vtfhdr; |
13 |
14 | return NULL; |
15 | } |
16 |
17 | pTtzFileSize = g_pFileSystem->Size(fileTtzHandle); |
18 |
19 | ttzbuf = (char *)malloc(pTtzFileSize); |
20 | memset(ttzbuf, 0, pTtzFileSize); |
21 |
22 | g_pFileSystem->Read( ttzbuf, pTtzFileSize, fileTtzHandle ); |
23 | g_pFileSystem->Close( fileTtzHandle ); |
24 |
25 | uncompbuf = (char *)malloc(pTth->infLength() - pVtfHdrSize); |
26 | memset(uncompbuf, 0, pTth->infLength() - pVtfHdrSize); |
27 |
28 | unsigned long ressize = pTth->infLength() - pVtfHdrSize; |
29 |
30 | int res = UnCommpressBuff( (unsigned char *)uncompbuf, &ressize, (unsigned char *)ttzbuf, pTtzFileSize ); |
31 |
32 | if(res) |
33 | { |
34 | // Warning( "Error extracted: %d, in file: %s\n", res, pTtzFileName); |
35 |
36 | delete tthbuf; |
37 | delete vtfhdr; |
38 | delete ttzbuf; |
39 | delete uncompbuf; |
40 |
41 | return NULL; |
42 | } |
43 | else |
44 | { |
45 | // Warning( "Good extracted: %d, in file: %s\n", res, pTtzFileName); |
46 | } |
47 |
48 | pEndVtfSize = pTth->infLength(); |
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
А я вот подумал, может быть создать свою версию WAD (есть наработка на tmt pascal) и хранить в нем файлы сжатые например zlib
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
WAD для хранения не только текстур, но и любых других файлов как в doom или zdaemon
WAD для хранения только текстур. Любые другие файлы удобнее хранить в паке. У вада даже расширения файлов не предусмотрены.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я не имел в виду wad из doom, а свою версию, где могут храниться файлы с любыми расширениями, и можно его назвать, например, .gwad, .apk, .gpk и т.п.
а зачем плодить новые форматы? по-моему их и так уже достаточно наплодили.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Government-Man он наверно имел в виду уменьшится скорость. А вообще сколько этих архивов не придумали, я всегда распаковываю, если есть возможность. В том же чистом небе это дает небольшой, но ощутимый прирост фпс (с 25 до 30 на максимальном рендере).
__________________
-Brain is dead-
Я хотел использовать в своей версии wad распаковку в память, а не на диск.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Для меня например удобней чтобы все файлы хранились в одном архиве в сжатом виде и хотелось бы как-то это использовать для сетевой игры.
Вот кстати наброски для моей версии wad.
Перевожу с tmt pascal
// заголовок wad
Struct WadHeader
{
char[4] signature; //gwad // сигнатура wad
int file_number; // количество файлов в wad
// может стоит сменить ”int” на что-то другое
long int header_size_table;
}
// заголовок для чтения фаловых данных
struct FileHeader
{
char *file_name;
long int file_address
}
то не хидер сайз-табле, а оффсет до LUT - Lump Allocation Table.
Она пишется в конец вада, поскольку мы заранее не знаем сколько места зарезервировать в начале для нее, т.к. это зависит от кол-ва лумпов, которое нам неизвестно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Но разве проблема написать консольную програмку для упаковки/распаковки файлов в таком wad
Добавлено 16-02-2012 в 00:02:
А при упаковке я и расчитывал записывать размер данных файла в wad
Добавлено 16-02-2012 в 00:09:
Да, а в fileheader забыл добавить long int data_size;
в чем смысл? если нужны архивы и удобные патчи пакуйте pak0.pak .. pak1.pak и т.д по нарастающей, система используется во всех кваках и очень удобно.
в крайняк пилите все в один большой как в старом халфе(pak0.pak) или в новом халфе (half-life.gcf) и делайте диф патчи.
и назаметку небольшой факт, ресурсы которые в pk3/pk4 (он же zip) я в свое время специально распаковывал дабы заметно ускорить загрузку ресурсов в игре.
Зачем теб новый формат? .pak не достаточно? Я вообще не вижу смысла запакововать.
Government-Man
точнее увеличиться, проше прощения, ошибся.А скорость загрузки - уменьшиться.
Так же согласен с Чувачком.
Вот только не пойму, как все это использовать с функциями precache и, возможно, setmodel
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 09:57. | Показать все 29 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024