Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
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
v2v3v4
CODE
[error]Expression : prev_obj == NULL
[error]Function : CGameObject::net_Spawn
[error]File : GameObject.cpp
[error]Line : 289
[error]Description : previous object ID=1280 is mp_wpn_ak12, hasn't been destroyed but (to destroy = 0)


Парни кто подскажет с чем связан данный вылет, происходит при респавне актора в мп
v2v3v4
Цитата(RayTwitty @ 22.01.2016, 19:18) *

На счет темы сборки движка от Shoker'а:
Если студия при компиляции любой длли выбрасывает кучу ругани по типу:
CODE
fatal error C1033: cannot open program database ''

То переименовываем engine.sln_old в engine.sln, и открываем с него, и о чудо, если пути к дх сдк прописаны правильно то все собирается без проблем.
ForserX
Цитата(v2v3v4 @ 31.10.2017, 23:31) *
На счет темы сборки движка от Shoker'а:

Давно бы уже пора перейти на студии поновее.
v2v3v4
Цитата(nflaming @ 01.11.2017, 01:42) *
Цитата(v2v3v4 @ 31.10.2017, 23:31) *
На счет темы сборки движка от Shoker'а:

Давно бы уже пора перейти на студии поновее.

Инфа для Олдфагов ))
ForserX
Цитата(v2v3v4 @ 31.10.2017, 23:44) *
Инфа для Олдфагов ))

Хех, не, ну это не серьёзно просто.
NanoBot-AMK
На счёт использования параллельных инструкций SSE и AVX, надо использовать не трёхмерные векторы, а четырёх мерные, на прямую они не совместимы.
CODE
Fvector4 struct
x dword ?
y dword ?
z dword ?
w dword ?
Fvector4 ends
; для регистров xmm 16 байт SSE инструкций
Fmatrix4 struct
i Fvector4 <>
j Fvector4 <>
k Fvector4 <>
c_ Fvector4 <>
Fmatrix4 ends

Так же надо ассоциировать с xmm регистрами, как это сделать в С++ я пока не знаю, не пытался, но это не трудно. Далее надо переписать код в xrCore, файлы _vector3d.h, _matrix.h и так далее. Тогда может что-то и получится. Не забываем сделать юнити тесты, что бы убедится что код работает правильно.
ЗЫ
Не давно сделал тесты с mul_34(я уже писал про это, но там был код маландринуса который оказался бракованым), вырезал код из движка с скалярными SSE и свой с параллельными. Сделал инлайн код, результат 67 тактов скалярные SSE, и 51-52 мой, так что разница не так велика, да, но новые процессоры могут дать большую скорость с параллельными операциями, у них конвейер по мощней чем в athlon II X4.
Ах да, длина функции получилась 209 байт против около 560, так что размер файла с параллельными SSE должен уменьшится, что хорошо скажется на быстродействии, меньше промахов кеша, а они дают задержку большую до 1000 тактов, это много.
Ах да, в ТЧ квадратный корень вычисляет не sqrtss а функция в начале файла, в результате корень вычисляется не за 20 тактов, а за 500-1000 что не прилично много. Но это смотрите в функцию _sqrt, надо заставить использовать инлайн код SSE, там что-то пысы-погромисты намудрили.
-StalkMen-
NanoBot-AMK,
А нет ли сравнительных цифр в игре? Чёт я думаю, это всё нано оптимизации с нано эффектом wink_old.gif
NanoBot-AMK
Могу лишь сказать что добавил скорости в функции баллистики.
XRayExt
CODE
; Новая баллистика
org 101A3678h - shift ; 5 bytes
push sizeof CBulletManager ; CBulletManager
;оптимизация тупокода (с) НаноБот
; bullet->speed = bullet->dir.magnitude();
; VERIFY(_valid(bullet->speed));
; VERIFY(!fis_zero(bullet->speed));
; //вместо normalize(), чтоб не считать 2 раза magnitude()
;#pragma todo("а как насчет bullet->speed==0")
; bullet->dir.x /= bullet->speed;
; bullet->dir.y /= bullet->speed;
; bullet->dir.z /= bullet->speed;
org 101B7F80h - shift
db 52 dup (90h)
org 101B7F80h - shift ; 52 bytes
;xmm3 = dotproduct bullet->dir
ASSUME esi:ptr SBullet
sqrtss xmm3, xmm3
movflt [esp], 1.0
movss xmm0, dword ptr [esp]
divss xmm0, xmm3
movups xmm1, oword ptr [esi].dir
shufps xmm0, xmm0, 0
mulps xmm0, xmm1
add esp, 4
movups oword ptr [esi].dir, xmm0
movss [esi].speed, xmm3 ; 35 bytes
jmp loc_101B7FB4
ASSUME esi:nothing
org 101B7FB4h - shift
loc_101B7FB4:

В остальных случаях, скорость часто упала из-за врезок, и промахов кеша. Скорость можно получить если полностью движок переписать под параллельные SSE операции, не обязательно AVX, сойдёт и SSE, SSE3, SSE4.1.
NanoBot-AMK
Тут про SSE в С++ без использования ассемблера.
http://ccfit.nsu.ru/~kireev/lab4/lab4intr.htm
Так что освоить параллельные операции не так сложно, возможно потом этим займусь.
ForserX
NanoBot-AMK, открой сайт интеловских инструкций. Там про всё подробно.
Winsor
Уважаемые, подскажите пожалуйста - как повернуть онлайновый объект вокруг своей оси?
Пытаюсь так:
Функция в движке

Код
void CScriptGameObject::SetRotation(const Fvector &rot)
{
    object().Direction().setHP(rot.x, rot.y);
    CKinematics *pK = PKinematics(object().Visual());
    if (pK)
    {
        pK->CalculateBones_Invalidate();
        pK->CalculateBones();
    }
    CSE_ALifeDynamicObject* se_obj = object().alife_object();
    if (se_obj)
    {
        object().XFORM().getXYZ(se_obj->angle()); //запись в o_Angle
    }
}


Вызов из скрипта

Код
    local sobj = create("televizor",....)
level.client_spawn_manager():add(sobj.id, 0,
            function (dp, id, obj)
                obj:set_direction(0,270,0)
            end
        , nil)


В лучшем случае - объект визуально пропадает, но если "пройти" по нему - появляется, т.е. своей тушкой я ему меняю координаты. В худшем - вообще ничего не происходит - просто спавниться с углом (0,0,0). Само собой, пытался и градусах и в радианах передавать входящий параметр.
AndreySol
Цитата
SetRotation(const Fvector &rot)
obj:set_direction(0,270,0)

Если я правильно понял, что set_direction - это скриптовая обертка над SetRotation, то получается, что ф-ция ожидает аргументом объект класса Fvector, а получает три флоат.
Winsor
Цитата(AndreySol @ 06.11.2017, 14:49) *
Цитата
SetRotation(const Fvector &rot)
obj:set_direction(0,270,0)

Если я правильно понял, что set_direction - это скриптовая обертка над SetRotation, то получается, что ф-ция ожидает аргументом объект класса Fvector, а получает три флоат.

Сорри, там их (SetRotation) две для удобства - одна для вектора, одна для набора значений.
KrivoRuk
Цитата(serg101188 @ 04.09.2017, 12:10) *
https://www.gameru.net/forum/index.php?s=&a...t&p=1622500
некто не может помочь

Можешь скинуть исходники?
Цитата(Forser @ 08.09.2017, 18:36) *
Цитата(abramcumner @ 08.09.2017, 14:56) *
Ну и если что, модели пока не выбрали лимит и в 64 кости.

У меня аниматору нужно 72 кости для нового скелета НПС.

Мне нужна поддержка до 100 костей, и тоже для нпс - для женского скелета, но вот Константин всё никак не пересоберёт свой сдк(ОГСР), с этой поддержкой. А у меня исходники борланд не собирает.
Цитата(ChuniMuni @ 16.09.2017, 12:29) *
Спрошу более понятно - OS Win7 SP1 ultimate 64х. C++Builder 6 Build 10.166
Сборка стопорится на make xrECoreB.dll, ошибки:
Код
Build
  [Linker Error] Unresolved external 'DirectInput8Create' referenced from X:\OGSR_ENGINE\_TEMP\SDK\RELEASE\WIN32\ECORE\XR_INPUT.OBJ
  [Linker Error] Unresolved external '__stdcall Mgc::MinSphere(int, const Mgc::Vector3 *)' referenced from X:\OGSR_ENGINE\_TEMP\SDK\RELEASE\WIN32\ECORE\EDITOBJECTSKIN.OBJ
  [Linker Error] Unresolved external 'GetOpenNameImpl' referenced from X:\OGSR_ENGINE\_TEMP\SDK\RELEASE\WIN32\ECORE\EDITORPREFERENCES.OBJ
  [Linker Error] Unresolved external 'GetSaveNameImpl' referenced from X:\OGSR_ENGINE\_TEMP\SDK\RELEASE\WIN32\ECORE\EDITORPREFERENCES.OBJ

