Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
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
cjayho, я сомневаюсь просто, что кто-то будет их вставками развертывать. А так - да.
atanda
Цитата(buffy @ 16.05.2019, 23:33) *
Вижу топик обсуждаем.
Часто после вылета в нижнем левом углу экран появляется окошко "msctfime ui". С чем оно связано и в какую сторону копать?

Вопрос всё ещё актуален.

Товарищ iOrange бывалый прогер, может он что-нибудь подскажет? Хотя бы что это и куда копать?
Zagolski
Ни разу не встречал на родном движке. Но, если юзать альпетовский перехватчик, то да, эта менюшка у меня постоянно после вылета вылазиет, пока систему не перезагрузишь (и вин7 и вин10). Причем кажется только в полном экране.
atanda
Собстно, кажется отловил. Окно появляется при свёртывании игры в xrCore
Код
ShowWindow(GetTopWindow(NULL), SW_MINIMIZE);
ShowCursor(TRUE);

Добавил код из репо xp_dev и не протестировал. z_crazy.gif

К слову говоря, окно так и не свернулось, хотя вроде всё должно работать.
ForserX
buffy, возьми у нас в репо
abramcumner
Цитата(buffy @ 17.05.2019, 17:54) *
Собстно, кажется отловил. Окно появляется при свёртывании игры в xrCore
Код
ShowWindow(GetTopWindow(NULL), SW_MINIMIZE);
ShowCursor(TRUE);

Как обычно все работает ровно так, как и написано в коде smile.gif
Окно исправно сворачивается, только вот не сталкерское. GetTopWindow(NULL) возвращает окно msctfime ui
Возьми хендл сталкеровского окна из CRenderDevice.m_hWnd
atanda
Цитата(abramcumner @ 17.05.2019, 19:42) *
GetTopWindow(NULL) возвращает окно msctfime ui

Емнип, GetTopWindow(NULL) возвращает высшее по иерархии окно, что в этот момент может быть выше сталкерского? msctfime ui? И что это за окно такое?
Молния в вакууме
Цитата(Xottab_DUTY @ 16.05.2019, 03:51) *
Я уже перестал её изучать, но, в целом, до сих пор актуально. Ибо там довольно интересная фс, может пригодится)

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

У разработчиков наверно была какая-то документация к этой системе, т.к. даже с исходниками не так то просто понять что там происходит, и я постоянно ловивл ошибки когда пытался что-то делать с файлами.
iOrange
Цитата(Молния в вакууме @ 17.05.2019, 19:27) *
вместо простого открытия файла делается запрос на открытие файла, ядро его запоминает и каким-то специальным потоком обрабатывает, потом вызывается коллбэк который был передан при запросе, в коллбэке уже проверяется открылся ли файл успешно или нет, читаются данные из него и т.п.

Я особо не смотрел сорцы, но при беглом просмотре видел что там используется Overlapped чтение.
Не все так страшно как вы описали, но на тот момент мне было непонятно "зачем" они так делают.

Цитата(Молния в вакууме @ 17.05.2019, 19:27) *
У разработчиков наверно была какая-то документация к этой системе

У нас всех она есть - https://docs.microsoft.com/en-us/windows/de...ase-_overlapped
ed_rez
iOrange,
чисто ради теории. Если беглый взгляд мог ухватиться, вообще реально Сталкер "посадить" на все ядра, которые есть у "железа"?
Diesel
ed_rez, а что ты выиграешь? Он редко выше 3 Гигов набирает памяти, что там делить?

Я уже тестировал на 4х (реально 1 полное, плюс два малость нагружены). толку нет от этого.
ForserX
ed_rez, рендер, алайф, лог. Дизель, ты вообще не о том.
ed_rez
Цитата(Дизель @ 17.05.2019, 20:44) *
ed_rez, а что ты выиграешь?

Я как минимум тогда смогу организовать правки многих утилит под х64. К примеру, сборку локаций с определенными ограничениями. Меня несколько не устраивает детализация локаций, а может и вовсе, размеры. rolleyes.gif

Цитата(Дизель @ 17.05.2019, 20:44) *
Я уже тестировал на 4х

Давай превысим 5 "мульонов" вертексов на локацию, как одно ядро закипит.
Пойми, уже много достигли в прогрессе, а просчет геометрии необходимо не одно ядро. Мне так кажется.
Diesel
ed_rez, да сама игра то уже использует в новых билдах ядра еще. Я уже это видел, тут на сайте, и сам тестировал.

Там всего одну строчку в движке удалить и игра прёт на всех ядрах.

Если повар нам не врёт. biggrin.gif

И у меня в ЧН 1511 так же есть.

Цитата(ed_rez @ 18.05.2019, 00:00) *
К примеру, сборку локаций с определенными ограничениями.


