Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!
> Вскрытие ресурсов Метро 2033
Panisher
сообщение 18.03.2010, 10:28
Сообщение #481


Почти Игрок
**

Репутация:   18  
Группа: Забанен
Сообщений: 28
Регистрация: 22.10.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


ЭкшнШутерПостапокалипсис
93 %
81/100
Разработчик: 4A Games
Дата выхода: 16 марта 2010
Здесь технический разговор между создателями ПО на тему ресурсов игры.

ПО для работы с ресурсами игры

Обсуждение ПО для работы с ресурсами

Мелкие моды и фиксы

Моддинг. Общее обсуждение

Советы и решения

Работа с bump- и normalmaps (от iOrange)
В альфе лежит бамп, а в зеленом канале (если я правильно понял) лежит Gloss-Map (регулирующая силу specular-бликов).
Если Вам нужна normal-map, то бапм легко в нее превратить:
1) Качаем плагин nVidia для фотошопа (тыц)
2) Открываем в фотошопе интересующий бамп (например act\act_bab_body_bump.512.dds)
3) Выделяем все четыре канала (RGB + Alpha)
4) Жмем Filter->NVIDIA Tools->NormalMapFilter...
5) В появившемся окне в разделе Height Source выбираем Alpha Channel
6) Ставим нужный scale (я ставлю 10)
7) Жмем OK
8) Наслаждаемся результатом





Сообщение отредактировал Deimos - 20.04.2010, 17:01


--------------------
забанen по собственному желанию
Перейти в начало страницы
 
28 страниц V  « < 23 24 25 26 27 > »   
Начать новую тему
Ответов
Prodnik
сообщение 28.11.2018, 22:50
Сообщение #482


Почти Игрок
**

Репутация:   2  
Группа: Участник
Сообщений: 17
Регистрация: 06.03.2018




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 22.11.2018, 02:21) *
Выкладываю декомпилятор конфигов. Вроде все level.bin'ы и конфиги из scripts.bin(не все) декомпилирует и компилирует. Но на работоспособность с игрой не проверял.

[attachment=4323:binunp.zip]
[attachment=4324:source.zip]

Как использовать:

декомпиляция level.bin
Код
binunp -l -d level.bin level.txt

компиляця level.bin
Код
binunp -l -c level.txt level.bin

декомпиляция отдельного конфига
Код
binunp -d имяфайла.bin имяфайла.txt

компиляция отдельного конфига
Код
binunp -c имяфайла.txt имяфайла.bin

Есть ещё ключ -k, по идее его надо указывать при компиляции если при декомпилции было написано kind = 3, вот так
Код
binunp -k 3 -c имяфайла.txt имяфайла.bin

Но это может быть и не обязательно, не проверял. Конфиги с kind = 3 это например файлы level.environment.

split.exe просто положить рядом с scripts.bin, запустить и появится папка Scripts с отдельными файлами.
Склеивателя Scripts.bin обратно не существует laugh.gif

Кстати кто-нибудь понял как работают связи блоков в скриптах? smile.gif

осталось только для ласт лайта, а так очень круто


--------------------
античеловек
Перейти в начало страницы
 
JackieR
сообщение 28.11.2018, 22:59
Сообщение #483


Ветеран
*****

Репутация:   10  
Группа: Участник
Сообщений: 99
Регистрация: 28.11.2018




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 14.11.2018, 02:56) *
Да, наверно это число не сильно важно, ну или я его угадал.


Как выяснилось формат вершин немного не такой как написано в metro2033-tools. Никакой W компоненты там нет, на её месте нормаль упакованный(следующие два значения очевидно тангент и бинормаль). Четвертой компонентой у нормаля хранится AO, так что его неплохо бы считать.

Не расскажешь как сделал? А то я уже пробовал менять оригинальные модельки местами, это скучно. Хочется чего нибудь своего добавить.


--------------------
Перейти в начало страницы
 
