Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
ForserX
isobolevskiy, три конкретных.
Возможно, стоит ещё сюда зайти:
Код
static void contactGetInfo1 (dxJointContact *j, dxJoint::Info1 *info)
{
  // make sure mu's >= 0, then calculate number of constraint rows and number
  // of unbounded rows.
  int m = 1, nub=0;
  if (j->contact.surface.mu < 0) j->contact.surface.mu = 0;
  if (j->contact.surface.mode & dContactMu2) {
    if (j->contact.surface.mu > 0) m++;
    if (j->contact.surface.mu2 < 0) j->contact.surface.mu2 = 0;
    if (j->contact.surface.mu2 > 0) m++;
    if (j->contact.surface.mu  == dInfinity) nub ++;
    if (j->contact.surface.mu2 == dInfinity) nub ++;
  }
  else {
    if (j->contact.surface.mu > 0) m += 2;
    if (j->contact.surface.mu == dInfinity) nub += 2;
  }

  j->the_m = m;
  info->m = m;
  info->nub = nub;
}

Т.к. surface.mu уже не dInfinity
isobolevskiy

Сдесь всё робит.

У меня.
xrModder
Идея: ограничить выносливость актёра (и NPC/мутантов) количеством здоровья.
Vadik
Здравствуйте, есть вопрос кто мог бы помочь до собрать движок CoP у меня возникли проблемы с xrNetServer, xrSound
macron
Цитата(Vadik @ 17.12.2019, 18:46) *
Здравствуйте, есть вопрос кто мог бы помочь до собрать движок CoP у меня возникли проблемы с xrNetServer, xrSound

На всяк случай попробуй от ЗП подставить (как вариант).

Народ, помнится, в ТЧ есть какой-то баг с ошибочной проверкой на мультиплеер при сохранении. Из-за чего сейвы смещаются во времени на полсекунды. Для шестерки его не фиксили? Где бы об этом почитать...
Vadik
Это ни как я пробовал не видит error2string в xrCore
zibit_93
Цитата(xrModder @ 17.12.2019, 17:28) *
Идея: ограничить выносливость актёра (и NPC/мутантов) количеством здоровья.

Я может путаю, но каждый выстрел по гг вроде бы его немного приостанавливает, плюс останавливает спринт, плюс при маленьком количестве ХП гг задыхается. Это те случаи, когда это действительно может оказать влияние на ГГ (это при условии, что у нас мод с ограничением на пожирание аптечек пачками). Этого мало?
Не в бою, просто бегая по локациям такое контрится постоянным лечением до фул хп, а если кто-то не рассчитал и попал в ситуацию где лечиться нечем - просто наберет в след. раз больше аптечек.
В каком-нибудь NLC-подобном моде может было бы в тему, в других не очень.
Все равно многие абузят распрыжку, а в ЗП легальный чит в виде геркулеса. Да и во многих модах на ТЧ тоже есть подобные препараты + арты.
А учитывая типичные задания модов на сталкач (находясь в припяти, сбегать и найти в х18 очередные документы и принести обратно) это такая себе идея, как по мне.

У мутантов это и так есть, разве что неписям добавить, но разве их мало унижали?
xrModder
По правке:
Цитата(xrModder @ 26.10.2019, 23:56) *
ТЧ: Чтение xml-описания текстур без регистрации в system.ltx как в ЧН и ЗП
В xrGame/MainMenu.cpp -> void CMainMenu::ReadTextureInfo() заменить кода на:
Код
    FS_FileSet    fset;
    FS.file_list    (fset, "$game_config$", FS_ListFiles, "ui\\textures_descr\\*.xml");
    FS_FileSetIt    fit    = fset.begin();
    FS_FileSetIt    fit_e    = fset.end();
        
    for(;fit!=fit_e; ++fit)
    {
        string_path    fn1, fn2, fn3;
        _splitpath    ((*fit).name.c_str(), fn1, fn2, fn3, 0);
        strcat        (fn3, ".xml");
        CUITextureMaster::ParseShTexInfo(fn3);
    }