Аи-сетка.
ЧН -160к нодов предел.
ЗП - в задницу эту сетку с милионами.
ed_rez
Цитата(Дизель @ 17.05.2019, 21:12) *
в новых билдах ядра еще. Я уже это видел, тут на сайте, и сам тестировал.

Я в билдах, как порося в цитрусовых. В новых? Это как понять, те что за мохнатые годы? Дык там не было даже 2 ядер, емнип.
Diesel
ed_rez, в движке есть четкая привязка к использованию 1го ядра не более. Вот эту строчку и сносят.
ed_rez
Цитата(Дизель @ 17.05.2019, 21:12) *
И у меня в ЧН 1511 так же есть.

Гляну. Правда я все за ТЧ беспокоюсь. biggrin.gif В ЗП, наверно, мой труд не будет востребован, т.к. уже все есть. Косо-криво, но есть. Да и кто будет разбираться в этом "косо-криво". Выглядит же, да и пофиг, что жрет все ресурсы аки бес. Не знаю, к твоему предложению в ЛС я согласился по причине новой идеи, которые сам везде популяризирую. Разрабы движка грамотные люди, далеко смотрели и многое просчитали, мне так видится, любительским взглядом- я не программист.
Zagolski
Цитата(Дизель @ 17.05.2019, 22:12) *
Там всего одну строчку в движке удалить и игра прёт на всех ядрах.

Не знаю что там прет, по дефолту установка на 1 ядро, а при снятии ограничения нагрузка системой распределяется на все ядра. То есть было 1 ядро 100%, стало 4 ядра по 25%. Типа того.
Здесь же разговор об увеличении нагрузки на все ядра по 100%.

Я ранее проводил эксперимент по снижению нагрузки на проц снижением вызовов отрисовки (перенос в геометрический шейдер). Это в основном теней касается, они больше всего дипов жрут. И да, плавность в игре повысилась, микрофризы исчезли. Так что хорошо бы задействовать побольше ресурсов CPU. А то в Сталкере все что не лень на проце висит, даже расчет дождя (но оно и понятно, в то время видяхи слабые были).
ed_rez
Цитата(Дизель @ 17.05.2019, 21:12) *
у меня в ЧН 1511 так же есть.

Я даже не глянул, тут моя оплошность. Я реально не мог ожидать этого. rolleyes.gif
Цитата(Zagolski @ 17.05.2019, 21:25) *
То есть было 1 ядро 100%, стало 4 ядра по 25%. Типа того.

Как бЭ это и желается.
Цитата(Zagolski @ 17.05.2019, 21:25) *
Здесь же разговор об увеличении нагрузки на все ядра по 100%.

Я понял теперь. Именно так, чтобы все ресурсы "железа".
Diesel
Zagolski, SetThreadAffinityMask (GetCurrentThread(),1);

Я не шарю, но что то тут зарыто.
atanda
Цитата(Дизель @ 17.05.2019, 22:32) *
Zagolski, SetThreadAffinityMask (GetCurrentThread(),1);

Я не шарю, но что то тут зарыто.

Грубо говоря говорит на каком ядре\потоке(если ht\smt) исполнять тред unsure.gif
Zagolski
Ну так как распаралелить потоки на сталкерском движке, умельцы есть? По крайней мере в рендерере. Я бы взялся, но по многопоточности знаний у меня вряд ли не хватит в данный момент, чтобы что-то путное сделать.
ForserX
Zagolski, wip
Zagolski
Цитата(ForserX @ 18.05.2019, 23:23) *
Zagolski, wip

В смысле в процессе разработки? Если так, то отлично. В окси ожидать и когда?
ed_rez
Цитата(ForserX @ 18.05.2019, 22:23) *
wip

Очень хорошая новость. Удачи!
ForserX
Zagolski, когда-когда, а фиг его знает, как у меня/у Гипа будет желание и время. Сейчас мы погрязли в рендере. Ибо все наши Рендер проггеры слились из комьюнити.
atanda
Всем привет! У меня появилась идея реализовать загрузку ресурсов отдельно от бинов. По-умолчанию, емнип, они грузятся относительно пути $game_data$, но банальная замена пути в fsgame.ltx не даёт результатов - файлы найти движок не может. Может кто-то копал в этом направлении или уже реализовал некий функционал?
stalkergoshawk
Здравствуйте. Подскажите, есть кусок кода взятого с OpenXray.
CODE
void CCameraManager::UpdateCamEffectors()
{
if (m_EffectorsCam.empty())
return;

auto r_it = m_EffectorsCam.rbegin();
while (r_it != m_EffectorsCam.rend())
{
if (ProcessCameraEffector(*r_it))
++r_it;
else
{
// Dereferencing reverse iterator returns previous element of the list, r_it.base() returns current element
// So, we should use base()-1 iterator to delete just processed element. 'Previous' element would be
// automatically changed after deletion, so r_it would dereferencing to another value, no need to change it
OnEffectorReleased(*r_it);
auto r_to_del = r_it.base();
m_EffectorsCam.erase(--r_to_del);
}
}

m_cam_info.d.normalize();
m_cam_info.n.normalize();
m_cam_info.r.crossproduct(m_cam_info.n, m_cam_info.d);
m_cam_info.n.crossproduct(m_cam_info.d, m_cam_info.r);
}