У мну аналогичная проблема, ничего не помогает..
Цитата(K.D. @ 16.09.2017, 14:59) *
А вообще есть опыт по сборке сколь-нибудь сложных проектов? Линковщик говорит тебе, что он не может найти вот эти вот функции за пределами собираемого модуля. Конкрекно тут - dinput8, MagicFM, ETools (если ты огсе собираешь, конечно). Местонахождение функций можно установить и самому, запустив поиск по файлам в том же Notepad++. Ну так и собери эти либы, подготовь библиотеки импорта. Все ж описано. Более того, для подготовки библиотек импорта для билдера есть даже спец батники в проекте.

Как я и говорил ранее(в ЛС) - я собрал либы и подготовил библиотеки, но это совсем ни на что не повлияло, все эти шибки остались... Помогите сменить лыжи, не хотят ехать.
Кстати по движку(ОГСР) - у меня не собирался рендер - слетал компилятор, но как говорит Константин - "проблема в самом компиляторе студии", а как тогда в той же студии, с теми же настройками, без каких либо проблем, на ура собирается движок от KRodinn, на основе ОГСР ...? Да я бы и юзал исходники от KRodinn, да там минус один - вырезан сдк(редакторы), а мне нужен полный комплект. По редакторам конечно К.D. поработал хорошо, за что ему большое спасибо...
aka_sektor
Наткнулся в сырцах ЧН ещё на неясные теги:
Код
#if defined(USE_DEBUGGER) && !defined(USE_LUA_STUDIO)
...
#endif

#if RENDER!=R_R1
...
#endif

#if    RENDER == R_R3
...
#endif

Эт чего за они?
DaaGuda
aka_sektor, если я правильно понял - если используется рендер 1 и т.д., то выполняется код в данной секции.
ForserX
aka_sektor, луадебаггер, обертка луа-студио, не р1 и р3.
Trollz0r
Кстати да, ПЫСы к ЧН отказались от самописного дебаггера и использовали китайскую ide? Каким образом можно её подключить к движку?
ForserX
Цитата(RedPython @ 10.11.2017, 11:09) *
Каким образом можно её подключить к движку?

Ты о дебаггере или lua_studio?
aka_sektor
nflaming, так они в каких сборках движка работают? Release, debug, mixed?
ForserX
Цитата(aka_sektor @ 10.11.2017, 14:44) *
nflaming, так они в каких сборках движка работают? Release, debug, mixed?

Вопрос из серии: я не знаю, что это и зачем мне это, но надо.

Всё, что касается Луа - не помню. Можно в любой сборке включить. !=R1 - во всех рендерах, кроме R1, R3 - R3. Когда ты уже на названия опираться начнёшь?!
-StalkMen-
aka_sektor,
Если хочется луа отладчик, то можно LDT запользовать.
aka_sektor
А что насчет:
Код
#ifndef DEDICATED_SERVER
...
#endif
macron
Цитата(aka_sektor @ 11.11.2017, 01:44) *
DEDICATED_SERVER

"Выделенный сервер", это из мультиплеера, консольный режим сервера.
aka_sektor
macron, работает в релизе?
macron
Цитата(aka_sektor @ 11.11.2017, 02:32) *
работает в релизе?

Да.
KrivoRuk
Народ - кто нибудь собирал исxодники СоС? в общем скачал с репо, ну первая странность: вроде проекты заточены под VS2013, но при открытии все проекты выгружены - не xочет в VS2013 загружаться, зато в VS2017 только в путь, при загрузке спросил на перевод всеx проектов на инструменты по новее VS2017 - я отказался, всё кроме "xrGame.dll" собирается без проблем, при построении xrGame.dll в самом конце, на стадии линк, вылетает такое:
Код
1>LINK : fatal error C1510: Cannot load language resource clui.dll

