Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вскрытие ресурсов Метро 2033
GAMEINATOR forums > Общие разделы > Создание и модификация игр. Геймдев.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
[SОC]
Кстати, surfer, твоя утилита не всегда работает правильно. Некоторые текстуры конвертит по всем правилам, а некоторые жутко портит... Проверял на многих (пример - голова Сухого). Не знаю, с чем это связано... Допилишь?
P.S. Никто не разрабатывал плагины для майи\макса метровских форматов?
surfer
Цитата(ОСК @ 26.03.2010, 13:57) *
Некоторые текстуры конвертит по всем правилам, а некоторые жутко портит... Проверял на многих (пример - голова Сухого). Не знаю, с чем это связано... Допилишь?

Ок, мне нужны названия этих шкурок.
Цитата(ОСК @ 26.03.2010, 13:57) *
Никто не разрабатывал плагины для майи\макса метровских форматов?

Нужен инсайдер, для разбора формата меша.
[SОC]
surfer,
Цитата
Ок, мне нужны названия этих шкурок.

Список получается довольно-таки внушительный. Собственно, у меня не получилось нормально сконвертить ни одной текстуры из папки ui. Из папки wpn и act некоторые нормально, а некоторые - криво... С остальными папками я пока не сильно работал, но по рандомным текстурам, взятым из них - могу с уверенностью сказать, что такое - везде... Да, еще - "плохое" конвертирование не зависит от разрешения текстуры. Допустим, act_xan_body конвертер нормально кушает во всех вариациях (512, 1024, 2048). Что еще можно добавить... Не все файлы "портятся" одинаково. Вот смотри примеры:
wpn_ak_74



act_suhoy_head



Тоесть рожа Сухого вроде и убитая, но в тоже время она есть!
Цитата
Нужен инсайдер, для разбора формата меша.

Ты такими знаниями, как я понял, не обладаешь?
surfer
У меня все текстуры конвертируются корректно.

Рожа Сухого и калаш


.db.
А можно скопировать данную текстуру АК и заменить ею ту, которая стоит по умолчанию у "юзабельного" АК?
Veresk
нет, у этих автоматов (на удивление) разные развёртки
[SОC]
surfer, довольно-таки странно... А нет соображений, почему у меня все так... не хорошо?
surfer
Понятия не имею. Попробуй открыть .dds другим редактором.
VEN0M
Цитата
У меня все текстуры конвертируются корректно.

и у меня smile.gif
HikeR
Цитата(surfer @ 26.03.2010, 07:32) *
Сделал специальный конвертер для этого ))))
...
Исходный код в архиве.

не совсем понял такой момент. вот какие встречаются текстуры
размер - расширение - тип
Код
174776     512     DXT1+mipmap
349552     512     DXT5+mipmap
524288     1024    DXT1
1048576    1024    DXT5
2097152    2048    DXT1
4194304    2048    DXT5

вероятно чтобы не делать одну гигантскую текстуру с кучей мип-уровней разрабы таким образом экономят видеопамять юзеров на средних и низких настройках.

однако я это к тому, что файлы .512 пишутся без учета мип-уровней, получается вот такая каша (слева - после утилиты, справа - пофиксенная текстура), еще формат сжатия неверен для этог размера.
surfer
Цитата(HikeR @ 26.03.2010, 20:42) *
вот какие встречаются текстуры
размер - расширение - тип
Код
174776     512     DXT1+mipmap
349552     512     DXT5+mipmap
524288     1024    DXT1
1048576    1024    DXT5
2097152    2048    DXT1
4194304    2048    DXT5

файлы .512 пишутся без учета мип-уровней

Ок, пофиксил. По ходу еще обнаружил, что заголовок не правильно обрезался, в результате чего к файлу прибавлялость 128 байт вместо того чтобы отниматься вместе с заголовком.

Исправленная версия: http://narod.ru/disk/19139649000/magicdds.rar.html
VEN0M
пробовал сделать upk архив но выдаёт вот такое
Nekt
ну так русское он и не понял... Там инпунт по крякозябры.. laugh.gif
BAC9-FLCL
wall_turnstena.1024 сжата по горизонтали вдвое (судя по пропорциям, там должно быть 2048х1024) - это факап конвертера или текстура действительно такая, для любителей тонких извращений с маппингом? smile.gif
VEN0M
Цитата
ну так русское он и не понял... Там инпунт по крякозябры.. laugh.gif