Modera
сообщение 29.11.2018, 04:10
Сообщение #484


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Prodnik @ 28.11.2018, 22:50) *
осталось только для ласт лайта, а так очень круто

А в ластлайте конфиги разбираемые? smile.gif Нет они конечно все разбираемые, но есть разница нежду тем чтобы написать один универсальный распаковщик или писать много-много для каждого конфига по отдельности, предварительно поковыряв движок дизассемблером.
Ии, нифига это не круто. Даже хуже чем сталкеровский ACDC. Вот если бы я какой-нибудь нормальный редактор адаптировал под 4A Engine, то это было бы круто. Бессмыслено, беспощадно, но круто.

Цитата(JackieR @ 28.11.2018, 22:59) *
Не расскажешь как сделал? А то я уже пробовал менять оригинальные модельки местами, это скучно. Хочется чего нибудь своего добавить.

Канешно расскажу. Сконвертировал модельку пальмы из OGF, а потом добавил на уровень скопировав какую-то сущность(entity) класса STATICPROP и помоняв ей модель и координаты в матрице.
Исходники конвертера моделей есть в исходниках распаковщика конфигов, но скомпиленую версию я не выкладывал. Может потом выложу.

Я тут уже немного продвинулся, теперь конвертировать можно сразу уровень в уровень, без всяких левых утилит. Вот огрызок агропрома на 4а Engine. biggrin.gif


Сообщение отредактировал Modera - 29.11.2018, 04:11
Перейти в начало страницы
 
Cartoteka
сообщение 29.11.2018, 04:17
Сообщение #485


Заслуженный Мастер Игры
*************

Репутация:   267  
Группа: Участник
Сообщений: 1524
Награды: 4
Регистрация: 10.11.2013




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 29.11.2018, 04:10) *
Вот огрызок агропрома на 4а Engine. biggrin.gif



Офигенно.

Эта котельная на каких движках только не успела побывать. На X-Ray, на Unreal, на id Tech 1, на Unity... теперь, вот, 4A Engine.


--------------------
Перейти в начало страницы
 
Modera
сообщение 29.11.2018, 04:25
Сообщение #486


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Cartoteka @ 29.11.2018, 04:17) *
Эта котельная на каких движках только не успела побывать. На X-Ray, на Unreal, на id Tech 1, на Unity... теперь, вот, 4A Engine.

Надо эту котельную признать идеальным тестовым уровнем. Чем-то вроде изображения Лены или чайника Юта.

Цитата(Cartoteka @ 22.11.2018, 06:30) *
Я слышал, что это можно сделать с трейнерами, но, может, кто-то знает более изящный способ?

Наверно с трейнерами и есть самый изящный.
Перейти в начало страницы
 
Cartoteka
сообщение 29.11.2018, 04:27
Сообщение #487


Заслуженный Мастер Игры
*************

Репутация:   267  
Группа: Участник
Сообщений: 1524
Награды: 4
Регистрация: 10.11.2013




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 29.11.2018, 04:25) *
Наверно с трейнерами и есть самый изящный.



Да мы уже сняли с Бартом тот новый ролик по Метро. Так что уже пока без надобности.


--------------------
Перейти в начало страницы
 
abramcumner
сообщение 29.11.2018, 08:56
Сообщение #488


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 29.11.2018, 04:10) *
А в ластлайте конфиги разбираемые? smile.gif Нет они конечно все разбираемые, но есть разница нежду тем чтобы написать один универсальный распаковщик или писать много-много для каждого конфига по отдельности, предварительно поковыряв движок дизассемблером.

В релизном ЛЛ разбираемые, в первом или втором апдейте разбираемость убрали. Редуксы снова разбираемые.
Перейти в начало страницы
 
Prodnik
сообщение 29.11.2018, 15:00
Сообщение #489


Почти Игрок
**