При попытке добавления нового xml texture_descr движок вылетает с ошибкой:
Код
[error]Expression    : start_node && path
[error]Function      : CXml::NavigateToNode
[error]File          : XMLParser\XMLParser.cpp
[error]Line          : 97
[error]Description   : NavigateToNode failed in XML file
[error]Arguments     : ui\name.xml

Причину такого поведения я не нашел, хотя движок корректно работает с texture_descr взятый из system.ltx
Diesel
Ищу исходники компилятора xrLC под 64 бита, желательно под визуалку 2008.
И всякие utils и 3rd party для компилятора геометрии под x64.
xrModder
Удалось таки найти и исправить причину кривого отображения точек на карте ТЧ.
ForserX
Дизель, oxygen (vs2019)
Diesel
ForserX, ага. А она работает на ВИН7 и железе 2009 года?
Да она и весит немало. У меня С диск только 10Г принять сможет.
abramcumner
Цитата(Дизель @ 22.12.2019, 21:28) *
А она работает на ВИН7 и железе 2009 года?

Вин7 - работает.

Цитата
Да она и весит немало. У меня С диск только 10Г принять сможет.

Скачай онлайн установщик и выбери с++. Там правда винсдк все равно ставить, гигов 6 будет. Можно поставить не на с:\, но все равно на диск с много всего поставит.
NanoBot-AMK
Кто нибудь пытался приспособить SSE для класса Fvector?
Вот пример.
Код
// SQ magnitude
    IC    float    square_magnitude(void) const
    {
//        mulps    xmm0, xmm0
//        movss    xmm1, xmm0; xmm1.x = x
//        shufps    xmm0, xmm0, 11100101b; 3211t        копируем 1-й элемент в 0-й элемент
//        addss    xmm1, xmm0; xmm1 = x + y
//        shufps    xmm0, xmm0, 11100110b; 3212t        копируем 2-й элемент в 0-й элемент
//        addss    xmm0, xmm1; xmm0 = z + xmm1
        __m128    a = MULPS(m, m);
        __m128    b = SHUFFLEPS(a, a, _MM_SHUFFLE(3,2,1,1));
        return ADDSS(SHUFFLEPS(b, b, _MM_SHUFFLE(3,2,1,2)), ADDSS(a, b)).m128_f32[0];
    //    return x*x + y*y + z*z;
    }

Ассемблер использовать нельзя, используем интринсики, с ними код получается оптимизированный.
Результат, эти методы выполняются раза два быстрей и более чем два раза меньше по весу, что актуально для старых процев, то есть атлонов без кеша 3-го уровня.
ЗЫ
Я пока не доделал, и ещё тесты надо провести.
ЗЫЫ
Да, структура Fvector имеет размер 16 байт и выравнена.
ForserX
NanoBot-AMK, в каком-то 2017 году я пытался это сделать, но мне сказали: "компилятор это делает сам, забей". Думаю можно поднять вопрос снова. А может ли msbuilder 140/141 в развертывание вычислений флэтов сам?

Сразу для олдов, давайте без vs2013 и ниже.
NanoBot-AMK
ForserX, САААММ? blink.gif это с какого перепуга сам, ни фига не сам, такое могут сказать только погромисты которые во обще не шарят в ассемблере, ни в оптимизации. Структура Fvector не совместима с xmm, тут только ручками надо делать. Не стоит излишне надеяться на компилятор. Мне пришлось расширять Fvector до x,y,z,w и объединить с __m128 тогда компилятор может применять параллельные sse инструкции. Но лучше это сделать интрисиками, тогда точно компилятор создаёт оптимальный код, например VS2010. VS2017 пока не проверял, но думаю результат аналогичный.
Trollz0r
NanoBot-AMK, я недавно смотрел интервью от разработчиков MVS, там один лысый хрен сказал, что асм - для лохов, которые не могут по-настоящему изучить C++
NanoBot-AMK
Trollz0r, сам он лашара tongue.gif , я только через ассемблер изучаю С++. А так же использую технику оптимизации, написал код на асме, декомпилировал его в Си с помощью IDA Pro, результат с компилировал в С++, далее дизассемблировал и проанализировал результат. Таким макаром делаю оптимальный для компилятора С++ код.
xrModder
Кто-нибудь пытался перенести круглую миникарту в ТЧ?
mortan
Цитата(Trollz0r @ 24.12.2019, 06:39) *
NanoBot-AMK, я недавно смотрел интервью от разработчиков MVS, там один лысый хрен сказал, что асм - для лохов, которые не могут по-настоящему изучить C++

