Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
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
Цитата(Neo][ @ 16.05.2018, 12:22) *

И покажи оригинальное сообщение об ошибке



Цитата(Neo][ @ 16.05.2018, 12:22) *

. А что значит временно цепанул либы от 2015?
Цитата
I also need to link with the libraries vcruntimed.lib and ucrtd.lib.
Все они от пакета 140 компиляторов

Цитата(abramcumner @ 16.05.2018, 14:20) *
OpenAlSoft?

Тогда бы выбивало на нём. Он же динамечиский у нас. Косяк либо в sound_static.lib, либо в самом xrSound.
abramcumner
Цитата(ForserX @ 16.05.2018, 15:32) *
vcruntimed.lib and ucrtd.lib

Я бы сказал, все они из debug-конфигурации. Откуда взяли sound_static.lib?
ForserX
Цитата(abramcumner @ 16.05.2018, 15:53) *
Откуда взяли sound_static.lib?

Ворбисы и прочая дрянь. Можно собрать в 3rd-party.sln
Zagolski
Попробуй собери новую эту библиотеку в этой же студии. Собранные в другой могут косячить.
ForserX
Zagolski, если бы у меня стояла последняя студия, я бы уже такие методы перепробовал. Тут у Винтаря(Аля ФЗ) проблема. Но, в целом, я позимичил немного с конфигами проектов. Если не поможет, буду уже сам обновляться и нормально разбираться.
-StalkMen-
Цитата(abramcumner @ 16.05.2018, 14:20) *
Xottab_DUTY хочет ускорить построение этого дерева, -StalkMen- предлагает в level.cform хранить сразу сериализованное дерево OPCODE.

Замутить асинхронную загрузку пред компилированного дерева biggrin.gif
А вообще конечно надо чанки..
Pavel_Blend
Всем привет. Кто нибудь может подсказать одну вещь. Я C++ не знаю.

В файле LEVEL есть чанк 0x3, который хранит визуалы в формате OGF. Некоторые визуалы/OGF имеют чанк 0xc (этот чанк есть у Multiple Usage объектов), который хранит данные о трансформации MU-модели. Эти данные представляют собой 16 чисел float (ну или матрица 4x4 из float чисел). Из этих данных удалось вычислить позицию MU-модели. Я обозначил её T, а всё что не известно X:

XXXX
XXXX
XXXX
TTTX

Можете подсказать, как из этой матрицы извлечь масштаб и поворот?
abramcumner
Цитата(Pavel_Blend @ 07.06.2018, 16:35) *
Можете подсказать, как из этой матрицы извлечь масштаб и поворот?

http://compgraph.tpu.ru/3d.htm
Pavel_Blend
abramcumner, а как сделать преобразование такой матрицы в значения, которые были введены в СДК? Мне нужно получить позицию XYZ, поворот XYZ и масштаб XYZ.
abramcumner
Цитата(Pavel_Blend @ 07.06.2018, 17:24) *
abramcumner, а как сделать преобразование такой матрицы в значения, которые были введены в СДК? Мне нужно получить позицию XYZ, поворот XYZ и масштаб XYZ.

А какой у тебя АПИ под руками? В здмакс есть decomp_affine.
Молния в вакууме
abramcumner, я думаю у него Blender biggrin.gif

Там тоже есть функция разложения матрицы: https://docs.blender.org/api/blender_python...atrix.decompose
Только как именно использовать не подскажу, питон не знаю.
Pavel_Blend
Цитата(abramcumner @ 07.06.2018, 21:06) *
Цитата(Pavel_Blend @ 07.06.2018, 17:24) *
abramcumner, а как сделать преобразование такой матрицы в значения, которые были введены в СДК? Мне нужно получить позицию XYZ, поворот XYZ и масштаб XYZ.

А какой у тебя АПИ под руками? В здмакс есть decomp_affine.

да, у меня блендер.
abramcumner
Цитата(Pavel_Blend @ 07.06.2018, 20:22) *
да, у меня блендер.

Забыл smile.gif

Вроде вот для блендера:
Код
t, r, s = matrix.decompose()
eul = r.to_euler('XYZ')
Pavel_Blend
В блендере есть функции у матриц to_euler, to_scale, to_translation, но они почему-то выдают совсем левые значения. Может это из-за различий в системе координат?

Я создаю матрицу и не меняю местами элементы, может нужно в другом порядке матрицу записывать (чтобы компенсировать различия в системе координат)?

Я записал так:

transform_matrix = mathutils.Matrix((
(t[0], t[1], t[2], t[3]),
(t[4], t[5], t[6], t[7]),
(t[8], t[9], t[10], t[11]),
(t[12], t[13], t[14], t[15])
))

где t - это матрица трансформаций