Репутация:   2  
Группа: Участник
Сообщений: 17
Регистрация: 06.03.2018




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 29.11.2018, 08:56) *
Цитата(Modera @ 29.11.2018, 04:10) *
А в ластлайте конфиги разбираемые? smile.gif Нет они конечно все разбираемые, но есть разница нежду тем чтобы написать один универсальный распаковщик или писать много-много для каждого конфига по отдельности, предварительно поковыряв движок дизассемблером.

В релизном ЛЛ разбираемые, в первом или втором апдейте разбираемость убрали. Редуксы снова разбираемые.

лучше сразу редуксы разбирать. У них с 33 и лл одинаковые движки и будет куда проще


--------------------
античеловек
Перейти в начало страницы
 
JackieR
сообщение 29.11.2018, 21:25
Сообщение #490


Ветеран
*****

Репутация:   10  
Группа: Участник
Сообщений: 99
Регистрация: 28.11.2018




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 29.11.2018, 04:10) *
Исходники конвертера моделей есть в исходниках распаковщика конфигов, но скомпиленую версию я не выкладывал. Может потом выложу.

Очень надеюсь что выложишь.

Сообщение отредактировал JackieR - 29.11.2018, 21:27


--------------------
Перейти в начало страницы
 
Modera
сообщение 01.12.2018, 05:33
Сообщение #491


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Новая версия: Прикрепленный файл  binunp2.zip ( 163,19 килобайт ) Кол-во скачиваний: 27


Теперь умеет ещё декомпилировать некоторые неразбираемые конфиги, а именно textures.bin и environments.bin
Код
binunp -s textures.bin textures.txt
binunp -s environments.bin environments.txt

Ключ -k теперь может иметь значение 4, для компиляции неразбираемых конфигов:
Код
binunp -k 4 -c textures.txt textures.bin

У меня игра такой textures.bin вроде переварила, хотя я там ничего не менял, просто декомпилировал и обратно скомпилировал.

Утилита model конвертирует модели из OGF в формат metro 2033 и обратно:
Код
model -ogf2model model.ogf model.model
model -model2ogf model.model model.ogf

OGF модель должна быть не прогрессивной(легко исправить, но я забыл), и желательно с костью, в моделях без костей нет бинормалей и тангентов.
Ещё умеет конвертировать модель в nxcform_pc:
Код
model -model2nxcform_pc model.model model.nxcform_pc

Модели в уровень, указывать можно много
Код
model -model2level model1.model model2.model .. modelN.model leveldir

Уровень движка X-Ray в уровень 4A Engine, проверял вот этой картой: http://www.mediafire.com/file/dst6a565fwx7...May_15_2001.rar
Код
model -level2level xrayleveldir leveldir


В файлах shadersbytextures.txt и materialsbytextures.txt указывается какие шейдеры и материалы назначить в модели или уровне в зависимости от текстуры.
Какие шейдеры указывать можно узнать из конфига render_subst_all, материалы из game_materials. Конфиг материалов неразборный, но можно его открыть и поискать в нём строки начинающеися с materials\.
Текстуры в content можно класть прямо в формате .dds, движок их читает.

Сообщение отредактировал Modera - 01.12.2018, 05:36
Перейти в начало страницы
 
Modera
сообщение 07.12.2018, 00:42
Сообщение #492


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 22.11.2018, 02:21) *
Кстати кто-нибудь понял как работают связи блоков в скриптах? smile.gif

Я понял. xD У каждого блока есть точки входа/выхода(так кажется это называется, не знаком с визуальных программированием).

Запись связи представляет собой [блок1, точка1, блок2, точка2].

