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
16.05.2018, 15:53
Цитата(ForserX @ 16.05.2018, 15:32)
vcruntimed.lib and ucrtd.lib
Я бы сказал, все они из debug-конфигурации. Откуда взяли sound_static.lib?
ForserX
16.05.2018, 16:00
Цитата(abramcumner @ 16.05.2018, 15:53)
Откуда взяли sound_static.lib?
Ворбисы и прочая дрянь. Можно собрать в 3rd-party.sln
Zagolski
16.05.2018, 16:24
Попробуй собери новую эту библиотеку в этой же студии. Собранные в другой могут косячить.
ForserX
16.05.2018, 17:04
Zagolski, если бы у меня стояла последняя студия, я бы уже такие методы перепробовал. Тут у Винтаря(Аля ФЗ) проблема. Но, в целом, я позимичил немного с конфигами проектов. Если не поможет, буду уже сам обновляться и нормально разбираться.
-StalkMen-
16.05.2018, 17:51
Цитата(abramcumner @ 16.05.2018, 14:20)
Xottab_DUTY хочет ускорить построение этого дерева, -StalkMen- предлагает в level.cform хранить сразу сериализованное дерево OPCODE.
Замутить асинхронную загрузку пред компилированного дерева А вообще конечно надо чанки..
Pavel_Blend
07.06.2018, 16:35
Всем привет. Кто нибудь может подсказать одну вещь. Я C++ не знаю.
В файле LEVEL есть чанк 0x3, который хранит визуалы в формате OGF. Некоторые визуалы/OGF имеют чанк 0xc (этот чанк есть у Multiple Usage объектов), который хранит данные о трансформации MU-модели. Эти данные представляют собой 16 чисел float (ну или матрица 4x4 из float чисел). Из этих данных удалось вычислить позицию MU-модели. Я обозначил её T, а всё что не известно X:
XXXX XXXX XXXX TTTX
Можете подсказать, как из этой матрицы извлечь масштаб и поворот?
abramcumner
07.06.2018, 17:12
Цитата(Pavel_Blend @ 07.06.2018, 16:35)
Можете подсказать, как из этой матрицы извлечь масштаб и поворот?
abramcumner, а как сделать преобразование такой матрицы в значения, которые были введены в СДК? Мне нужно получить позицию XYZ, поворот XYZ и масштаб XYZ.
abramcumner
07.06.2018, 20:06
Цитата(Pavel_Blend @ 07.06.2018, 17:24)
abramcumner, а как сделать преобразование такой матрицы в значения, которые были введены в СДК? Мне нужно получить позицию XYZ, поворот XYZ и масштаб XYZ.
abramcumner, а как сделать преобразование такой матрицы в значения, которые были введены в СДК? Мне нужно получить позицию XYZ, поворот XYZ и масштаб XYZ.
t, r, s = matrix.decompose() eul = r.to_euler('XYZ')
Pavel_Blend
07.06.2018, 20:46
В блендере есть функции у матриц to_euler, to_scale, to_translation, но они почему-то выдают совсем левые значения. Может это из-за различий в системе координат?
Я создаю матрицу и не меняю местами элементы, может нужно в другом порядке матрицу записывать (чтобы компенсировать различия в системе координат)?
в итоге у меня получилась матрица, но когда я вызываю transform_matrix.decompose(), то получаю совсем левые значения масштаба. Поворот тоже вроде левый (пока не проверял).
abramcumner
07.06.2018, 20:52
А позицию выдает правильную? Попробуй транспонировать матрицу, а потом декомпоз делать.
Цитата
Я создаю матрицу и не меняю местами элементы, может нужно в другом порядке матрицу записывать (чтобы компенсировать различия в системе координат)?
На ум приходит только поменять столбцы со строками. Транспонирование как раз это делает.
Pavel_Blend
07.06.2018, 21:17
abramcumner, транспонировал матрицу и всё получилось. Спасибо. Наконец-то теперь правильно будут импортироваться деревья. Чтобы удобнее в блендере анимировать камеру и создавать anm файлы (а то в слепую анимировать не получается без деревьев, вечно врезаешься в них).
John_Wick
09.06.2018, 09:29
Привет помогите решить проблему с вылетом собрал двиг ЧН при создании новой игры получаю вот такой вылет 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
09.06.2018, 10:49
Цитата(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
12.06.2018, 12:20
Привет всем маленький вопросик как реализовать линзы для прицеливание как в моде от шокера не подскажите или где примерно копать?
ForserX
12.06.2018, 19:19
John_Wick, репозиторий шокера смотри. Мы в окси себе утащили эти линзы.
John_Wick
13.06.2018, 11:22
Можешь дать ссылку на репозиторий ?
ForserX
13.06.2018, 11:34
John_Wick, в шапке всё.
Zagolski
13.06.2018, 13:59
Я у себя линзы (двойной рендер) сделал иначе, практически без падения скорости (что-то около 5% падает) и без задержек кадров. Шокеровский вариант все же сильно режет скорость, раза в два. Если кратко, то никакие кадры мы не пропускаем, а рендерим два раза за фрейм. Сначала в основной рендертаргет, затем в дополнительный. При этом наш рендертаргет вдвое меньше по высоте, вчетверо меньше пикселей, и соответственно, вчетверо быстрее обработка. Больше разрешение не нужно, потому как линза один фиг только половину экрана занимает. Там же отключаем отрисовку худа и остальное по желанию, что не нужно (например, рендер фларов от солнца). FOV меняем в начале второго прохода трансформацией матрицы, а отрисовку трассеров переносим из Level() в первый и второй проход рендера.
AndreySol
14.06.2018, 13:53
У меня такой вопрос: кто подскажет, в каком классе(классах) смотреть то, что касается взаимодействия актера с шейпами объектов(с аномалиями\рестрикторами\переходами) ?
Neo][
14.06.2018, 14:31
AndreySol, в классах реализующих эти объекты(CCustomZone/хз/CLevelChanger)
Метод обновления, вызываемый шедулером, по-моему schedule_Update называется
mortan
14.06.2018, 15:14
Цитата(Zagolski @ 13.06.2018, 13:59)
Я у себя линзы (двойной рендер) сделал иначе, практически без падения скорости (что-то около 5% падает) и без задержек кадров. Шокеровский вариант все же сильно режет скорость, раза в два. Если кратко, то никакие кадры мы не пропускаем, а рендерим два раза за фрейм. Сначала в основной рендертаргет, затем в дополнительный. При этом наш рендертаргет вдвое меньше по высоте, вчетверо меньше пикселей, и соответственно, вчетверо быстрее обработка. Больше разрешение не нужно, потому как линза один фиг только половину экрана занимает. Там же отключаем отрисовку худа и остальное по желанию, что не нужно (например, рендер фларов от солнца). FOV меняем в начале второго прохода трансформацией матрицы, а отрисовку трассеров переносим из Level() в первый и второй проход рендера.
ну и смысл хвастаться-то тогда без кода?) ну молодец конечно, только пользы от этого для моддинга никакой, если и дальше будет тенденция ныкать наработки по своим подвалам.
SkyLoader
14.06.2018, 16:14
mortan, почему пользы никакой? Там есть совет, как это сделать более оптимально. Правда если уменьшен только один выходной рендертаргет, а не все рендертаргеты g-буфера, то прирост будет совсем небольшим.
Supple Hope
14.06.2018, 17:05
А что, если рендертаргет вне линзы тоже рендерить с меньшим разрешением и мылить? Всё равно эта часть картинки вне фокуса.
atanda
14.06.2018, 20:33
Цитата(Hoyt Ridge @ 14.06.2018, 17:05)
с меньшим разрешением и мылить
А разве не большая нагрузка будет?
Zagolski
15.06.2018, 15:06
Цитата(SkyLoader @ 14.06.2018, 16:14)
mortan, Правда если уменьшен только один выходной рендертаргет, а не все рендертаргеты g-буфера, то прирост будет совсем небольшим.
Вчера на дефолтном R2 сделал этот способ, действительно жрет скорость раза в два. Нужно оптимизировать. Да, из-за G-буфера... Посему получается, что тот способ, который я расписал выше, на дефолтной динамике не особо подходит. Просто я у себя (для NLC 7 HSM) пилю новый рендер на базе статики (взял как базу), так сказать R5, по всем современным стандартам. Но у меня там не совсем отложенное затенение.
Постараюсь оптимизировать под R2 и выше и выложить код. Кто, как не мы сделаем Cталкер лучше? На нас, модмейкеров и движкоковерятелей вся надежда. Никто не собирается ни от кого таить наработки, ну разве что некоторые. Недавно анонсированный Сталкер 2 обещает быть мультиплеерной хренью, как и Fallout 76 (они там что, сговорились меж собой?). У нас сейас есть подобное - Тарков, но никак не Сталкер.
mortan
15.06.2018, 15:15
Цитата(SkyLoader @ 14.06.2018, 16:14)
mortan, почему пользы никакой? Там есть совет, как это сделать более оптимально. Правда если уменьшен только один выходной рендертаргет, а не все рендертаргеты g-буфера, то прирост будет совсем небольшим.
спасибо за пояснение
mortan
15.06.2018, 16:09
Цитата(Zagolski @ 15.06.2018, 15:06)
Постараюсь оптимизировать под R2 и выше и выложить код. Кто, как не мы сделаем Cталкер лучше? На нас, модмейкеров и движкоковерятелей вся надежда. Никто не собирается ни от кого таить наработки, ну разве что некоторые. Недавно анонсированный Сталкер 2 обещает быть мультиплеерной хренью, как и Fallout 76 (они там что, сговорились меж собой?). У нас сейас есть подобное - Тарков, но никак не Сталкер.
А вот это уже правильно. Пора уже разрушить капитализм в среде программирования
Молния в вакууме
15.06.2018, 16:53
Цитата(mortan @ 15.06.2018, 16:09)
А вот это уже правильно. Пора уже разрушить капитализм в среде программирования
Верной дорогой идёте, товарищи!
AndreySol
15.06.2018, 17:51
У меня такой вопрос: кто подскажет, в каком классе(классах) смотреть то, что касается взаимодействия актера с шейпами объектов(с аномалиями\рестрикторами\переходами) ?
Молния в вакууме
15.06.2018, 17:53
AndreySol, да ты же бот. Ты уже задавал такой вопрос, и тебе на него даже ответили.
Xottab_DUTY
19.06.2018, 22:35
Вынес зашитый в движок экран загрузки в XML. Теперь его, наконец-то, можно легко его изменять! Кому интересно, можете посмотреть здесь, а кому интересно, как это было сделано – код в репозитории на Github.
Zagolski
22.06.2018, 08:35
Рендерить 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. Да и кода меньше.
Молния в вакууме
09.07.2018, 16:28
Надысь собрал 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, ЛЕ использует собранный борландом). Хотя у ПЫСов такой трюк прокатывал.
Молния в вакууме
10.07.2018, 01:51
Цитата(СамСебеСекретарша @ 09.07.2018, 16:28)
Вторая проблема с тем, что в IPropHelper для передачи строк используется shared_str. И почему-то от xrse_factory собранного GCC ЛЕ вместо ключей получает какой-то мусор.
С этим разобрался. Как выяснилось это никакой не баг, просто разработчики GCC и разработчики борланда мыслят немного в разных плоскостях. GCC при передаче класса по значению создаёт его копию в стеке и передаёт функции указатель на эту копию, борланд передаёт без указателя.
Уот так уот
Neo][
10.07.2018, 09:45
СамСебеСекретарша, ABI hell Элементы срр не переносимы между компиляторами, для пересечения границ можно использовать только С-шные конструкции.
Либо COM интерфейсы
Молния в вакууме
10.07.2018, 17:41
Цитата(Neo][ @ 10.07.2018, 09:45)
Либо COM интерфейсы
Только и остаётся. Но я пока решил ничего сильно не менять, а просто передавать shared_str ссылками.
С луа тоже разобрался. Оказывается его нужно собирать с -std=c90. Причина странного поведения всё-ровно не ясна, но такое решение меня уже устраивает
atanda
10.07.2018, 20:55
Цитата(СамСебеСекретарша @ 10.07.2018, 17:41)
Оказывается его нужно собирать с -std=c90
Методом тыка проверял или узнал где?
Молния в вакууме
10.07.2018, 21:20
buffy, методом тыка.
AndreySol
11.07.2018, 21:38
А можете объяснить назначение xrSE_Factory в движке ? Он присутствует и в игре и в СДК, в чем его роль и смысл ?
Diesel
11.07.2018, 22:18
AndreySol, если речь о делке, то в игре такой нет. Там какая то фигня находится, что то типа библиотеки с определением классов или хрен его знает - запамятовал. Сейчас придут гуры и объяснят нам.
Молния в вакууме
11.07.2018, 23:00
Цитата(Expropriator @ 11.07.2018, 22:18)
AndreySol, если речь о делке, то в игре такой нет. Там какая то фигня находится, что то типа библиотеки с определением классов или хрен его знает - запамятовал. Сейчас придут гуры и объяснят нам.
В игре код из этой либы находится в xrGame.
Эта штука позволяет создавать серверные объекты. Я точно не скажу что это такое, не вникал как этот ваш алайф работает. Редактором уровней используется для чтения/записи спауна. Там же составляется список свойств объекта для редактора.
Вроде больше ничего xrSE_factory и не умеет.
Diesel
11.07.2018, 23:17
СамСебеСекретарша, я так и думал. Тама алспавн юзается.
ForserX
12.07.2018, 01:39
Цитата(СамСебеСекретарша @ 11.07.2018, 23:00)
Вроде больше ничего xrSE_factory и не умеет.
Именно. В основном используется в xrAI.
Diesel
12.07.2018, 23:52
Летим шпилить онлайн с картами ЧН? Я новый проект начал. Чую скоро закончу.
Молния в вакууме
12.07.2018, 23:58
Expropriator, летом скука смертная. Так что давай попробуем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.