в итоге у меня получилась матрица, но когда я вызываю transform_matrix.decompose(), то получаю совсем левые значения масштаба. Поворот тоже вроде левый (пока не проверял).
abramcumner
А позицию выдает правильную?
Попробуй транспонировать матрицу, а потом декомпоз делать.

Цитата
Я создаю матрицу и не меняю местами элементы, может нужно в другом порядке матрицу записывать (чтобы компенсировать различия в системе координат)?

На ум приходит только поменять столбцы со строками. Транспонирование как раз это делает.
Pavel_Blend
abramcumner, транспонировал матрицу и всё получилось. Спасибо. Наконец-то теперь правильно будут импортироваться деревья. Чтобы удобнее в блендере анимировать камеру и создавать anm файлы (а то в слепую анимировать не получается без деревьев, вечно врезаешься в них).
John_Wick
Привет помогите решить проблему с вылетом собрал двиг ЧН при создании новой игры получаю вот такой вылет
Expression : fatal error
Function : CScriptEngine::lua_pcall_failed
File : ..\xrServerEntities\script_engine.cpp
Line : 192
Description : <no expression>
Arguments : LUA error: ...l.k.e.r. clear sky\gamedata\scripts\smart_terrain.script:330: attempt to index global 'gulag_general' (a nil value)

abramcumner
Цитата(John_Wick @ 09.06.2018, 09:29) *
Arguments : LUA error: ...l.k.e.r. clear sky\gamedata\scripts\smart_terrain.script:330: attempt to index global 'gulag_general' (a nil value)

Скорее всего где-то выше по логу есть сообщение об ошибке в gulag_general.script.
Попробуй в файле gulag_general.script в строке 1149 удалить слеш перед scripts.
John_Wick
Привет всем маленький вопросик как реализовать линзы для прицеливание как в моде от шокера не подскажите или где примерно копать?
ForserX
John_Wick, репозиторий шокера смотри. Мы в окси себе утащили эти линзы.
John_Wick
Можешь дать ссылку на репозиторий ?
ForserX
John_Wick, в шапке всё.
Zagolski
Я у себя линзы (двойной рендер) сделал иначе, практически без падения скорости (что-то около 5% падает) и без задержек кадров. Шокеровский вариант все же сильно режет скорость, раза в два.
Если кратко, то никакие кадры мы не пропускаем, а рендерим два раза за фрейм. Сначала в основной рендертаргет, затем в дополнительный. При этом наш рендертаргет вдвое меньше по высоте, вчетверо меньше пикселей, и соответственно, вчетверо быстрее обработка. Больше разрешение не нужно, потому как линза один фиг только половину экрана занимает.
Там же отключаем отрисовку худа и остальное по желанию, что не нужно (например, рендер фларов от солнца). FOV меняем в начале второго прохода трансформацией матрицы, а отрисовку трассеров переносим из Level() в первый и второй проход рендера.
AndreySol
У меня такой вопрос: кто подскажет, в каком классе(классах) смотреть то, что касается взаимодействия актера с шейпами объектов(с аномалиями\рестрикторами\переходами) ?
Neo][
AndreySol, в классах реализующих эти объекты(CCustomZone/хз/CLevelChanger)

Метод обновления, вызываемый шедулером, по-моему schedule_Update называется
mortan
Цитата(Zagolski @ 13.06.2018, 13:59) *
Я у себя линзы (двойной рендер) сделал иначе, практически без падения скорости (что-то около 5% падает) и без задержек кадров. Шокеровский вариант все же сильно режет скорость, раза в два.
Если кратко, то никакие кадры мы не пропускаем, а рендерим два раза за фрейм. Сначала в основной рендертаргет, затем в дополнительный. При этом наш рендертаргет вдвое меньше по высоте, вчетверо меньше пикселей, и соответственно, вчетверо быстрее обработка. Больше разрешение не нужно, потому как линза один фиг только половину экрана занимает.
Там же отключаем отрисовку худа и остальное по желанию, что не нужно (например, рендер фларов от солнца). FOV меняем в начале второго прохода трансформацией матрицы, а отрисовку трассеров переносим из Level() в первый и второй проход рендера.

ну и смысл хвастаться-то тогда без кода?) ну молодец конечно, только пользы от этого для моддинга никакой, если и дальше будет тенденция ныкать наработки по своим подвалам.
SkyLoader
mortan, почему пользы никакой? Там есть совет, как это сделать более оптимально. Правда если уменьшен только один выходной рендертаргет, а не все рендертаргеты g-буфера, то прирост будет совсем небольшим.
Supple Hope
А что, если рендертаргет вне линзы тоже рендерить с меньшим разрешением и мылить? Всё равно эта часть картинки вне фокуса.
atanda
Цитата(Hoyt Ridge @ 14.06.2018, 17:05) *
с меньшим разрешением и мылить

