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

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

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт 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 библиотеки ядра и двига игры - можно сделать прорыв в модостроении.. например вернув хотя бы возможность открывать двери/капоты/багажники в машинах smile.gif И еще много чего, без необходимости издеваться в скриптах. Так же интересует - возможно ли сделать к сталкеру некий расширитель скриптового/с++ языка, как например к Обливиону OBSE?

p.s. если кого интересует утилита для декомпила - велкам в личку.


--------------------
нарушение правил п. 7.2
Перейти в начало страницы
 
242 страниц V  « < 120 121 122 123 124 > »   
Начать новую тему
Ответов (2420 - 2439)
GermanAizek
сообщение 18.04.2017, 15:31
Сообщение #2421


Игрок
***

Репутация:   0  
Группа: Участник
Сообщений: 36
Награды: 1
Регистрация: 10.01.2017




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


У меня жестокий вопрос, при компиляции заметил в логе сборки всякие сообщения типа Dima to Oleg: How are you?, я не понял. Это чтоль разработчики общались с друг другом через консоль сборки студии biggrin1.gif
Перейти в начало страницы
 
NanoBot-AMK
сообщение 18.04.2017, 15:55
Сообщение #2422


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

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




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


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


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
-StalkMen-
сообщение 18.04.2017, 18:12
Сообщение #2423


Продвинутый геймер
********

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




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


Кто найдёт и объяснит отличие?

Код
    IC bool negative(const float f)        { return f<0;    }
    IC bool positive(const float f)        { return f>=0;    }
    IC void set_negative(float &f)        { f = -fabsf(f); }
    IC void set_positive(float &f)        { f = fabsf(f);    }

Код
    IC BOOL negative(const float &f)    { return (*((unsigned*)(&f))&fdSGN);    }
    IC BOOL positive(const float &f)    { return (*((unsigned*)(&f))&fdSGN)==0;    }
    IC void set_negative(float &f)        { (*(unsigned*)(&f)) |= fdSGN;            }
    IC void set_positive(float &f)        { (*(unsigned*)(&f)) &= ~fdSGN;            }


* Это отличие влияет на работу функции pvCompress
Перейти в начало страницы
 
NanoBot-AMK
сообщение 18.04.2017, 19:08
Сообщение #2424


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

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




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


-StalkMen-, оптимизация такая, как я понял. В первом случае код в FPU компилируется, а во втором, чисто CPU используется, в результате выполняется быстрей.

Сообщение отредактировал NanoBot-AMK - 18.04.2017, 19:13


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
-StalkMen-
сообщение 18.04.2017, 22:57
Сообщение #2425


Продвинутый геймер
********

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




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


NanoBot-AMK,
Быстрей-медленней, но результат разный.
Перейти в начало страницы
 
NanoBot-AMK
сообщение 18.04.2017, 23:47
Сообщение #2426


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

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




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


Результат немного разный, т.к. bool и BOOL это разные вещи, bool это одно байтовое boolean, а BOOL это 4-х байтовое boolean. Но работают одинаково.
IC bool negative(const float f) { return f<0; } вернуть true если f меньше нуля, или флаг знака = 1.
IC bool positive(const float f) { return f>=0; } вернуть true если f больше или равно нулю, или флаг знака = 0.
IC void set_negative(float &f) { f = -fabsf(f); } установить f в минус, флаг знака присвоить 1.
IC void set_positive(float &f) { f = fabsf(f); } установить f в плюс, флаг знака присвоить 0.
Остальной код делает аналогично посредством простых и быстрых CPU команд.
Это и есть оптимизация, используем именно те команды, которые наиболее быстрые. Я возился с ассемблером, так что знаю. Такое выгодно делать если эти функции вызываются очень часто, если редко, то особой выходы и нет то.
И ещё, IC это inline.
ЗЫ
fdSGN = 0x80000000; это и есть флаг знака, я сам так делаю т.к. очень не люблю FPU команды, использую SSE.

Сообщение отредактировал NanoBot-AMK - 18.04.2017, 23:51


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
Молния в вакууме
сообщение 19.04.2017, 00:07
Сообщение #2427


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

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




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


Я тут заглянул в _bitwise.h