без разницы есть русские буквы или нет я и из папки с игрой пробовал вместо этих "крякозябр" писалось F:\metro а остальное всё также
Цитата
wall_turnstena.1024 сжата по горизонтали вдвое (судя по пропорциям, там должно быть 2048х1024) - это факап конвертера или текстура действительно такая, для любителей тонких извращений с маппингом? smile.gif

походу
HikeR
Цитата(VEN0M @ 27.03.2010, 22:10) *
F:\metro а остальное всё также

пробелы в пути убери.
VEN0M
Цитата
пробелы в пути убери.

)) спасибо помогло smile.gif
Цитата
- Мод "Скажи нет рекламе книг!"

можешь вычёркивать smile.gif

Ссылка
Rezzoxe
Товарищи, как закончите все мучения над распаковщиком, и если он будет
полностью консольный, кричите сделаю GUI rolleyes.gif

Пример можно посмотреть тут
surfer
2BAC9-FLCL, я пробовал менять значения ширины и высоты в заголовке файла - безрезультатно, все тот же квадрат.
2HikeR,
Недопиленный запаковщик .upk

Код
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "crc32.h"

typedef struct
{
    DWORD    csig;
    DWORD    clen;
    DWORD    crc;
    DWORD    off;
    DWORD    flen;
    DWORD    cflen;
    DWORD    strlen;
    CHAR    string[1];
}
CHUNK_HEADER;

typedef struct
{
    HANDLE file;
    HANDLE memory;
    LPCVOID pdata;
    SIZE_T len;
}
MEMORY_FILE;