Рассмотрим простой скрипт балалайки, у которой можно провести пальцем по струнам:
Скрипт
Код
        vss_ver_6 = begin
            count : u32 = 1;
            rec_0000 = begin
                groups : array;
                groups = begin
                    count : u32 = 0;
                end;
                blocks = begin
                    block_count : u32 = 4294967295;
                    'array with no key' : array;
                    count : u32 = 4;
                    block_0000 = begin
                        clsid : stringz = 'triggers/use';
                        posx : u16 = 105;
                        posy : u16 = 53;
                        active : bool = True;
                        entity : 'entity_link, uobject_link' = 65535;
                        initiator : 'entity_link, uobject_link' = 65535;
                        player : bool = True;
                        usage_distance : fp32 = 2;
                        use_action : choose;
                        use_action : stringz = '';
                        use_offset : vec2f = [0, -0.100000001490116];
                        blink : bool = True;
                        blink_distance : fp32 = 10;
                    end;
                    block_0001 = begin
                        clsid : stringz = 'entities/entity self';
                        posx : u16 = 207;
                        posy : u16 = 62;
                    end;
                    block_0002 = begin
                        clsid : stringz = 'actions/play sound';
                        posx : u16 = 160;
                        posy : u16 = 53;
                        sound : sound;
                        sound : stringz = 'objects\usable_items\balalayka_use';
                        volume : fp32 = 1;
                        instant : bool = True;
                        ai_sound_type : u32 = 0;
                        stop_interval : fp32 = 0.5;
                        startus_intervalus : fp32 = 0;
                        looped : bool = False;
                        enable_slowmo : bool = True;
                        enable_fx : bool = True;
                        play_as_music : bool = False;
                    end;
                    block_0003 = begin
                        clsid : stringz = 'entities/entity ref';
                        posx : u16 = 162;
                        posy : u16 = 102;
                        target : 'entity_link, uobject_link' = 47361;
                    end;
                end;
                link_count : u32 = 5;
                0 : vec4s16 = [0, 0, 2, 0];
                1 : vec4s16 = [0, 0, 0, 1];
                2 : vec4s16 = [0, 2, 3, 0];
                3 : vec4s16 = [2, 0, 1, 0];
                4 : vec4s16 = [2, 2, 0, 0];
            end;
        end;


Как у любой программы, у этой есть точка входа. Ей является триггер на использование, блок0.
Первая связь: блок0, точка0, блок2, точка0. Точка0 у триггера срабатывает при использовании и выполняет блок2. Блок2 это проигрывание звука.
Вторая связь: блок0, точка0, блок0, точка1. Точка1 при входе в неё выключает триггер(параметр active), если убрать то по балалайке можно будет колотить без пауз.
Третья связь: блок0, точка2, блок3, точка0. Эта свзять указывает какой объект нужно поюзать, чтобы сработал триггер. Можно указать блок1(сама балалайка), но тут почему-то указан какой-то левый объект из блока3.
Четвёртая связь: блок2, точка0, блок1, точка0. Это свзять указывает из какого объекта нужно проиграть звук для блока2.
Пятая связь: блок2, точка2, блок0, точка0. Эта связь включает обрано триггер. Очевидно точка2 у блока проигрывания звука срабатывает по окончании звука. Ещё очевидно что точки имеют разное назначение на вход и на выход.

Весьма сложно. Страшно представить как этот язык игрой интерпретируется.

Сообщение отредактировал Modera - 07.12.2018, 00:42
Перейти в начало страницы
 
Diesel
сообщение 07.12.2018, 00:46
Сообщение #493


Почти Мастер
***********

Репутация:   111  
Группа: Участник
Сообщений: 1158
Награды: 3
Регистрация: 07.08.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Ребята, я открыл все локации, но скажу честно, я шокирован этим контентом - его много, но он убог. Там столько надо сшивать вертекстов, иначе кругом зияют дыры. В движке их-рей эти щели ого-го как светятся. Там даже верлд не спасает.

Сообщение отредактировал Дизель - 07.12.2018, 00:46
Перейти в начало страницы
 
abramcumner
сообщение 07.12.2018, 01:22
Сообщение #494


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 07.12.2018, 00:42) *
Весьма сложно. Страшно представить как этот язык игрой интерпретируется.

Почему? Обычные сигнал/слоты или обычные события и подписка на них.