В коде есть ключевое слово auto, описание которого изменилось в с++11. я компилирую VS2008, там auto работает иначе. На что его заменить?
есть идея строки
CODE
auto r_it = m_EffectorsCam.rbegin();
auto r_to_del = r_it.base();

заменить на
CODE
EffectorCamVec::reverse_iterator r_it = m_EffectorsCam.rbegin();
EffectorCamVec::reverse_iterator::base r_to_del = r_it.base();

Но правильно ли это будет? Подскажите как сделать?
Xottab_DUTY
stalkergoshawk, да, нужно просто явно указать типы, возвращаемые функциями rbegin и r_it.base()
ForserX
Танкисты! 128 костей вас устроит?
ed_rez
ForserX,
не танкистов устроит.
ForserX
ed_rez, исходник в репо, дев ветка
atanda
А по моему вопросу есть что?
ЗЫ: несколькими постами выше.
Diesel
Цитата(ForserX @ 22.05.2019, 00:24) *
Танкисты! 128 костей вас устроит?


Там на видео сколько костей?

С костями гусля будет спадать. Нужно делать еще упоры, а это еще кости доп. Боюсь, что 128 маловато будет.
NanoBot-AMK
128 костей должно хватить, но только после оптимизации движка. А 256 это чобы совсем. Блин же приказано не стрелять.
atanda
Цитата(buffy @ 21.05.2019, 07:53) *
Всем привет! У меня появилась идея реализовать загрузку ресурсов отдельно от бинов. По-умолчанию, емнип, они грузятся относительно пути $game_data$, но банальная замена пути в fsgame.ltx не даёт результатов - файлы найти движок не может. Может кто-то копал в этом направлении или уже реализовал некий функционал?

Придумал:
Этот код в CLocatorAPI::_initialize
Код
    fs_ltx = (fs_name && fs_name[0]) ? fs_name : FSLTX;
            pFSltx = r_open(fs_ltx);

            if (!pFSltx && m_Flags.is(flScanAppRoot))
                pFSltx = r_open("$app_root$", fs_ltx);

            if (!pFSltx)
            {
                string_path tmpAppPath = "";
                strcpy_s(tmpAppPath, sizeof(tmpAppPath), Core.ApplicationPath);
                if (xr_strlen(tmpAppPath))
                {
                    tmpAppPath[xr_strlen(tmpAppPath) - 1] = 0;
                    if (strrchr(tmpAppPath, '\\'))
                        *(strrchr(tmpAppPath, '\\') + 1) = 0;

                    append_path("$fs_root$", tmpAppPath, 0, FALSE);//true
                }
                else
                    append_path("$fs_root$", "", 0, FALSE);

                pFSltx = r_open("$fs_root$", fs_ltx);
            }
            else
                append_path("$fs_root$", "", 0, FALSE);

заменить на
Код
        if (strstr(Core.Params, "-gres"))
        { //game resources from command line
            string_path path;
            sscanf(strstr(Core.Params, "-gres ") + 6, "%[^ ] ", path);
            append_path("$fs_root$", path, 0, FALSE);
            fs_ltx = (fs_name && fs_name[0]) ? fs_name : FSLTX;
            pFSltx = r_open("$fs_root$", fs_ltx);
        }
        else
        { //find nearest fs.ltx and set fs_root correctly
            fs_ltx = (fs_name && fs_name[0]) ? fs_name : FSLTX;
            pFSltx = r_open(fs_ltx);

            if (!pFSltx && m_Flags.is(flScanAppRoot))
                pFSltx = r_open("$app_root$", fs_ltx);

            if (!pFSltx)
            {
                string_path tmpAppPath = "";
                strcpy_s(tmpAppPath, sizeof(tmpAppPath), Core.ApplicationPath);
                if (xr_strlen(tmpAppPath))
                {
                    tmpAppPath[xr_strlen(tmpAppPath) - 1] = 0;
                    if (strrchr(tmpAppPath, '\\'))
                        *(strrchr(tmpAppPath, '\\') + 1) = 0;

                    append_path("$fs_root$", tmpAppPath, 0, FALSE);//true
                }
                else
                    append_path("$fs_root$", "", 0, FALSE);

                pFSltx = r_open("$fs_root$", fs_ltx);
            }
            else
                append_path("$fs_root$", "", 0, FALSE);
        }

Теперь, если запускать игру с -gres smtg_path, то ресурсы будут браться из smtg_path