NanoBot-AMK, раз уж так разбираешься, скажи, неужели это действительно может быть быстрее fld, fistp? ohmy.gif
Код
ICF int iFloor (float x)
{
    int a            = *(const int*)(&x);
    int exponent    = (127 + 31) - ((a >> 23) & 0xFF);
    int r            = (((u32)(a) << 8) | (1U << 31)) >> exponent;
    exponent        += 31-127;
    {
        int imask    =    (!(((( (1<<(exponent)))-1)>>8)&a));
        exponent    -=    (31-127)+32;
        exponent    >>=    31;
        a            >>=    31;
        r            -=    (imask&a);
        r            &=    exponent;
        r            ^=    a;
    }
    return r;
}
Перейти в начало страницы
 
-StalkMen-
сообщение 19.04.2017, 00:25
Сообщение #2428


Продвинутый геймер
********

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




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


NanoBot-AMK,
Да вопрос то в другом
С одним работает нормально, а с другим нет - как так?

А конкретно xrAI x64 косипорит сетку, виноват точно этот код, но я не могу понять почему, ведь на первый взгляд оба варианта делают одно и то же.
Пример
Перейти в начало страницы
 
NanoBot-AMK
сообщение 19.04.2017, 00:54
Сообщение #2429


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

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




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


saas, тестировать надо, по моему там много команд, которые вряд ли быстрей SSE, но возможно быстрей FPU на некоторых процессорах.
И ещё, как я уже говорил, что не люблю использовать FPU команды в ассемблере, они слабо логичны и не удобны. И ещё производители процессоров по моему на FPU блоки забили много лет назад, если хотите быстрый код, то он должен использовать SSE на полную мощность, вплоть до того что синус не fsin считает, а довольно сложный код на SSE, ну и квадратный корень раза в три быстрей на SSE чем на FPU.
Я бы ещё чёртов вектор(#define vector xr_vector) переписал, что за тупая структура.
Указатель на массив.
Указатель на последний элемент.
Указатель на конец массива.
Какой идиот это делал. Логично.
Указатель на массив.
Размер объекта.
Количество объектов.
Методы вектора становятся проще реализовать, и код ассме будет быстрей, так же с такой структурой проще на ассме использовать.

-StalkMen-, а у тебя процессор АМД64? Не пойму, какой код тупит.

Сообщение отредактировал NanoBot-AMK - 19.04.2017, 01:12


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
NanoBot-AMK
сообщение 19.04.2017, 01:03
Сообщение #2430


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

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




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


Цитата(NanoBot-AMK @ 18.04.2017, 23:50) *
fdSGN = 0x80000000; это и есть флаг знака, я сам так делаю т.к. очень не люблю FPU команды, использую SSE.

fdSGN = 0x08000000; // ошибся


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
-StalkMen-
сообщение 19.04.2017, 01:36
Сообщение #2431


Продвинутый геймер
********

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




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


NanoBot-AMK,
Да, я под x64 собирал.
Код
    IC bool negative(const float f)        { return f<0;    }
    IC bool positive(const float f)        { return f>=0;    }
    IC void set_negative(float &f)        { f = -fabsf(f); }
    IC void set_positive(float &f)        { f = fabsf(f);    }
Перейти в начало страницы
 
NanoBot-AMK
сообщение 19.04.2017, 01:50
Сообщение #2432


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

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




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


-StalkMen-, может fabsf тупит, а ты попробуй второй вариант, по моему он и на AMD быстрей.


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
abramcumner
сообщение 19.04.2017, 11:24
Сообщение #2433


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

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




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


-StalkMen-, собственно NanoBot-AMK прав, код с тасовкой битов должен работать и под х64.

А точно дело в нем? Для каких значений тогда криво работает и что выдает?
Залогировал бы для х86 и х64 в отдельный файл:
<вектор>, <компоненты вектора, обработанные сомнительными функциями>, <результат pvCompress>
Сравнить с х86 и увидеть на каких значениях глючит.
Перейти в начало страницы
 
GermanAizek
сообщение 19.04.2017, 22:45
Сообщение #2434


Игрок
***

Репутация:   0  
Группа: Участник
Сообщений: 36
Награды: 1
Регистрация: 10.01.2017




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


Есть ли тут люди занимающиеся модификацией мультиплеера сталкира? Расскажите основную проблему реализации выполнения скриптов из одиночки в многопользовательской.
Перейти в начало страницы
 
macron
сообщение 19.04.2017, 23:36
Сообщение #2435


Игровой Бог
**********************

Репутация:   1690  
Группа: Участник
Сообщений: 7021
Награды: 11
Регистрация: 22.02.2006




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


Цитата(GermanAizek @ 19.04.2017, 22:49) *
Расскажите основную проблему реализации выполнения скриптов из одиночки в многопользовательской.

1. Для ТЧ сначала надо было в движке (через Cut Xray или Xray Extensions) пару байт изменить.
2. Есть такая фигня, как выделенный (запускаемый из консоли) сервер, коих большинство. И вроде в сочетании с таким сервером скрипты (у клиентов) совсем не работают (или работают не совсем).
3. https://www.youtube.com/watch?v=wg77OW18jjk

Сообщение отредактировал macron - 19.04.2017, 23:39
Перейти в начало страницы
 
GermanAizek
сообщение 20.04.2017, 09:10
Сообщение #2436


Игрок
***

Репутация:   0  
Группа: Участник
Сообщений: 36
Награды: 1
Регистрация: 10.01.2017




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


Цитата(macron @ 19.04.2017, 23:39) *
Цитата(GermanAizek @ 19.04.2017, 22:49) *
Расскажите основную проблему реализации выполнения скриптов из одиночки в многопользовательской.

1. Для ТЧ сначала надо было в движке (через Cut Xray или Xray Extensions) пару байт изменить.
2. Есть такая фигня, как выделенный (запускаемый из консоли) сервер, коих большинство. И вроде в сочетании с таким сервером скрипты (у клиентов) совсем не работают (или работают не совсем).
3. https://www.youtube.com/watch?v=wg77OW18jjk

Таки да я заметил что в выделенном у нпс пропадает даже анимация и любые скрипты, даже двери не реагируют. И что никто не занимался этим?
Перейти в начало страницы
 
drksnc
сообщение 20.04.2017, 11:49
Сообщение #2437


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

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




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


Цитата(GermanAizek @ 20.04.2017, 09:13) *
Таки да я заметил что в выделенном у нпс пропадает даже анимация и любые скрипты, даже двери не реагируют. И что никто не занимался этим?

Ты добавил неписей в мультиплеер? И синхронизацию написал?


--------------------
Перейти в начало страницы
 
-StalkMen-
сообщение 20.04.2017, 12:40
Сообщение #2438


Продвинутый геймер
********

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




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


Цитата(GermanAizek @ 19.04.2017, 22:49) *
Есть ли тут люди занимающиеся модификацией мультиплеера сталкира? Расскажите основную проблему реализации выполнения скриптов из одиночки в многопользовательской.

1) Включить bind
2) Выпилить n проверок IsSinglePlayer
3) На выделенном серваке включить скрипты
Перейти в начало страницы
 