Раньше в движке названия точек лежали, думаю и сейчас тоже.
Перейти в начало страницы
 
Modera
сообщение 08.12.2018, 20:21
Сообщение #495


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(abramcumner @ 07.12.2018, 01:22) *
Почему? Обычные сигнал/слоты или обычные события и подписка на них.

Хм, ну если о блоках думать как о объектах обменивающихся друг с другом сообщениями то да, уже не так сложно, как мне раньше показалось. А интерпретатора наверное вообще нет, вместо него какой-нибудь обновлятор блоков(шедулер), т.к. язык оказывается многопоточный. Например с такой программой:

Будут проигрыватся два разных звука с разной частотой повторения. Стрелки из триггера не передают управление другим блокам, они их активируют. Напоминает описание smalltalk'а, про то что каждый объект как отдельный компьютер. smile.gif

4A всё-таки крутой движок. smile.gif
Перейти в начало страницы
 
abramcumner
сообщение 08.12.2018, 22:12
Сообщение #496


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 08.12.2018, 20:21) *
вместо него какой-нибудь обновлятор блоков(шедулер),

Ну да, можно на каждом фрейме опрашивать активные блоки. На самом деле схеме нужно обновлять максимум logic/delay, триггер и проигрыватель работают чисто по сигналам.
Ну и многопоточность для схемы выше вообще не нужна, проигрыватель отправил звук на воспроизведение и свободен, можно опрашивать следующие блоки.
Перейти в начало страницы
 
JackieR
сообщение 12.12.2018, 00:09
Сообщение #497


Ветеран
*****

Репутация:   10  
Группа: Участник
Сообщений: 99
Регистрация: 28.11.2018




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Modera @ 22.11.2018, 02:21) *
Выкладываю декомпилятор конфигов. Вроде все level.bin'ы и конфиги из scripts.bin(не все) декомпилирует и компилирует. Но на работоспособность с игрой не проверял.

Работает. Занятно, для некоторых людей и мутантов нужно прописывать ещё и анимации. Иначе они будут спавниться в Т-позах либо просто стоять на месте.

Спойлер







--------------------
Перейти в начало страницы
 
atanda
сообщение 02.01.2019, 22:07
Сообщение #498
Pro gamer

Почти Игроман
*********

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


При попытке сконвертировать любую модельку:
Перейти в начало страницы
 
Modera
сообщение 02.01.2019, 22:19
Сообщение #499


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


buffy, а можешь файл модельки выложить?
Перейти в начало страницы
 
atanda
сообщение 02.01.2019, 22:31
Сообщение #500
Pro gamer

Почти Игроман
*********

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




Вставить ник Цитировать выделенное в форуму быстрого ответа


Modera, модель статическая, с динамическими у меня пишет "Must be hierarchy" и конвертация прерывается
https://yadi.sk/d/7WSKtWc7-chSxw

К слову говоря, как быть с моделями, которые разбиты на *.model *.mesh *.skeleton?
Перейти в начало страницы
 
Modera
сообщение 02.01.2019, 22:58
Сообщение #501


.
**********************

Репутация:   750  
Группа: Участник
Сообщений: 7072
Награды: 4
Регистрация: 30.07.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


buffy, исправил одну багу. Скачать исправленную версию можно тут: https://drive.google.com/drive/folders/1y-u...zBLEBVqxhnfsrQx

Цитата(buffy @ 02.01.2019, 22:31) *
К слову говоря, как быть с моделями, которые разбиты на *.model *.mesh *.skeleton?

Использовать плагины для 3д пакетов или OGFViewer. Со скелетными моделями эта программа не работает.
Да и вообще я конвертирование моделек в формат сталкера делал только чтобы понять как нормали пакуются, основной посыл был наоборот в конвертировании в формат метро.

Сообщение отредактировал Modera - 02.01.2019, 23:08
Перейти в начало страницы
 

28 страниц V  « < 23 24 25 26 27 > » 
Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.03.2024, 23:47