конечно они так будут говорить, ведь чем меньше людей знают ассемблер тем дороже они смогут впаривать своё фуфло
xrModder
Читая последние комментарии о ассемблере вспоминаю одного "сборщика" движка X-Ray, который вырезал xrCPU_Pipe с комментарием "зачем движку xrCPU_Pipe не понимаю, ведь без него всё работает", а потом начал жаловаться "а зачем мой движок начал тормозить, когда нативная версия летает на слабых компуктерах".
Для справки: код xrCPU_Pipe почти на 80-90% написан на ассемблере.
ForserX
xrModder, а вот давай поспорим, что он практически не нужен?

Все xrSkin*** - юзались либо онли для r1, либо SDK ( не помню точно )
PLC - только для теней р1
ttapi - это thread pool система. Спокойно меняется на какой-нибудь tbb parallel task

Вот и не осталось от xrCPU_Pipe ни-че-го
xrModder
Цитата(ForserX @ 25.12.2019, 23:01) *
xrModder, а вот давай поспорим, что он практически не нужен?

Цитата
нативная версия летает на слабых компуктерах
ForserX
xrModder,
Все xrSkin*** - юзались либо онли для SDK ( т.к. в игре юзался shaders/skin.h )
PLC - только для теней р1
ttapi - это thread pool система. Спокойно меняется на какой-нибудь tbb parallel task

Вот и не осталось от xrCPU_Pipe ни-че-го
Policai
Народ! А в какой версии студии был собран оригинальный движок ЗП?
atanda
Цитата(Policai @ 26.12.2019, 06:57) *
Народ! А в какой версии студии был собран оригинальный движок ЗП?

vs2008
ForserX
atanda, 2005...
Policai
Цитата(ForserX @ 26.12.2019, 12:51) *
atanda, 2005...


А возможно ли сейчас собрать правку в этой студии? Проблема в том что не получается собрать то что нужно. Правка всего одна, но она собирается с проблемой, перестаёт работать статика и dx10. На статике перестают отображаться спавновские предметы, они есть но невидимые, неписи разговаривают но их не видно, оружие если навести мышку на это место ярлык появляется поднять, но его не видно. На dx10 просто вылетает сразу. На остальных режимах освещения всё отлично.
У меня стоит системник чистый дочерин без дела, двухядерный проц коре 2 дуо, 2х2900 на 775 цокете, 8 гигов оперативки, видяха на гиг.
На него могу поставить любую систему хоть х32 хоть х64. сделать специально всё что нужно чтоб собрать правильно эту правку под оригинал движок гоговская версия. Что для этого нужно?
mortan
Цитата(Policai @ 26.12.2019, 11:14) *
Проблема в том что не получается собрать то что нужно. Правка всего одна, но она собирается с проблемой, перестаёт работать статика и dx10. На статике перестают отображаться спавновские предметы, они есть но невидимые, неписи разговаривают но их не видно, оружие если навести мышку на это место ярлык появляется поднять, но его не видно. На dx10 просто вылетает сразу. На остальных режимах освещения всё отлично.