А разве не большая нагрузка будет?
Zagolski
Цитата(SkyLoader @ 14.06.2018, 16:14) *
mortan, Правда если уменьшен только один выходной рендертаргет, а не все рендертаргеты g-буфера, то прирост будет совсем небольшим.

Вчера на дефолтном R2 сделал этот способ, действительно жрет скорость раза в два. Нужно оптимизировать. Да, из-за G-буфера... Посему получается, что тот способ, который я расписал выше, на дефолтной динамике не особо подходит.
Просто я у себя (для NLC 7 HSM) пилю новый рендер на базе статики (взял как базу), так сказать R5, по всем современным стандартам. Но у меня там не совсем отложенное затенение.

Постараюсь оптимизировать под R2 и выше и выложить код. Кто, как не мы сделаем Cталкер лучше? На нас, модмейкеров и движкоковерятелей вся надежда. smile.gif Никто не собирается ни от кого таить наработки, ну разве что некоторые. Недавно анонсированный Сталкер 2 обещает быть мультиплеерной хренью, как и Fallout 76 (они там что, сговорились меж собой?). У нас сейас есть подобное - Тарков, но никак не Сталкер.
mortan
Цитата(SkyLoader @ 14.06.2018, 16:14) *
mortan, почему пользы никакой? Там есть совет, как это сделать более оптимально. Правда если уменьшен только один выходной рендертаргет, а не все рендертаргеты g-буфера, то прирост будет совсем небольшим.

спасибо за пояснение
mortan
Цитата(Zagolski @ 15.06.2018, 15:06) *
Постараюсь оптимизировать под R2 и выше и выложить код. Кто, как не мы сделаем Cталкер лучше? На нас, модмейкеров и движкоковерятелей вся надежда. smile.gif Никто не собирается ни от кого таить наработки, ну разве что некоторые. Недавно анонсированный Сталкер 2 обещает быть мультиплеерной хренью, как и Fallout 76 (они там что, сговорились меж собой?). У нас сейас есть подобное - Тарков, но никак не Сталкер.

А вот это уже правильно. Пора уже разрушить капитализм в среде программирования biggrin.gif
Молния в вакууме
Цитата(mortan @ 15.06.2018, 16:09) *
А вот это уже правильно. Пора уже разрушить капитализм в среде программирования biggrin.gif

Верной дорогой идёте, товарищи!
AndreySol
У меня такой вопрос: кто подскажет, в каком классе(классах) смотреть то, что касается взаимодействия актера с шейпами объектов(с аномалиями\рестрикторами\переходами) ?
Молния в вакууме
AndreySol, да ты же бот. Ты уже задавал такой вопрос, и тебе на него даже ответили.
Xottab_DUTY
Вынес зашитый в движок экран загрузки в XML. Теперь его, наконец-то, можно легко его изменять!
Кому интересно, можете посмотреть здесь, а кому интересно, как это было сделано – код в репозитории на Github.
Zagolski
Рендерить 3d static корректно на динамике все же можно. Тут нужно создать новый тип в графе для наших 3д объектов и отсеивать их туда из Draw самого CUI3dStatic. Ну и после отрисовки UI пускать на отрисовку наши 3д объекты. Все работает как надо.
Нам ведь нужно, чтобы объекты поверх UI показывались, как в билде. Либо можно их рендерить из CGameObject или из HUDManager, в этом случае они и так рендерятся без проблем. Но разумеется, поверх UI они отрисовываться не будут, только за ним. В этом случае можно сделать как в Скайриме, прямо в мире в пустом окне.
Не работает он на динамике по дефолту, потому как там отложенный рендер, а в нем сцена задолго до UI создается. На статике forward рендер, там этих проблем нет.

По поводу другого вида двойного рендера на оптику, о котором я писал выше, то на динамике R4 падение скорости ровно на 45% (55 фпс из 100) при одинаковой по качеству картинке (в линзе и вне). Не больше и не меньше. Изменение разрешения рендертаргетов роли не играет. Тут опять косяк deferred shading и ничего не сделать. Остается только добавлять новые каналы в G-Buffer (сколько их, восемь вроде на дх11 можно через MRT делать?). Тут главное снизить разрешение картинки вдвое по высоте, чтобы падение скорости было минимально.
Но в любом случае выигрыш есть даже так по сравнению с шокеровским способом, в первую очередь это отсутствие рассинхронизации кадров. Да и фпс побольше, чем там при 1:1. Да и кода меньше.
Молния в вакууме
Надысь собрал xrSE_Factory через MinGW и столкнулся сразу с двумя непонятными проблемами.