static MEMORY_FILE* open_memory_file( const char* name )
{
    MEMORY_FILE* handle;
    LARGE_INTEGER length;
    BOOL result;

    handle = malloc( sizeof( MEMORY_FILE ) );

    handle->file = CreateFileA(name, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (handle->file == INVALID_HANDLE_VALUE)
        return 0;

    result = GetFileSizeEx(handle->file, &length);
    assert(result != FALSE);
    if (result == FALSE)
        return 0;

    handle->memory = CreateFileMapping(handle->file, NULL, PAGE_READONLY, length.HighPart, length.LowPart, NULL);
    assert(handle->memory != NULL);
    if (handle->memory == NULL)
        return 0;

    handle->len = (size_t)length.QuadPart;

    handle->pdata = MapViewOfFile(handle->memory, FILE_MAP_READ, 0, 0, handle->len);
    assert(handle->pdata != NULL);

    return handle;
}

static void close_memory_file( MEMORY_FILE* handle )
{
    assert( handle != NULL );

    UnmapViewOfFile(handle->pdata);

    CloseHandle(handle->memory);

    CloseHandle(handle->file);

    free( handle );
}

static void pack(HANDLE file, const char *path, const unsigned char *p, unsigned len)
{
    CHUNK_HEADER* header;
    unsigned size, slen;
    DWORD out, fptr;
    int i;

    slen = strlen( path ) + 1;
    size = 28 + slen + len;

    fptr = SetFilePointer( file, 0, 0, FILE_CURRENT );

    header = malloc( size );

    header->csig = 1;
    header->clen = size;
    header->crc = crc32( p, len );
    header->off = fptr + 28 + slen;
    header->flen = len;
    header->cflen = len;
    header->strlen = slen;
    for( i = 0; i < slen; i++ )
        header->string[i] = (path[i] & 0xFF) ^ header->crc;

    WriteFile( file, header, size, &out, NULL );
    WriteFile( file, p, len, &out, NULL );


}

int __cdecl main(int argc, char *argv[])
{
    HANDLE find, target;
    MEMORY_FILE* source;
    WIN32_FIND_DATA data;
    BOOL result;
    char path[255], fname[255];
    const char *filename;

    if( argc < 2 )
        return -1;

    sprintf( path, "%s\\*.*", argv[1] );

    find = FindFirstFileA( path, &data );
    assert( find != INVALID_HANDLE_VALUE );
    if( find == INVALID_HANDLE_VALUE )
        return -1;

    result = find ? TRUE : FALSE;

    if( result == TRUE )
    {
        target = CreateFileA( argv[2], GENERIC_WRITE, FILE_SHARE_READ, NULL,
                CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
        if( target == 0 )
        return -1;
    }

    while( result )
    {
        while( (strcmp( data.cFileName, "." ) == 0) || (strcmp( data.cFileName, ".." ) == 0) )
        {
            result = FindNextFile( find, &data );
            if( result == FALSE )
                return 0;
        }

        sprintf( path, "%s\\%s", argv[1], data.cFileName );
        sprintf( fname, "content\\%s", data.cFileName );
        source = open_memory_file( path );
        pack( target, fname, source->pdata, source->len );
        close_memory_file( source );

        result = FindNextFile( find, &data );
    }

    FindClose( find );

    CloseHandle( target );

    return 0;
}


Не работает. Я так понимаю в этом файле заголовки блоков записываются подряд, отдельно от блоков данных, а следом за ними в той же последовательности сами блоки (содержимое файлов) то есть котлеты отдельно мухи отдельно?

Кто-нибудь пробовал расковырять формат модели или меша? Все что оттуда нужно - это содержимое индексного и вертексного буффера, и структура вертекса. Вертекс - структура, которая может объединять набор след. данных: http://msdn.microsoft.com/en-us/library/bb172559(VS.85).aspx более подробная инфа: http://netlib.narod.ru/library/book0032/ch02_01.htm
Если удастся, то можно будет написать конвертер в какой-нить открытый формат, типа collada
BAC9-FLCL
Еще странная текстура - window_window_3.512.



Понятно, что тут должен быть формат 1:2, а не 1:1, но проблема не столько в этом - текстура как будто размыта, и в ней очень много цветовых артефактов. Она в таком состоянии и была, или это ошибка при конвертации в ддс?
Dr.Cox
Можно ли как-то вытащить из игры все саунтреки так скажем?
Все,надыбал при помощи распаковщика звуков,тот,что в шапке.Спасибо за него)
surfer
BAC9-FLCL, тулза всего лишь добавляет к данным об изображении заголовок, чтобы файл мог открыться в редакторе, а потом этот заголовок отрезается обратно, то есть с самим изображением никаких манипуляций не производится.

Я могу вынести настройку значений заголовка в конфиг, если в этом есть необходимость. Описание формата заголовка и устанавливаемых значений:
http://msdn.microsoft.com/en-us/library/bb943982(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb943984(VS.85).aspx
scynet
Жжёте, товарищи smile.gif
.db.
А вы дайте SDK и будем жечь еще сильнее biggrin.gif
VEN0M
Цитата
Она в таком состоянии и была

в таком и была
Цитата
Жжёте, товарищи smile.gif

Цитата
А вы дайте SDK и будем жечь еще сильнее biggrin.gif

вообще всё испепелим smile.gif
Salasar
Цитата(VEN0M @ 28.03.2010, 05:28) *
Цитата
- Мод "Скажи нет рекламе книг!"



bravo7kg.gif z_lol1.gif Браво!
VEN0M
Цитата
bravo7kg.gif z_lol1.gif Браво!

спасибо smile.gif
Скиф
VEN0M, практически мод-почин biggrin.gif Такого эротического подтекста)) Правда, книги так и остались.. Но если уже и их менять на какой-нибудь Плэйбой... Думаю, ни к чему biggrin.gif
VEN0M
Цитата
VEN0M, практически мод-почин biggrin.gif Такого эротического подтекста)) Правда, книги так и остались.. Но если уже и их менять на какой-нибудь Плэйбой... Думаю, ни к чему biggrin.gif

o_O.gif как это книги остались? друган тестил всё изменилось вот скрин токо это с версии где бамп текстуры не были правлены
http://file.qip.ru/file/124057885/ac651c53..._04-16-25-.html
Deimos
VEN0M,
Обложки книг нужно заменить на обложки DVD. Ну ты понял каких фильмов. smile.gif

А фотку надо грязнее сделать. Постап. smile.gif

Думаю, ДГ оценит. smile.gif
surfer
Цитата(scynet @ 28.03.2010, 14:23) *
Жжёте, товарищи smile.gif