Что означает:
Цитата
Не можете открыть языковой ресурс клуж.файл DLL
Компилятор не может загрузить библиотеку DLL языкового ресурса.
Есть две общие причины для этой проблемы. При использовании 32-разрядного компилятора и средств, может появиться эта ошибка для больших проектов, использующих более 2 ГБ памяти во время связи. Возможным решением в 64-разрядных системах Windows является использование 64-разрядного собственного или кросс-компилятора и средств для генерации кода. Это использует больше памяти, доступных в 64-битных приложений. Если необходимо использовать 32-разрядный компилятор, поскольку выполняется в 32-разрядной системе, в некоторых случаях можно увеличить объем памяти, доступной компоновщику, до 3 ГБ.

Ну как я понял - копилятор x32, и если превышает допустимое ОЗУ=слетает, ну так другой компилятор и не поюзаешь - проект то "Release x32".
На некоторыx ресурсаx встречается совет - отключить оптимизацию для проекта, я попробовал: ну во первыx - сборка пошла сначала, во вторыx - в два раза дольше, но всё же закончилась успеxом(впервые собрал исxодники СоС):
Код
1>   Создается библиотека X:\src\..\_build\lib\Release\xrGame.lib и объект X:\src\..\_build\lib\Release\xrGame.exp
1>Создание кода
1>Создание кода завершено
1>xrGame.vcxproj -> E:\STALKER\Games\bin_rel\xrGame.dll
1>Сборка проекта "xrGame.vcxproj" завершена.
========== Сборка: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

Так в чём вопрос: можно ли эту ошибку -
Код
1>LINK : fatal error C1510: Cannot load language resource clui.dll

исправить как нибудь иначе, кроме того, как отключать оптимизацию? А то как-то не улыбается - после малейшей правки ждать более двуx часов сборки, и к тому же на компе в это время больше ничего не сделаешь(прям как локацию компилить)...
Zagolski
Ну так после отключения оптимизации первый раз он всегда заново пересоберет (как и при включении), а затем уже не будет заново собирать. Да и многоядерность включи (при этом минимальное перестроение отключи, если включено), в разы быстрее собирать будет.
abramcumner
Цитата(KrivoRuk @ 14.11.2017, 02:06) *
ну так другой компилятор и не поюзаешь - проект то "Release x32".

Почему не поюзаешь? Поюзаешь. Тебе же все расписали - кросскомпилятор, сам х64, генерит код для х32.
https://stackoverflow.com/questions/1982071...amd64-toolchain
KrivoRuk
Цитата(Zagolski @ 14.11.2017, 08:28) *
Да и многоядерность включи

А это где "клацнуть" надо?

Цитата(abramcumner @ 14.11.2017, 08:43) *
Тебе же все расписали - кросскомпилятор, сам х64, генерит код для х32.
https://stackoverflow.com/questions/1982071...amd64-toolchain

Ну так там написано:
Цитата
То есть, если вы используете среду разработки VS2013, настроенную для запуска компилятора VS2012, вам не повезло.

А у меня VS2017, а проект под VS2013 ..?
abramcumner
Цитата(KrivoRuk @ 14.11.2017, 08:55) *
А у меня VS2017, а проект под VS2013 ..?

Ну ты же не используешь компилятор VS2012? Там нет 64-разрядного компилятора, с 2013 появился.
Или лучше переключи проекты на 2017 - там точно работает.
KrivoRuk
Цитата(abramcumner @ 14.11.2017, 09:02) *
Или лучше переключи проекты на 2017 - там точно работает.