Про dx10 уже писал, это подарок от криворукого майкрософта. То что у вас происходит на статике - это вина шейдера скининга, он оригинальный, а вам нужен новый, под эту правку. Тут "оригинальный пересобранный" движок проблему не решит, увы, она не там где вы её ищете biggrin.gif.
Policai
Цитата(mortan @ 27.12.2019, 00:17) *
Цитата(Policai @ 26.12.2019, 11:14) *
Проблема в том что не получается собрать то что нужно. Правка всего одна, но она собирается с проблемой, перестаёт работать статика и dx10. На статике перестают отображаться спавновские предметы, они есть но невидимые, неписи разговаривают но их не видно, оружие если навести мышку на это место ярлык появляется поднять, но его не видно. На dx10 просто вылетает сразу. На остальных режимах освещения всё отлично.

Про dx10 уже писал, это подарок от криворукого майкрософта. То что у вас происходит на статике - это вина шейдера скининга, он оригинальный, а вам нужен новый, под эту правку. Тут "оригинальный пересобранный" движок проблему не решит, увы, она не там где вы её ищете biggrin.gif.

На оригинале всё отлично, все режимы и статика и dx10, работают прекрасно без косяков. косяки появляются только с правкой, правка всего одна. увеличение размера динамического обьекта от Shoкerа,шейдер скининга то же новый под эту правку. Проблема dx10 решается легко фиксом вылета старых DX10 игр.. Меня больше интересует статика, нужно чтоб без проблем работало на статике.
mortan
Цитата(Policai @ 26.12.2019, 22:49) *
Меня больше интересует статика, нужно чтоб без проблем работало на статике.

Я написал в чем проблема - в шейдере) Проверьте наличие в папке r1 нового шейдера skin.h, так же кэш старый удалить не забудьте...
P.S. А про оригинал загнули конечно, там своих, "родных" косяков хватает, некоторые из них не исправлены до сих пор...
Policai
Цитата(mortan @ 27.12.2019, 02:40) *
Цитата(Policai @ 26.12.2019, 22:49) *
Меня больше интересует статика, нужно чтоб без проблем работало на статике.

Я написал в чем проблема - в шейдере) Проверьте наличие в папке r1 нового шейдера skin.h, так же кэш старый удалить не забудьте...
P.S. А про оригинал загнули конечно, там своих, "родных" косяков хватает, некоторые из них не исправлены до сих пор...

mortan

Я говорю то что есть физически, система win 7 x64, обновления отключены сразу после установки, нет там нормальных обновлений, если включить обновы комп как раз и начинает тупить после обновлений. там всех просто тупо вынуждают переходить на win10.
Никаких багов, можешь прочитать отзывы по моду, ни единого вылета за всё прохождение, а пройден уже не одну тысячу раз, там нет навороченных плюшек, всё сделано по оригиналу ЗП, на любом освещении работает... Сейчас просто копаюсь с новой версией, она точно так же, прекрасно, работает на всех режимах освещения, оригинал движок без единой правки.
Затык идёт сейчас из за колеса. Поставил цель запустить колесо обозрения в припяти, но предпологаю что придётся отказаться, правку собирал не я, сам не могу найти понятную инструкцию чтоб попытаться сделать самому, все инструкции усыпаны сленгом который мне не понятен, я не программист, просто хороший человек решил помочь и собрал правку. В папке r1 новый шейдер skin.h присутствует.
Сейчас хочу подготовить системник чисто для сборки этой правки. чтоб там было только нужное и ничего лишнего, и попытаться собрать самому, есть студии и 2005 Про и 2008 Про. полные версии... Поставлю систему х32 и попробую так. должна же быть причина почему оригинал работает а с правками нет...
mortan
Цитата(Policai @ 27.12.2019, 05:18) *
Поставлю систему х32 и попробую так. должна же быть причина почему оригинал работает а с правками нет...

biggrin.gif всё, всё, умываю руки, спорить с человеком бесполезно biggrin.gif
macron
Policai: запомни две вещи:

1. ЗП - галимое говно.
2. Когда на нем моддишь что-то с шейдерами, надо перед каждым запуском стирать шейдерный кеш. Сначала на компе находишь папку shaders_cache, потом её стираешь, а потом уже запускаешь.
Молния в вакууме
Не забывайте что в говноЗП так же есть кеш шейдеров прямо в игровых архивах, и его оттуда тоже нужно выпиливать. Когда делали правку для влияния тумана на траву нв R1 с такой проблемой уже сталкивались.
macron
Цитата(Молния в вакууме @ 27.12.2019, 16:53) *
кеш шейдеров прямо в игровых архивах, и его оттуда тоже нужно выпиливать

А потом и архивы как-то перепаковывать. А перепаковываются они вроде через жопу... Короче, тов. Policai, ты попал. biggrin.gif
ForserX
Цитата(Молния в вакууме @ 27.12.2019, 16:53) *
Не забывайте что в говноЗП так же есть кеш шейдеров прямо в игровых архивах, и его оттуда тоже нужно выпиливать

В исходниках рендера поищите "objects". Там и найдёте кривой путь. Выводите на shader_cache и профит.
Diesel
Цитата(macron @ 27.12.2019, 20:06) *
А потом и архивы как-то перепаковывать. А перепаковываются они вроде через жопу... Короче, тов. Policai, ты попал. biggrin.gif

Есть такое. Просто мы не знаем сущности компиляции архивов.
Я знаю что там не стандартно, а именно - это внедрение зависимости чтения патчей.

Правильно будет перепаковать всё вместе с патчем. Но появляется баг чтения архивов, так как стандартный батник или конфиг не пишет (хрен его знает, или пишет из движка) зависимость патча.

Да, ну его этот патч.
Лечится вылет, добавлением пустой папки gamedata\levels. z_crazy.gif
xrModder
Кто-нибудь исправлял ошибку с игровым временем, когда после 4 месяцев игры время PDA идёт в отрицательную сторону? Навряд ли кто-то будет играть столько времени, но присутствие ошибки не даёт покоя.
atanda
Это переполнение переменной, исправляется вроде в x64
xrModder
Цитата(atanda @ 01.01.2020, 03:11) *
Это переполнение переменной, исправляется вроде в x64

Опять x64 z_crazy.gif
ForserX
Цитата(atanda @ 01.01.2020, 00:11) *
исправляется вроде в x64

Не исправляется... Поздравляю, вы словили u64(-1). Нужно прикручивать либу для больших чисел. Я для таких целей свою на скорую руку накидал.

Цитата(xrModder @ 01.01.2020, 00:19) *
Опять x64

x32 не нужен. (Хотя у меня в армейке х32 ноут, останавливает от перестановки винды 5 ГБ трафика на месяц)

Цитата(ForserX @ 01.01.2020, 08:54) *
Нужно прикручивать либу для больших чисел

Или же, сделать что-то из серии:
https://github.com/xrOxygen/xray-oxygen/com...8aa3aa86a7c752d
xrModder
Интересно, в чём смысл использование такого кода (цвет sky_color) разработчиками:
Код
u32 C = color_rgba(iFloor(CurrentEnv.sky_color.x*255.f), iFloor(CurrentEnv.sky_color.y*255.f), iFloor(CurrentEnv.sky_color.z*255.f), iFloor(CurrentEnv.weight*255.f));

Когда более удобно записывать цвет в более привычном HEX формате, а не в дробных цифрах от 0 до 1 и применять лишние операции умножения.
abramcumner
Цитата(atanda @ 01.01.2020, 00:11) *
Это переполнение переменной, исправляется вроде в x64

В движке и на х32 под время используется 64-битная переменная.

Цитата(ForserX @ 01.01.2020, 08:54) *
Не исправляется... Поздравляю, вы словили u64(-1). Нужно прикручивать либу для больших чисел. Я для таких целей свою на скорую руку накидал.

64-бита огромное число.
Цитата
Введение 64-битного формата вносит новую дату «закольцовывания» — оно произойдёт примерно через 292 миллиарда лет, а именно в воскресенье 4 декабря 292277026596 года в 15:30:08 по всемирному времени.

