Редактирование движка |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Редактирование движка |
11.04.2009, 17:42
Сообщение
#1
|
|
Навий черны у ношьти Репутация: 377 Группа: Забанен Сообщений: 2210 Награды: 2 Регистрация: 11.03.2009 |
Интересует конкретные идеи/возможности, как декомпилить двиг игры и .dll библиотеки, с вшитыми .cpp файлами, через которые можно было бы восстановить множество отключённых фич. Например, открытие дверей в машине перед "усаживанием" за руль. Хекседикальные вьюверы - фигня. Кроме правки байтов и возможности зануливания от них проку мало, в отношении сталкера. Нашёл оч полезную утилиту и смог дизассемблить xrGame.dll нашёл в нём e"\stalker\patch_1_000*\xr_3da\xrgame\cardoors.cpp и все строки в библиотеке, но, увы, не смог сам файл вытащить из библиотеки. Полагаю, если научиться декомпилить и, собственно, компилить обратно .exe и .dll библиотеки ядра и двига игры - можно сделать прорыв в модостроении.. например вернув хотя бы возможность открывать двери/капоты/багажники в машинах И еще много чего, без необходимости издеваться в скриптах. Так же интересует - возможно ли сделать к сталкеру некий расширитель скриптового/с++ языка, как например к Обливиону OBSE?
p.s. если кого интересует утилита для декомпила - велкам в личку. -------------------- нарушение правил п. 7.2
|
 
|
|
14.03.2017, 22:54
Сообщение
#2341
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Есть ли какие-то презенташки/статьи об освещении в x-ray, кроме статьи gpu-gems и 1 презенташки по рендеру ЧН?
p.p.p.s: Как вы там потомки? - Кто-нибудь PBR делал..? |
 
|
|
|
|
15.03.2017, 00:51
Сообщение
#2342
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
p.p.p.s: Как вы там потомки? - Кто-нибудь PBR делал..? Только глоссинесс прикручивал недавно для тестов. Правда формула освещения, по которой я делал отражение света с глоссом, меня не особо устраивала, надо или править эту или уж на пбрные формулы ориентироваться. А так, для этого всего по любому надо перепиливать систему, включая все RT Ибо если уж делать, то нормально. Тема с пбром тоже заинтересовала, но нужно время на это. Сообщение отредактировал SkyLoader - 15.03.2017, 01:14 |
 
|
|
15.03.2017, 12:50
Сообщение
#2343
|
|
Продвинутый геймер Репутация: 90 Группа: Участник Сообщений: 395 Награды: 3 Регистрация: 07.04.2014 |
SkyLoader, поддерживает ли LA 16 битные анимации? Если да, то что и где ты дописывал в движке? Заранее спасибо
Сообщение отредактировал Ray - 15.03.2017, 12:51 -------------------- no more running
|
 
|
|
15.03.2017, 15:58
Сообщение
#2344
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
Ray, если ничего не сломали при разработке, то поддерживает. Занимался этим не я, пару моментов только фиксил. Там не просто из зп скопировано, а сделано как-то по своему было. Сам сдкшный экспорт анимок был правлен в editors\ECore\Editor\ExportSkeleton, а для игры: xr_3da\SkeletonMotions.
Сообщение отредактировал SkyLoader - 15.03.2017, 15:58 |
 
|
|
15.03.2017, 18:20
Сообщение
#2345
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
SkyLoader, а ты можешь объяснить, что за хрень такая новая и непонятная — motion mark's?
для чего оно реализовано и как это использовать? -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
15.03.2017, 18:32
Сообщение
#2346
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Занимался этим не я, пару моментов только фиксил. Там не просто из зп скопировано, а сделано как-то по своему было. Сам сдкшный экспорт анимок был правлен в editors\ECore\Editor\ExportSkeleton, а для игры: xr_3da\SkeletonMotions. Все никак руки не дойдут залезть и поправить. Смущает пока СДК — не хочу его собирать :/ -------------------- |
 
|
|
15.03.2017, 18:59
Сообщение
#2347
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
SkyLoader, а ты можешь объяснить, что за хрень такая новая и непонятная — motion mark's? для чего оно реализовано и как это использовать? Метки на анимациях. Используются они в разных целях. Для живности и неписей используются, чтобы в определенный момент анимации включать/выключать инверсную кинематику (когда ногу поднимает, например). В худовых анимациях ЧН/ЗП метки используются, чтобы делать определенные действия, такие как бросок гранаты/болта. В ТЧ бросок болта осуществляется по окончании анимации начала броска, а потом, собственно, происходит сам бросок с заключающей анимацией. Т.е. в ТЧ идет разделение на две анимации. В ЗП весь бросок сделан одной анимацией и попадании на метку производится вызов функции кидания болта. Правда эти метки и баги порождают в виде некидающихся болтов при низком фпс. |
 
|
|
17.03.2017, 20:00
Сообщение
#2348
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Кто-то баловался с OpenMP касательно xr?
-------------------- В армии по 01.07.2020. |
 