Первая проблема это ошибка ЛУА 'setfenv' cannot change environment of given object. Происходит ошибка при вызове setfenv с единицей в первом параметре и (внимание!) только при загруженном xrCore или ещё чём-то от движка. Отдельно от движка всё зашибись. Ладно, опытным путём выяснил что ошибка появляется только при загрузке xrCore с инициализацией файловой системы, заменил LocatorAPI на ELocatorAPI, и ошибка пропала. Всё, вроде бы решил. Но не тут то было. При загрузке xrSE_Factory в ЛЕ ошибка появилась вновь. Дальше собрал ETools борландом, чтобы xrCore использовался только xrSE_Factory, для чистоты экспиремента, и стал пробовать загружать его из разных мест в коде. Дошел до того, что он нормально работает только если был загружен до загрузки погоды, а именно до такой строчки как R_ASSERT(_valid(sun_dir)).
Всё интереснее и интереснее.
Короче много чего я ещё пробовал. Пробовал обновлять луаджит с 5.1.3 до 5.1.4 версии, пробовал обычный луа, результат не менялся.
А помогла только сборка луадижта другой вресией GCC. А именно TDM 4.9.2. В более новых версиях которыми я пробовал собирать (4.9.4, TDM 5.1.0, 5.4.0, 6.4.0, 7.3.0, 8.1.0) эта ошибка есть.

Вот и как понимать эту наркоманию? Я такой везучий и опять нарвался на ошибку в компиляторе, которую много лет никто не замечает или всё-таки что-то где-то портит память или ещё какая бяка?

Вторая проблема с тем, что в IPropHelper для передачи строк используется shared_str. И почему-то от xrse_factory собранного GCC ЛЕ вместо ключей получает какой-то мусор. ИЧСХ, в остальных случаях shared_str ведёт себя нормально. Стоит ли вообще выяснять причину или просто переделать этот интерфейс на использование обычных C-шных строк? С моей точки зрения передавать shared_str как-то не очень аккуратно, т.к. это по сути указатель на контейнер, которым управляет xrCore, а xrCore в нашем случае два разных(xrSE_Factory использует xrCore собранный GCC, ЛЕ использует собранный борландом). Хотя у ПЫСов такой трюк прокатывал.
Молния в вакууме
Цитата(СамСебеСекретарша @ 09.07.2018, 16:28) *
Вторая проблема с тем, что в IPropHelper для передачи строк используется shared_str. И почему-то от xrse_factory собранного GCC ЛЕ вместо ключей получает какой-то мусор.

С этим разобрался. Как выяснилось это никакой не баг, просто разработчики GCC и разработчики борланда мыслят немного в разных плоскостях. GCC при передаче класса по значению создаёт его копию в стеке и передаёт функции указатель на эту копию, борланд передаёт без указателя.

Уот так уот kozak.gif
Neo][
СамСебеСекретарша, ABI hell smile.gif Элементы срр не переносимы между компиляторами, для пересечения границ можно использовать только С-шные конструкции.

Либо COM интерфейсы
Молния в вакууме
Цитата(Neo][ @ 10.07.2018, 09:45) *

Либо COM интерфейсы

Только и остаётся.
Но я пока решил ничего сильно не менять, а просто передавать shared_str ссылками.

С луа тоже разобрался. Оказывается его нужно собирать с -std=c90. Причина странного поведения всё-ровно не ясна, но такое решение меня уже устраивает laugh.gif
atanda
Цитата(СамСебеСекретарша @ 10.07.2018, 17:41) *
Оказывается его нужно собирать с -std=c90

Методом тыка проверял или узнал где? smile.gif
Молния в вакууме
buffy, методом тыка.
AndreySol
А можете объяснить назначение xrSE_Factory в движке ? Он присутствует и в игре и в СДК, в чем его роль и смысл ?
Diesel
AndreySol, если речь о делке, то в игре такой нет. Там какая то фигня находится, что то типа библиотеки с определением классов или хрен его знает - запамятовал. Сейчас придут гуры и объяснят нам.
Молния в вакууме
Цитата(Expropriator @ 11.07.2018, 22:18) *
AndreySol, если речь о делке, то в игре такой нет. Там какая то фигня находится, что то типа библиотеки с определением классов или хрен его знает - запамятовал. Сейчас придут гуры и объяснят нам.

В игре код из этой либы находится в xrGame.

Эта штука позволяет создавать серверные объекты. Я точно не скажу что это такое, не вникал как этот ваш алайф работает.
Редактором уровней используется для чтения/записи спауна. Там же составляется список свойств объекта для редактора.

Вроде больше ничего xrSE_factory и не умеет.
Diesel
СамСебеСекретарша, я так и думал. Тама алспавн юзается.
ForserX
Цитата(СамСебеСекретарша @ 11.07.2018, 23:00) *
Вроде больше ничего xrSE_factory и не умеет.

Именно. В основном используется в xrAI.
Diesel
Летим шпилить онлайн с картами ЧН?

Я новый проект начал. Чую скоро закончу.
Молния в вакууме
Expropriator, летом скука смертная. Так что давай попробуем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.