GermanAizek
сообщение 20.04.2017, 22:00
Сообщение #2439


Игрок
***

Репутация:   0  
Группа: Участник
Сообщений: 36
Награды: 1
Регистрация: 10.01.2017




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


Цитата(-StalkMen- @ 20.04.2017, 12:43) *
Цитата(GermanAizek @ 19.04.2017, 22:49) *
Есть ли тут люди занимающиеся модификацией мультиплеера сталкира? Расскажите основную проблему реализации выполнения скриптов из одиночки в многопользовательской.

1) Включить bind
2) Выпилить n проверок IsSinglePlayer
3) На выделенном серваке включить скрипты

1. бинд этож команда в консоли
2. Серьезно есть такая проверка IsSinglePlayer???
3. Так они выключены, вроде как у движка не прописано чтобы они работали с клиентами на сервере.
Перейти в начало страницы
 
macron
сообщение 20.04.2017, 22:59
Сообщение #2440


Игровой Бог
**********************

Репутация:   1690  
Группа: Участник
Сообщений: 7021
Награды: 11
Регистрация: 22.02.2006




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


Цитата(GermanAizek @ 20.04.2017, 22:03) *
1. бинд этож команда в консоли

Здесь, очевидно, имеется ввиду скриптовый биндинг. Конкретно для 1.0006 после правки движка в инструкциях было cказано:
Цитата
в config\mp\mp_actor.ltx в секцию [mp_actor] надо добавить строчку: script_binding = bind_stalker.actor_init
Перейти в начало страницы
 

242 страниц V  « < 120 121 122 123 124 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 10.06.2024, 21:12