|
|
17.03.2017, 23:07
Сообщение
#2349
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Я конечно не имел в этом деле опыта, но мне кажется что попытка распаралелить то, что изначально проектировалось как часть единого потока, довольно проблематично без переписывания всей системы.
В сталкаче изначально даже вся скриптовая логика завязана на рендере - 1 кадр равен 1 проходу логики, которая юзает этот идентификатор кадра для своих целей. То-есть попытка разделить рендер и скрипты уже принесёт нам определённые трудности. Да и давайте честно, я на своей древней GTX460 и среднем I5 даже на DX11 имею в оригинальном ЗП под 40-60ФПС со сглаживанием. Трудности возникаю только когда в одной сцене очень много АИ, но и тут возможно достаточно просто их слегка "отупить", например делая на каждом кадре вычисления не для всех НПС, а только для их части. И так по очереди. (подобный механизм уже существует в сталкере, только он применяется не для всей логики, а скорость его работы зависит от удалённости объекта от игрока - чем дальше, тем реже обновления) Паралелить разве что под МП имеет смысл, и то там проще вычисления на несколько доверенных клиентов раскидать. -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
19.03.2017, 10:24
Сообщение
#2350
|
|
Опытный Геймер Репутация: 3 Группа: Участник Сообщений: 150 Награды: 3 Регистрация: 16.02.2014 |
Помощь нужна: как сделать массив(таблицу) произвольного размера? Типа такого:
строка = строка строка = строка строка = строка .... .... Обычные массивы С++ видимо не прокатят, надо что-то типа vector? В движке есть обертка - xr_vector, вот только не пойму как эти векторы использовать. Может кто подкинуть пример, как сделать строковый массив типа того, что я выше показал ? |
 
|
|
19.03.2017, 10:35
Сообщение
#2351
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
Обычные массивы С++ видимо не прокатят Многомерный массив может быть произвольного размера. В С# есть еще -------------------- |
 
|
|
19.03.2017, 10:59
Сообщение
#2352
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Помощь нужна: как сделать массив(таблицу) произвольного размера? Типа такого: строка = строка строка = строка строка = строка У тебя строки типа ключ-значение? Тогда тебе больше подойдет xr_map<xr_string, xr_string> table. Операции: - добавить: table[ключ] = строка - получить по ключу: xr_string s = table[ключ]; - проверить наличие: bool contains = table.find(ключ) != table.end(); - удаление: table.erase(ключ); |
 
|
|
19.03.2017, 11:16
Сообщение
#2353
|
|
Опытный Геймер Репутация: 3 Группа: Участник Сообщений: 150 Награды: 3 Регистрация: 16.02.2014 |
Многомерный массив может быть произвольного размера. Вы имеете в виду int array[10][10], или const unsigned int DIM1 = 10; const unsigned int DIM2 = 10; int ary[DIM1][DIM2]; Это не то о чем я спрашивал. Тут ведь все равно надо задать размерность, а мне надо произвольный размер массива, или правильнее сказать таблицы? У тебя строки типа ключ-значение? Тогда тебе больше подойдет xr_map Во, похоже что это то, что нужно. Спасибо! |
 
|
|
19.03.2017, 11:25
Сообщение
#2354
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Многомерный массив может быть произвольного размера. Это не то о чем я спрашивал. Тут ведь все равно надо задать размерность, а мне надо произвольный размер массива, или правильнее сказать таблицы? Можно и динамически работать. Или правильнее сказать таблицы? Это уже матрицы, скорее. Сообщение отредактировал Forser - 19.03.2017, 11:29 -------------------- В армии по 01.07.2020. |
 
|
|
19.03.2017, 12:10
Сообщение
#2355
|
|
Опытный Геймер Репутация: 3 Группа: Участник Сообщений: 150 Награды: 3 Регистрация: 16.02.2014 |
|
 
|
|
19.03.2017, 12:21
Сообщение
#2356
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
AndreySol, либо посмотри как устроен xr_map и как его используют (поиском по коду), либо попробуй использовать map из c++.
-------------------- |
 
|
|
19.03.2017, 12:56
Сообщение
#2357
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
19.03.2017, 13:24
Сообщение
#2358
|
|
Опытный Геймер Репутация: 3 Группа: Участник Сообщений: 150 Награды: 3 Регистрация: 16.02.2014 |
Я тут ситуацию не полностью описал:
xr_map<xr_string, xr_string> table; - если объявлено в хедере, то table["first"] = "second"; в коде вылетает. А если все в коде, и объявить и присвоить значения - вылета нет. Блин, зачем все так мутно наворочено ??? |
 
|
|
19.03.2017, 13:38
Сообщение
#2359
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
Я тут ситуацию не полностью описал: xr_map<xr_string, xr_string> table; - если объявлено в хедере, то table["first"] = "second"; в коде вылетает. А если все в коде, и объявить и присвоить значения - вылета нет. Блин, зачем все так мутно наворочено ??? По-прежнему не полностью |
 
|
|
19.03.2017, 13:40
Сообщение
#2360
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
1) Ты объявляешь xr_map<xr_string, xr_string> table как члена класса (внутри class), или снаружи в глобальной области видимости?
2) В хедере (заголовке) нельзя присваивать значения сложным объектам. (возможно есть исключения, но точно не так как ты пытаешься это сделать) Это не Lua. В заголовке ты только описываешь объект, а заполнять его должен внутри конструктора или любой другой функции, потому что до момента вызова конструктора объекта ещё не существует. 3) После сборки как ты запускаешь игру? По ярлыку? Нужно запускать либо через студию (Run), либо присоединять её к процессу уже после запуска игры (Attach). Тогда в момент вылета узнаешь где он случился. PS: Не припомню в движке ЗП xr_string, это ТЧ? Сообщение отредактировал Shoкer - 19.03.2017, 13:41 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
Текстовая версия | Сейчас: 16.06.2024, 08:03 |