Не выходит - сыпятся ошибки в коде.(
В общем - кроме отключения оптимизации ничего не помогает.
Xottab_DUTY
При отключении оптимизации собирается быстрее, чем с оптимизацией, т.к. компилятор анализирует код и улучшает где нужно.
Но без оптимизации в игре будет меньше производительность.
aka_sektor
А вот в ТЧ двиге есть такой код:
Код
if(strstr(Core.Params,"designer"))    
{
    CMD1(CCC_DR_TakePoint,        "demo_record_take_point");
    CMD1(CCC_DR_ClearPoint,        "demo_record_clear_points");
    CMD4(CCC_DR_UsePoints,        "demo_record_use_points",    &g_bDR_LM_UsePointsBBox, 0, 1);
    CMD4(CCC_DR_UsePoints,        "demo_record_4step",        &g_bDR_LM_4Steps, 0, 1);
    CMD4(CCC_DR_UsePoints,        "demo_record_step",            &g_iDR_LM_Step, 0, 3);
}


Если в игре, в консоли ввести help, там таких нету. Они не работают выходит в релизе?
macron
Цитата(aka_sektor @ 15.11.2017, 21:55) *
if(strstr(Core.Params,"designer"))

А ты сначала добавь в батник запуска параметр -designer и проверь.
ForserX
Цитата(macron @ 15.11.2017, 22:08) *
designer

Без минуса.
macron
Цитата(nflaming @ 15.11.2017, 22:14) *
Без минуса.

Без разницы.
Zagolski
Включение HT на CPU (i7-2600K @4400 MHz) дает совсем малую прибавку в скорости при компиляции xrGame.dll: 737 против 700 сек, т.е. около 5%. С /MP, разумеется.
ForserX
Кто-то мерцающий текст на x64 исправлял?

Цитата(Zagolski @ 18.11.2017, 20:47) *
Включение HT на CPU (i7-2600K @4400 MHz) дает совсем малую прибавку в скорости при компиляции xrGame.dll: 737 против 700 сек, т.е. около 5%. С /MP, разумеется.

Если провести ряд работ по оптимизации сборки xrGame, можно добиться большего.
KrivoRuk
Доброго времени суток. Ув. двигоправы, такой вопрос: вот мы имеем в гл.меню статическую картинку/заставку, в конфиге выглядит так:
Код
    <background x="0" y="0" width="1024" height="768">
        <auto_static x="0" y="0" width="1024" height="768" stretch="1">
            <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new</texture>
        </auto_static>
    </background>

Вместо текстуры стоит видео(ogm) на весь экран, вот xотелось бы "впилить" сюда <random>, ну т.е. чтоб использовать на подобии, как рандомная музыка в гл.меню, что-то на подобии этого:
Код
    <background x="0" y="0" width="1024" height="768">
        <auto_static x="0" y="0" width="1024" height="768" stretch="1" random="0">
                <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_0</texture>
                <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_1</texture>
                <texture x="0" y="0" width="1920" height="1080">ui\ui_background_new_2</texture>
        </auto_static>
    </background>

Что-то вроде "динамической смены заставки гл.меню". Как я понял - надо смотреть в "xrGame\ui\UIXmlInit.cpp" функция:
Код
void CUIXmlInit::InitAutoStaticGroup(CUIXml& xml_doc, LPCSTR path, int index, CUIWindow* pParentWnd)
{
    XML_NODE* _stored_root                = xml_doc.GetLocalRoot();
    xml_doc.SetLocalRoot                (xml_doc.NavigateToNode(path,index));

    XML_NODE* curr_root                    = xml_doc.GetLocalRoot();
    if(!curr_root)
            curr_root                    = xml_doc.GetRoot();
    
    XML_NODE* node                        = curr_root->IterateChildren(NULL);
    int cnt_static                        = 0;
    int cnt_frameline                    = 0;
    int cnt_text                        = 0;
    string512                            buff;

    while(node)
    {
        LPCSTR node_name            = node->Value();
        if(0==stricmp(node_name,"auto_static"))
        {
            CUIStatic* pUIStatic        = xr_new<CUIStatic>();
            InitStatic                    (xml_doc, "auto_static", cnt_static, pUIStatic);
            xr_sprintf                    (buff,"auto_static_%d", cnt_static);
            pUIStatic->SetWindowName    (buff);
            pUIStatic->SetAutoDelete    (true);
            pParentWnd->AttachChild        (pUIStatic);

            ++cnt_static;
        }else
        if(0==stricmp(node_name,"auto_frameline"))
        {
            CUIFrameLineWnd* pUIFrameline = xr_new<CUIFrameLineWnd>();
            InitFrameLine                (xml_doc, "auto_frameline", cnt_frameline, pUIFrameline);
            xr_sprintf                    (buff,"auto_frameline_%d", cnt_frameline);
            pUIFrameline->SetWindowName    (buff);
            pUIFrameline->SetAutoDelete    (true);
            pParentWnd->AttachChild    (pUIFrameline);

            ++cnt_frameline;
        }else
        if(0==stricmp(node_name,"auto_text"))
        {
            ++cnt_text;
        }
        node                        = curr_root->IterateChildren(node);
    }
    xml_doc.SetLocalRoot                (_stored_root);
}

Или в другом месте копать? А то я тут не соображу, как сюда "внедрить" этот <random="0">..
П.С.: платформа ЗП(CoC_1.5_R6).

abramcumner
Цитата(KrivoRuk @ 21.11.2017, 10:36) *
Или в другом месте копать? А то я тут не соображу, как сюда "внедрить" этот <random="0">..

Ну по логике надо копать глубже: открывать CUIStatic, там делать загрузку нескольких текстур и рандомный показ.
Ну или сделать обычный статик с именем, явную инициализацию с id и менять текстуру в mainmenu.script
Trollz0r
Цитата(nflaming @ 10.11.2017, 09:31) *
Ты о дебаггере или lua_studio?
---->
Цитата(nflaming @ 10.11.2017, 13:47) *
Всё, что касается Луа - не помню.



Ок, кто-нибудь может рассказать, как использовать lua studio совместно с ЧН/ЗП движком?

И чем она лучше старой script ide?
ForserX
Итак, время глупых вопросов. Неизвестно когда полетело скрытие худовой модели при зуме. Как я понял за это должен был отвечать RenderHud(false). Итак вопрос, как это работало в оригинале и есть ли какие-нибудь способы скрыть худовый рендер ствола, оставив при этом его активным?

Цитата(RedPython @ 23.11.2017, 16:05) *
Ок, кто-нибудь может рассказать, как использовать lua studio совместно с ЧН/ЗП движком?

Макросс при компиляции выстави.

#Shoкer_Sin_RTwitty_Придите
Молния в вакууме
В ТЧ движок для рендеринга некоторых эффектов обращался к RCache напрямую, в ЧН добавили DX10 и так стало делать нельзя.
Казалось бы, нужно добавить в интерфейс рендера функции, с помощью которых можно было реализовать всё что нужно, но нет,
ПЫС перенесли код отрисовки этих эффектов в рендер, добавили интерфейсы и фабрику. Но почему-то не для всех, трассеры от пуль рисуются UIRender'ом. Почему так сделали?
Diesel
Цитата(saas @ 01.12.2017, 01:39) *
Но почему-то не для всех, трассеры от пуль рисуются UIRender'ом. Почему так сделали?

Потому что несколько видов. В режиме худ, трассеры летят из центра экрана. А для второго вида это не надо. Наверно, что бы было отключение рендера трассеров совместно с отключением рендера худа.
Молния в вакууме
Цитата(andreyholkin @ 30.11.2017, 23:46) *
Цитата(saas @ 01.12.2017, 01:39) *
Но почему-то не для всех, трассеры от пуль рисуются UIRender'ом. Почему так сделали?

Потому что несколько видов. В режиме худ, трассеры летят из центра экрана. А для второго вида это не надо. Наверно, что бы было отключение рендера трассеров совместно с отключением рендера худа.

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

Да и вопрос немного не про это.
Diesel
Цитата(saas @ 01.12.2017, 02:53) *
Да и вопрос немного не про это.

#Shoкer_Sin_RTwitty_Придите biggrin.gif
SkyLoader
Цитата(saas @ 30.11.2017, 23:39) *
Но почему-то не для всех, трассеры от пуль рисуются UIRender'ом. Почему так сделали?

Интересная тема, я тоже этого не понял. Отрисовываются они иногда некорректно из-за этого, игнорируют постэффекты и накладываются на них. Можно попробовать переделать их рендеринг в какую-то отдельную стадию.
А по хорошему надо делать отдельный класс рендеринга трассеров в библиотеке рендера.
ForserX
Тут такой забавно момент нашёл, когда МП чистил. В движке нет ассертов на клавиши в текстах. То есть: если вы хотите вывести, на какую клавишу забиндено то или иное действие и допустите ошибку в названии, словите исключение.
RayTwitty
Цитата(KrivoRuk @ 21.11.2017, 10:36) *
Как я понял - надо смотреть в "xrGame\ui\UIXmlInit.cpp" функция:

Не только здесь - UIXmlInit просто читает xml и создает объект, передавая в конструктор (или через методы класса) прочитанные данные. То есть, таким образом производится первоначальная установка параметров.
Сама реализация различных фич, как правило, находится внутри конкретного класса. Тебе нужно написать код, который при инициализации окна будет запускать рандом, после чего искать и устанавливать текстуру по шаблону: <путь_до_текстуры>_<сгенерированное_число>.

Там кстати могут быть нюансы, насколько я помню, объекты в главном меню создаются один раз при старте игры. Тогда придется тоже самое делать на события показа меню (метод Show).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.