HLFX.Ru Forum
Показать все 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)


Отправлено avegamer 13-02-2012 в 15:21:

Question Поддержка unzip (zlib)

Помогите добавить поддержку unzip (zlib) в half-life. Прочитал статью http://www.gamedev.ru/articles/?id=70122, но не могу понять где взять unzip.lib


Отправлено Дядя Миша 13-02-2012 в 15:35:

Цитата:
avegamer писал:
Помогите добавить поддержку unzip (zlib) в half-life

в Half-Life уже есть поддержка zip. Реализована при помощи bzip.
Используется для сжатия файлов, которые клиент скачивает с сервера (недостающие файлы).

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-02-2012 в 16:00:

avegamer
Раздел для темы наугад выбрал, или ты таки бот?

__________________

xaerox on Vivino


Отправлено avegamer 13-02-2012 в 16:12:

Случайно тему не в том разделе создал.
Мне нужно, чтобы все ресурсы, например спрайты или wav-файлы хранились в архивах .zip или .gz и чтобы можно было их использовать в функциях, напимер, PrecacheModel, PrecacheOther и тому подобные.


Отправлено Дядя Миша 13-02-2012 в 17:35:

Цитата:
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'


Отправлено PunkPaToB 15-02-2012 в 01:17:

Дядя Миша
Чтоб вес был не 5 мегобОйт, а 4.8

__________________
А что нет?


Отправлено Government-Man 15-02-2012 в 03:22:

PunkPaToB ага... и время загрузки увеличивалось в несколько раз.


Отправлено HAWK0044 15-02-2012 в 06:39:

Government-Man
c таким подходом оно только уменьшиться =)


Отправлено marikcool 15-02-2012 в 09:15:

avegamer юзай *.pak и будет счастье, или *.gcf но тут на лицензии не сделаешь вроже.


Отправлено fire64 15-02-2012 в 09:16:

Ну не знаю, чего там сложного.
Ладно, держите код, который я использовал при разработке VampireSDK

C++ Source Code:
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
}


C++ Source Code:
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();

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено avegamer 15-02-2012 в 13:56:

А я вот подумал, может быть создать свою версию WAD (есть наработка на tmt pascal) и хранить в нем файлы сжатые например zlib


Отправлено Дядя Миша 15-02-2012 в 14:25:

Цитата:
avegamer писал:
А я вот подумал, может быть создать свою версию WAD

зачем же создавать? Оригинальный формат вада отлично подойдет.
Там в структурке есть и переменная для типа компрессии и переменная под сжатый размер. Больше скажу - я уже делал вады, в которых лумпы были сжаты зипом. И прекрасно получалось.
Правда редакторы эти текстуры зачитать не могли, конечно же.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено avegamer 15-02-2012 в 14:58:

WAD для хранения не только текстур, но и любых других файлов как в doom или zdaemon


Отправлено Дядя Миша 15-02-2012 в 15:01:

WAD для хранения только текстур. Любые другие файлы удобнее хранить в паке. У вада даже расширения файлов не предусмотрены.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено avegamer 15-02-2012 в 15:27:

Я не имел в виду wad из doom, а свою версию, где могут храниться файлы с любыми расширениями, и можно его назвать, например, .gwad, .apk, .gpk и т.п.


Отправлено Дядя Миша 15-02-2012 в 15:34:

а зачем плодить новые форматы? по-моему их и так уже достаточно наплодили.

__________________
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 15-02-2012 в 18:52:

Цитата:
HAWK0044 писал:
c таким подходом оно только уменьшиться =)


Т.е. от того, что нам нужно будет распаковывать каждый ресурс перед загрузкой - общее время загрузки уменьшится?


Отправлено KiQ 15-02-2012 в 19:00:

Government-Man он наверно имел в виду уменьшится скорость. А вообще сколько этих архивов не придумали, я всегда распаковываю, если есть возможность. В том же чистом небе это дает небольшой, но ощутимый прирост фпс (с 25 до 30 на максимальном рендере).

__________________
-Brain is dead-


Отправлено avegamer 15-02-2012 в 19:06:

Я хотел использовать в своей версии wad распаковку в память, а не на диск.


Отправлено Дядя Миша 15-02-2012 в 19:27:

Цитата:
avegamer писал:
Я хотел использовать в своей версии wad распаковку в память, а не на диск.

да то понятно что в память. Но смысл такого вада?
Повторюсь, я уже такое делал. Разумеется кроме движка сжатые текстуры не мог прочитать ни один редактор карт и ресурсов. Какой практический смысл?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено avegamer 15-02-2012 в 19:34:

Для меня например удобней чтобы все файлы хранились в одном архиве в сжатом виде и хотелось бы как-то это использовать для сетевой игры.
Вот кстати наброски для моей версии 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
}


Отправлено Дядя Миша 15-02-2012 в 19:46:

то не хидер сайз-табле, а оффсет до 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'


Отправлено avegamer 15-02-2012 в 20:09:

Но разве проблема написать консольную програмку для упаковки/распаковки файлов в таком wad

Добавлено 16-02-2012 в 00:02:

А при упаковке я и расчитывал записывать размер данных файла в wad

Добавлено 16-02-2012 в 00:09:

Да, а в fileheader забыл добавить long int data_size;


Отправлено marikcool 15-02-2012 в 21:39:

в чем смысл? если нужны архивы и удобные патчи пакуйте pak0.pak .. pak1.pak и т.д по нарастающей, система используется во всех кваках и очень удобно.
в крайняк пилите все в один большой как в старом халфе(pak0.pak) или в новом халфе (half-life.gcf) и делайте диф патчи.

и назаметку небольшой факт, ресурсы которые в pk3/pk4 (он же zip) я в свое время специально распаковывал дабы заметно ускорить загрузку ресурсов в игре.


Отправлено Chyvachok 16-02-2012 в 06:00:

Зачем теб новый формат? .pak не достаточно? Я вообще не вижу смысла запакововать.


Отправлено HAWK0044 16-02-2012 в 06:34:

Government-Man
точнее увеличиться, проше прощения, ошибся.А скорость загрузки - уменьшиться.
Так же согласен с Чувачком.


Отправлено avegamer 16-02-2012 в 11:44:

Вот только не пойму, как все это использовать с функциями precache и, возможно, setmodel


Отправлено marikcool 16-02-2012 в 13:36:

Цитата:
avegamer писал:
Вот только не пойму, как все это использовать с функциями precache и, возможно, setmodel

если ты про пак, то также как и с распакованым вариантом.


Отправлено Дядя Миша 16-02-2012 в 14:00:

Цитата:
avegamer писал:
Вот только не пойму, как все это использовать с функциями 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