С таким кодом дебажить мне намного удобнее. Имхо
Diesel
buffy, хочешь сказать, что так можно реализовать загрузку например зимних текстур?

Это то же хорошая тема. Только надо это реализовать не при запуске, а при переходе на новую локацию. Сможешь?
abramcumner
Цитата(buffy @ 24.05.2019, 22:52) *
С таким кодом дебажить мне намного удобнее. Имхо

Так тебе для отладки было надо??? В настройках дебаггера можно указать любую текущую директорию. Указываешь и геймдата берется из нее.
ed_rez
Цитата(Дизель @ 24.05.2019, 22:03) *
так можно реализовать загрузку например зимних текстур?

Есть такой уже проект- Новое время. Выход в меню и проходит загрузка, при необходимости, сменяемых текстур.
Diesel
ed_rez, вот как. А я помню (или не помню), было дело Непряхин и Якубовский (по-моему), что то пытались провернуть подобное, но у них ничего не выходило.
ed_rez
Дизель,
https://www.amk-team.ru/forum/topic/13869-n...comment-1209112
Мне, допустим, не нравится зима на том террейне, который заточен под иное. Для полноценной зимы нужно локации перелопачивать полностью и явно не в СДК, а в 3Д редакторе.
А смену весна-лето-осень, такое визуально рабоче выглядит.
atanda
Цитата(abramcumner @ 24.05.2019, 23:06) *
Цитата(buffy @ 24.05.2019, 22:52) *
С таким кодом дебажить мне намного удобнее. Имхо

Так тебе для отладки было надо??? В настройках дебаггера можно указать любую текущую директорию. Указываешь и геймдата берется из нее.

Блин, опять факапнулся. Че там за опция?

Debugging->Working Directory - не, хз почему, но так не вкатывает

Цитата(Дизель @ 24.05.2019, 23:03) *
хочешь сказать, что так можно реализовать загрузку например зимних текстур?

нет, но то, что ты написал, какой-то бред

Блин, забыл fsgame добавить - вроде работает +
RSFSR
Цитата
хочешь сказать, что так можно реализовать загрузку например зимних текстур?

Цитата
Есть такой уже проект- Новое время. Выход в меню и проходит загрузка, при необходимости, сменяемых текстур.

а как насчет динамически подгружаемых лайтмапов для локации? скомпилить локацию несколько раз с разным положением солнца и подгружать из нескольких наборов лайтмапов
ТСС же. Насколько реализуемо? правда траву тоже в нескольких вариантах нужно будет делать
не первый раз уже предлагаю unsure.gif
Diesel
RSFSR, эх. Я мимо. Но сам механизм приветствую. Меня больше динамика без лайтмапов интересует.
У меня лайтмапы, выполняют лишь функцию AO. И то я хотел бы их вообще выкинуть, как атавизм.
Приятно конечно, когда где то тёмное пятно внутри помещения присутствует, но если докопаться, то оно не соответствует освещению динамическому.
RSFSR
добавлю, что даже не все лайтмапы нужны, а лишь канал, что за тени от солнца отвечает
Цитата
Меня больше динамика без лайтмапов интересует.
У меня лайтмапы, выполняют лишь функцию AO. И то я хотел бы их вообще выкинуть, как атавизм.

бесполезное дело их выкидывать.
без них всякие AO HBAO и прочее выглядят трешово что в сталкере, что в других играх. Вот RTX к сталкеру прикрутят, тогда я скажу, что динамика лучше статики biggrin.gif
Diesel
RSFSR, на вкус и цвет - товарищей нет. Ты прям на R1 играешь? Я не могу, до блювоты прям раздражает.


Я только такой рендер перевариваю:
https://www.amk-team.ru/forum/topic/14029-o...ce-fixes-redux/
ed_rez
Цитата(Дизель @ 24.05.2019, 23:13) *
R1 играешь?

Убейте меня медленно! laugh.gif
Статика vs Динамика
atanda
Цитата(Дизель @ 25.05.2019, 00:13) *
Ты прям на R1 играешь? Я не могу, до блювоты прям раздражает.

Ты просто не умеешь её готовить laugh.gif
RSFSR
Дизель, нет конечно, это статика курильщика biggrin.gif
вот вот статика нормального человека:




ed_rez
Статика хороша в чем-то, бесспорно. Но чтобы все эффекты от рендеров получить, а также получить значительный разгон движка, как-то совсем ни о чем. Тут вопрос стоит за DX12 + 100500 различных эффектов.
Дико интересно, намокание возможно на статике?

Тени от травы возможны, DOF эффект, эффект приближения в линзе оптики,...?
Понятное дело, что каждый занимается тем, что ему нравится. Пытаюсь понять, считаю плюсы и минусы статики, считаю динамике. Не фига не получается, либо у меня калькулятор кривой. biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.