Подкинь идейку по десериализации меша biggrin.gif
shnaket
Или как открыть scripts.bin rolleyes.gif
VEN0M
Цитата
VEN0M,Обложки книг нужно заменить на обложки DVD. Ну ты понял каких фильмов. smile.gif

заменил на обложки мультфильмов Смешарики, Покимоны, Вини Пух biggrin.gif
Ссылка
так как оба тестера сейчас в оффе делал наугад запуститься иль нет smile.gif
если кому не лень потестите wink.gif
Цитата
А фотку надо грязнее сделать. Постап. smile.gif

будем считать то они берегли его всеми силами smile.gif
Цитата
Думаю, ДГ оценит. smile.gif

у него слюньки потекут, впрочем как у многих smile.gif
Цитата
Мод "Скажи нет рекламе книг!" от VENOM

исправь пожалуйста мой ник он пишется через нолик smile.gif
MetroStalk
Цитата(Deimos @ 28.03.2010, 21:24) *
Думаю, ДГ оценит.
Что Аня скажет!? Веня ты авторские права приобрёл? laugh.gif
Deimos
Цитата(MetroStalk @ 28.03.2010, 21:26) *
Что Аня скажет!? Веня ты авторские права приобрёл? laugh.gif

Думаешь, она от рекламы откажется? smile.gif
VEN0M
Цитата
Что Аня скажет!? Веня ты авторские права приобрёл? laugh.gif

не smile.gif
kutuzvden
Выложите, плз, звук дыхания Артема(не в противогазе)- очень надо для клипа.
Deimos
Цитата(kutuzvden @ 28.03.2010, 22:41) *
Выложите, плз, звук дыхания Артема(не в противогазе)- очень надо для клипа.

распакуй sounds.vfs0 (смотри шапку) и ищи. Может название будет соответствующее.
Rezzoxe
Всё нормально тестер на месте и оттестировал по полной wink.gif
Кстати не забываем снести старый файлик smile.gif



Надеюсь меня не забанят за данные скрины crazy.gif

VEN0M
Цитата
Всё нормально тестер на месте и оттестировал по полной wink.gif

блудный сын вернулся)
Цитата
Надеюсь меня не забанят за данные скрины crazy.gif

дал бы мне хоть звёздочки нарисовать biggrin.gif
Джон Смитт
Теперь даже в метро тема сисек раскрыта на полную laugh.gif
+1 за старание бразе wink.gif
VEN0M
Цитата
Теперь даже в метро тема сисек раскрыта на полную laugh.gif
+1 за старание бразе wink.gif

спасибо братишка smile.gif
shnaket
Слухайте, а для модов на метро новую игру начинать надо?
VEN0M
для этого нет smile.gif
Deimos
Флудилку прикрыть. Veresk, ты доиграешься...
surfer
Я расковырял формат модели .model, я - инсайдер biggrin.gif
Он довольно прост, содержит название материала, вертексный и индексный буферы. 96-й байт от начала содержит четырехбайтовое целое, указывающее длину строки, далее сама строка с именем материала, после нее какое-то четырехбайтовое поле, а после 4 байта - содержащие размер вертексного буффера, далее 4 байта - число полигонов.
Формат вертекса:
Код
struct vertex
{
  float x, y, z;
  DWORD a, b;
  float nx, ny, nz;
};

Следом за вертексным идет индексный буфер: первые 4 байта - какая-то цифра, далее 4 байта - размер буфера в байтах, далее 4 байта - число индексов далее индексы типа _int16 или unsigned short, или целое размером в два байта
VEN0M
Цитата
Я расковырял формат модели .model, я - инсайдер biggrin.gif

молодец smile.gif
Цитата
Он довольно прост...

всё что дальше вынесло мне моцг blink.gif
Deimos
Нужен скрипт для 3D Max.
surfer
Цитата(Deimos @ 29.03.2010, 23:01) *
Нужен скрипт для 3D Max.

Из-за неполноты картины можно только выдрать модель в 3DS, а из 3DS в формат метра нельзя пока.

Сейчас попробую конвертнуть в формат огра.
Deimos
Цитата(surfer @ 29.03.2010, 22:28) *
Из-за неполноты картины можно только выдрать модель в 3DS

Думаю, сначала с этим надо разобраться получше. Скелет прицепить, текстуры.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.