Дело явно не в переполнении u64. Возможно где-то неаккуратно/неявно преобразуется в 32 бита.
ForserX
Цитата(abramcumner @ 01.01.2020, 23:01) *
Введение 64-битного формата вносит новую дату «закольцовывания» — оно произойдёт примерно через 292 миллиарда лет, а именно в воскресенье 4 декабря 292277026596 года в 15:30:08 по всемирному времени.


Код
int main()
{
        unsigned long long temp = 1000 * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
  std::cout << "Hello, " << temp << " " << (unsigned long long)(-1) << "!\n";
}

Цитата
Hello, 18446744072087904256 18446744073709551615!

Ну да... Ну да...
abramcumner
Цитата(ForserX @ 02.01.2020, 00:53) *
Код
int main()
{
        unsigned long long temp = 1000 * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
  std::cout << "Hello, " << temp << " " << (unsigned long long)(-1) << "!\n";
}

Цитата
Hello, 18446744072087904256 18446744073709551615!

Ну да... Ну да...

Твой калькулятор сломан, у temp на конце должно быть 6 нулей. Если правлиьно перемножить, то число влезает в 6 байт, еще 2 байта можно потратить на оставшиеся миллиарды лет.
Я же говорю, наверное где-то неявный каст к int32 smile.gif
cjayho
QUOTE (ForserX @ 01.01.2020, 23:53) *
CODE
int main()
{
        unsigned long long temp = 1000 * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
  std::cout << "Hello, " << temp << " " << (unsigned long long)(-1) << "!\n";
}


"!" << std::endl; не?
Да и не только

CODE
#include <iostream>
#include <cstdint>

int main()
{
    uint64_t temp = 1000 * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
    std::cout << "Hello, " << temp << " " << uint64_t(-1) << "!" << std::endl;
}


получаем

CODE
[cjayho@cjayho-pc ~]$ clang++ ./22.cpp -Wall -Wextra -Weffc++ -pedantic -std=c++17
./22.cpp:6:41: warning: overflow in expression; result is -1702967296 with type 'int' [-Winteger-overflow]
    uint64_t temp = 1000 * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
                                        ^
./22.cpp:6:46: warning: overflow in expression; result is 1039228928 with type 'int' [-Winteger-overflow]
    uint64_t temp = 1000 * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
                                             ^
./22.cpp:6:51: warning: overflow in expression; result is -1621647360 with type 'int' [-Winteger-overflow]
    uint64_t temp = 1000 * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
                                                  ^
3 warnings generated.
[cjayho@cjayho-pc ~]$ ./a.out
Hello, 18446744072087904256 18446744073709551615!


зато если написать все правильно:

CODE
#include <iostream>
#include <cstdint>

int main()
{
    uint64_t temp = uint64_t(1000) * 60 * 60 * 30 * 24 * 12 * 2007; // Xray Time System
    std::cout << "Hello, " << temp << " " << uint64_t(-1) << "!" << std::endl;
}


получается совсем другой результат

CODE
[cjayho@cjayho-pc ~]$ clang++ ./22.cpp -Wall -Wextra -Weffc++ -pedantic  -std=c++17
[cjayho@cjayho-pc ~]$ ./a.out                                          
Hello, 62425728000000 18446744073709551615!


г**нокодеры :-/
ForserX
Цитата(cjayho @ 03.01.2020, 11:09) *
"!" << std::endl; не?

Тоже самое, что и "/n". Каюсь, забыл про приведение типов. (1000ull)
xrModder
Для чего нужен CEnvDescriptor::CEnvDescriptor() в Environment_misc.cpp?
RayTwitty
Кстати обнаружил прикол:
когда в папке \logs количество файлов достигло 3390 игра при запуске стала вылетать со stack overflow biggrin.gif

И немного статистики: с 29 апреля 2012 по 25 июня 2018 гг игра у меня вылетела 1696 раз (именно столько минидампов сохранилось) laugh.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.