Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
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
macron
Цитата(v2v3v4 @ 29.05.2016, 09:17) *
зп чн тч

В ТЧ в консоли вводишь:
bind cam_1 kF1
bind cam_2 kF2
bind cam_3 kF3
bind cam_4 kF4 (четвертая только для режима наблюдателя)
Потом они запомнятся в user.ltx.

В ЧН/ЗП вроде все камеры в mp заблокированы. В сингле работали.

-psp в ТЧ работает, но стрелять будет неудобно.

Цитата(ZveroBoy95rus @ 29.05.2016, 13:21) *
и в добавок при использовании дают преимущество игрокам

Дык для того и нужны. laugh.gif
v2v3v4
Цитата(macron @ 29.05.2016, 14:56) *
Цитата(v2v3v4 @ 29.05.2016, 09:17) *
зп чн тч

В ТЧ в консоли вводишь:
bind cam_1 kF1
bind cam_2 kF2
bind cam_3 kF3
bind cam_4 kF4 (четвертая только для режима наблюдателя)
Потом они запомнятся в user.ltx.

В ЧН/ЗП вроде все камеры в mp заблокированы. В сингле работали.

-psp в ТЧ работает, но стрелять будет неудобно.

Цитата(ZveroBoy95rus @ 29.05.2016, 13:21) *
и в добавок при использовании дают преимущество игрокам

Дык для того и нужны. laugh.gif


ну вот мне и нужно их разблокировать, покопался в билдах, нашел несколько сборок подрелизных, где данные команды еще не заблочены в мп, но есть косяк в psp камере, при использовании автонаведения краш...
macron
Цитата(v2v3v4 @ 29.05.2016, 15:41) *
ну вот мне и нужно их разблокировать

Так бы сразу и сказал, что хочешь для ЧН/ЗП разблокировать внешнюю камеру. Только на этом форуме (впрочем, как и на большинстве остальных) кулхацкеры/программеры относятся к mp пренебрежительно и вряд ли помогут. Так что, в теории, можешь сам попробовать:

1. Самостоятельно сравнить xrgame.dll в билдах/релизе. Но разница, скорее всего, будет огромна.
2. Самостоятельно скомпилить чего угодно из исходников.
3. Поучаствовать в каком-нибудь проекте типа RoH.
4. Играть в ТЧ 1.0006 - всё работает, но карт мало. biggrin.gif
5. Играть в ТЧ 2.0006 - всё работает, карт много, но народу мало. laugh.gif
sergy172
Цитата(v2v3v4 @ 29.05.2016, 14:41) *

Перон из Сталкера Онлайн - сЗона?
v2v3v4
Цитата(macron @ 29.05.2016, 17:14) *
Цитата(v2v3v4 @ 29.05.2016, 15:41) *
ну вот мне и нужно их разблокировать

Так бы сразу и сказал, что хочешь для ЧН/ЗП разблокировать внешнюю камеру. Только на этом форуме (впрочем, как и на большинстве остальных) кулхацкеры/программеры относятся к mp пренебрежительно и вряд ли помогут. Так что, в теории, можешь сам попробовать:

1. Самостоятельно сравнить xrgame.dll в билдах/релизе. Но разница, скорее всего, будет огромна.
2. Самостоятельно скомпилить чего угодно из исходников.
3. Поучаствовать в каком-нибудь проекте типа RoH.
4. Играть в ТЧ 1.0006 - всё работает, но карт мало. biggrin.gif
5. Играть в ТЧ 2.0006 - всё работает, карт много, но народу мало. laugh.gif

Который раз пытаешься доказать что сетевая в столкире мертва, а я очередной фанатик по ней, да еще и пытающийся получить преимущество в виде камер 2st-3st-psp, но нет, здесь все немного иначе, и не какие там roh меня не интересуют.

Цитата(sergy172 @ 29.05.2016, 17:41) *
Цитата(v2v3v4 @ 29.05.2016, 14:41) *

Перон из Сталкера Онлайн - сЗона?

Ну как видишь, карта и моделька перса именно оттуда.. biggrin.gif
Borovos
Hello dear modders,

I'm coming to you about old vegetal anomalies as ameba & liana.

I know they are working fine in SoC engine. But GSC deleted the Z_ameba class for CoP engine.
I try to use the burning fuzz class & it works, I can spawn anomalies. But it's not fine. In fact, there is no collision between the actor/monsters and the anomaly mesh.
And they are not reacting to bolt too.

There is only the hit, the particles & the sounds related to the entrance in the shape. Nothing more, the actor can pass through the anomaly without problem.

Alundaio is trying to restore this class as I give him amebzone.cpp and amebazone.h.
But there is something wrong related to physics when he add them in CoP OpenXray.

This is:
QUOTE
burning fuzz and rusty hair use hairzone.h and hairzone.cpp
i fixed issues with the ameba.cpp but still get weird physics errors
Error 1 error C2373: 'BoneCallbackFun' : redefinition; different type modifiers e:\stalker\x-ray source\x_ray_coc\xray-16\src\xrphysics\physicsexternalcommon.h 14 1 xrGame

Don't make sense to me because #pragma once is at the top
probably one of the headers. So i will just remove them and add them one by one as needed to see


it's look like GSC make changes related to physics between SoC & CS/CoP.

Is there someone here who try to restore this old anomalies on CoP engine? perhaps do you have the response.

Thanks you

PS: as I'm talking about anomalies, somebody knows why npc are not reacting to anomalies in CoP?
Карлан
Кто-то пробовал менять полностью LuaJIT на современный (2.0.4)? Мы натолкнулись на несколько забавные и непонятные (с т.з. логики) вещи, которые делают его в принципе неспособным к использованию (из-за явных изменений в алгоритмах lua, причем проверили и в самом по себе lua все в порядке, т.е. дело исключительно в LuaJIT), в техподдержке разрабы (LuaJIT) нафиг отослали (сказали что у нас руки кривые, а у них все отлично), но с ним скрипты работают конечно в несколько раз быстрее, поэтому хочу спросить у сообщества, а то придется в долгий ящик откладывать.

Для идентификации сразу укажу, что очевидные проблемы с полем table, из-за одного алгоритма в с++ летят практически все функции поля. Практически в игре этого разумеется не видно, ошибки потенциальны, но, в конечном итоге, неизбежны.
abramcumner
Цитата(Карлан @ 30.05.2016, 14:16) *
Кто-то пробовал менять полностью LuaJIT на современный (2.0.4)?

Я менял.

Цитата
Для идентификации сразу укажу, что очевидные проблемы с полем table, из-за одного алгоритма в с++ летят практически все функции поля. Практически в игре этого разумеется не видно, ошибки потенциальны, но, в конечном итоге, неизбежны.

Скрипты ЗП вроде нормально работают.

Попробуй на движке из этого поста воспроизвести.
Карлан
abramcumner, не имею возможности протестировать на ЗП, если не сложно, воспроизведи самый простой код:
Код
t = {1,nil,2}
log1(tostring(table.getn(t)))

И скажи, что напишет лог на стандартном и на обновленном.
abramcumner
Так это в луа 5.1 поведение поменялось:
Цитата
Function table.setn was deprecated. Function table.getn corresponds to the new length operator (#); use the operator instead of the function. (See compile-time option LUA_COMPAT_GETN in luaconf.h.)

Можно попоробовать дефайн поискать.
Карлан
Поставь решетку, не принципиально, важен результат функции. Для проверки можно и insert использовать, и remove, с получением длины все проще и нагляднее выходит, поэтому я и привел такой код. Попробуй log1(tostring(#t)).
abramcumner
Просто смогу посмотреть только вечером.
Если дело в том, что раньше getn возвращал 3, а теперь 1. То так и должно быть.
RayTwitty
Цитата(Карлан @ 30.05.2016, 14:16) *
натолкнулись на несколько забавные и непонятные

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

Мне кажется закрывать на это глаза крайне безрассудно, поэтому мы пока откатились на ранний вариант LuaJIT.

Еще отметил, что теперь компилятор не пропускает сишные комментарии в скриптах, вот это скорее плюс.

Цитата(RayTwitty @ 30.05.2016, 16:46) *

Могу ошибаться, но возможно дело в настройках проекта, как я помню там для разных настроек решения были выставлены разные константы, возможно от 6 к 7 они были изменены.
abramcumner
Цитата(Карлан @ 30.05.2016, 15:49) *
Мне кажется закрывать на это глаза крайне безрассудно, поэтому мы пока откатились на ранний вариант LuaJIT.

В доке на луа все же описано. Хотите старого поведения и не хотите ставить дефайн(или его из луаджита уже выпилили), переопределите оператор __len для таблиц.
На мой взгляд работать с insert/remove и иметь в таблице nil`ы - вот нарушение принципов луа smile.gif

Цитата
Еще отметил, что теперь компилятор не пропускает сишные комментарии в скриптах, вот это скорее плюс.

Это ГСЦ специально дописывала, можно вернуть.
Карлан
Хорошо, спасибо, будем разбираться.

Цитата(abramcumner @ 30.05.2016, 16:54) *
На мой взгляд работать с insert/remove и иметь в таблице nil`ы - вот нарушение принципов луа smile.gif

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

Tron
Цитата(Borovos @ 30.05.2016, 00:38) *
Error 1 error C2373: 'BoneCallbackFun' : redefinition; different type modifiers e:\stalker\x-ray source\x_ray_coc\xray-16\src\xrphysics\physicsexternalcommon.h 14 1 xrGame

You need check duplicates of "BoneCallbackFun".
macron
Цитата(Borovos @ 30.05.2016, 01:38) *
In fact, there is no collision between the actor/monsters and the anomaly mesh.
There is only the hit, the particles & the sounds related to the entrance in the shape. Nothing more, the actor can pass through the anomaly without problem.

But in SoC they are passable too, and also have just shape reaction without model collision. I think it depends on the material of bones of anomaly. Try to change bone material with ActorEditor.

Цитата(Borovos @ 30.05.2016, 01:38) *
And they are not reacting to bolt too.

Bolt reaction depends on the config settings of anomaly. Find and set to "false":

ignore_nonalive = false;
ignore_small = false;
ignore_artefacts = false;
Borovos
Tron & Macron, thanks you

I transfer the information about duplicate to Alundaio.

About the ltx, you're right Macron, I have this:
ignore_nonalive = false
ignore_small = false
ignore_artefacts = true

I'll test it. For me, a bolt is as a wpn, not as artefact. With not.

About game mtl, I was thinking about it too. But I think it can generate another problem. As example, I applied a wood texture to ameba, I can try to replace default game mtl by a wood material, but I think npc will collide with the mesh.
As npc who collide with a physic_destroyable_object wood box, as they doesn't see the spawn. They follow the aimap, they doesn't react to anomaly or die, and they are stop by it.

About collision between actor and mesh, I was sure about it. As I remember in OGSE 0.6.92 or NLC6. Probably I'm wrong.
Perhaps it's related to the ltx. In my own one, I have no max_velocity_in_zone value as there was in SoC and my hit_impulse is different too.

Best regards

Edit:
Good. Alundaio generated a new xrGame.dll during night. I can use old Z_AMEBA Class with the zone_ameba.ltx from SoC.
So, the anomaly slow down the movement of player and it's look like a instakill. A bit too much.

In fact, there is no collision between actor and mesh. Only a zone "effect".
And you're right Macron, with ignore_artefacts = false, the anomaly react to bolt.

It's perfect. Now, I only have to found good textures, sounds and particles to generate a lot of variation.

Thanks guys.
RayTwitty
Цитата(Borovos @ 30.05.2016, 20:30) *
In fact, there is no collision between actor and mesh. Only a zone "effect".

Model has shapes? Do you set the "no physics" flag (in AE)?
abramcumner
Цитата(Borovos @ 30.05.2016, 00:38) *
PS: as I'm talking about anomalies, somebody knows why npc are not reacting to anomalies in CoP?

http://www.amk-team.ru/forum/topic/10339-r...-59#entry947915

comment line 70 in space_restrictor.cpp
Цитата
spatial.type &= ~STYPE_VISIBLEFORAI;

Borovos
QUOTE (RayTwitty @ 30.05.2016, 22:54) *
Model has shapes? Do you set the "no physics" flag (in AE)?

To spawn anomaly, I have to link them with a shape in LE. A sphere for ameba, and a sphere+a box for burning fuzz, a giant box for ton anomaly...
In CoP, it's look like as the shape is not define in the ltx as it's for SoC.

QUOTE

Thanks for this information.

Edit: I'm speaking with Alundaio, he say he used this way for the release of CoC.
But it break the game, AI is blind in space_restrictor.
RayTwitty
Цитата(Borovos @ 30.05.2016, 23:08) *
To spawn anomaly, I have to link them with a shape in LE.

I mean that models have shapes and phys boxes smile.gif
alpet
Выложил на днях исходники версии движка с изменениями под модификацию NLC7.1: https://xp-dev.com/svn/xray/branches/nlc-edition
Версия характеризуется с одной стороны отставанием от оригинального репозитория по правкам, с другой много чего оптимизировано и потравлен ряд багов, неплохо расширено скриптовое API. По правде сказать, я не пробовал собирать/запускать с отключенным дефайном NLC_EXTENSIONS. Документацию может со временем добавлю в вики, но будет проще меня спросить о каких-либо аспектах правок.

И сегодня наконец-то дошли руки выложить исходники перехватчика luaicp и связанного с ним ланчера: https://github.com/alpet83/Lua-Interceptor
RayTwitty
alpet, SetVisualName не удалось доделать, чтобы неписям нормально визуал менять?
alpet
Цитата(RayTwitty @ 05.06.2016, 19:27) *
alpet, SetVisualName не удалось доделать, чтобы неписям нормально визуал менять?

Нет, больше этой темы не касался. В теории можно весь код net_Spawn прошерстить, в поисках настроек визуала. А пока вполне хватает оффлайн-онлайн переключения принудительного.
Карлан
Цитата(alpet @ 05.06.2016, 14:56) *
Выложил на днях исходники версии движка с изменениями под модификацию NLC7.1

Жаль не могу плюс поставить. Я может и мещанин, но ждал исходников только чтобы дернуть алгоритмы загрузки скриптов. Сам бы не смог, так как не шарю в с++. Не сомневаюсь, найду еще много интересных решений.

alpet, тебя хотел спросить, у вас используется, как я помню, другой алгоритм кодировки (более быстрый, чем в оригинале), насколько это повлияло на оптимизацию?
Цитата(RayTwitty @ 05.06.2016, 19:27) *
alpet, SetVisualName не удалось доделать, чтобы неписям нормально визуал менять?

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

Теперь мои окончательные выводы по луаджит. Сразу поблагодарю abramcumner за беседу, всегда интересно иное мнение.

И еще сразу упомяну, что я работаю под ТЧ. Итак, дефайна там никакого уже в помине нет, и функции получения длины массива идентичны в обоих луаджитах. Мне так и не удалось пока отрыть камень преткновения, сразу поясню, что это задача не тривиальная, а разработчики луаджита на выручку никак не идут. Кто найдет - тому моя благодарность. Таким образом о каком-то переопределении чего-то тоже речи быть не может. Теперь вернемся в реалии, как я и говорил ранее, так и повторяю с некоторой оговоркой сейчас, разработчики луаджит нарушили стандарты сталкерского луа продиктовав свои новые, то есть возразить мы им конечно не можем, но и нас этот вариант никак не устраивает, отсюда присоединение нового луаджита тянет за собой следующую вилку: проверка всех скриптов использующих таблицы или прежняя работа скриптов (она существенно медленнее). Выбирайте что вам по душе. Повторюсь, это субъективно моя окончательная позиция. Если кто-то решит эту проблему и добьется быстрого и эмпирически верного присоединения обязательно отпишите. Также оставляю вопрос-просьбу открытой до момента пока сами не разберемся, возможно под ТЧ уже кто-то присоединял джит и проверял скрипты.
alpet
Цитата(Карлан @ 06.06.2016, 03:51) *
alpet, тебя хотел спросить, у вас используется, как я помню, другой алгоритм кодировки (более быстрый, чем в оригинале), насколько это повлияло на оптимизацию?

Не тестировал, наверное заметный результат LZ4 относительно GSC упаковщика будет показывать только на медленных процессорах. В ТЧ наибольший вклад по улучшению производительности FS (IReader в частности) дала оптимизация поиска последовательно идущих чанков в составных файлах (вроде визуалов). Согласно оригинальному алгоритму, они каждый раз итеративно перебирались сначала, и я добавил в класс несколько полей для сохранения истории поиска. Последние 8 позиций запоминаются в векторе, что позволяет при многопоточной загрузке и числе нитей не более 8, тратить на поиск в среднем несколько итераций цикла всего. Время загрузки скажем визуалов после этого сократилось с нескольких секунд, до сотен мс. Плюс вероятно имеет некоторое значение для скорости загрузки расположение файлов в архивах, которое мой пакер позволяет делать произвольным. Используя статистику я их располагал в порядке запрашивания движком, что для медленных HDD вероятно играет роль при холодном запуске игры. Архивам так-же задана возможность резидентного нахождения в памяти, т.е. после распаковки оставаться единым не выгружаемым блоком, что задействовано в моде для gamedata.db0 (конфиги, скрипты и шейдеры).
Карлан
alpet, вспомнил еще один будоражащий мой разум вопрос, как с помощью script_vars_storage можно корректно сохранить юзердату без дополнительных действий? Еще ранее по этой же системе я тебе лично высылал все баги, которые я выловил при работе с ней, не знаю помнишь об этом или нет, но хотелось бы узнать разрешены они в твоих текущих исходниках или нет.

Конкретнее о юзердате я кажется уже писал, но повторю, интересует вопрос не сохранения самой юзердаты, а идентификации ее при загрузке, так как и юзердаты и массивы распознаются как юзердаты, и происходит обвал при попытке узнать что это, реальная юзердата или реальный массив, это и понятно и правильно, так как юзердату как таковую в массив нельзя преобразовать. Сам я разумеется пробовал получать метатаблицу, только это все сказки пушкина, так как написать какой-нибудь приемлемый алгоритм все равно не получается, да и в итоге незачем.
Итак, как при загрузке get_stored_vars() отличить юзердату которая преобразовывается в массив от юзердаты которая сама по себе юзердата? Пока мы пошли путем добавления уникального ключа под каждый тип юзердаты, а больше и никак. Если это возможно, то я попрошу в исходниках добавить функцию (скорее ключ) уточнения что из себя представляет текущая юзердата, это избавит от создания этого нагромождения в виде уникальных ключей, т.е. я буду сразу знать что это юзердата и далее уже как мне надо ее идентифицировать и разбирать, без заморочек с самой системой хранения и, непосредственно, модулями, в которых задействована реализация через ООП. А делать такое руками не совсем удобно, да и не совсем, я считаю, выгодно.

P.S. Я не видел как работают с этой системой в NLC, возможно там это учтено.
alpet
Цитата(Карлан @ 06.06.2016, 21:53) *
alpet, вспомнил еще один будоражащий мой разум вопрос, как с помощью script_vars_storage можно корректно сохранить юзердату без дополнительных действий?

За давностью лет не упомню, какие данные предполагалось так сохранять и зачем )
В случае мода NLC такая возможность просто не пригодилась. Сохраняются напрямую массивы/таблицы Lua и этого вполне хватает. Движок непосредственно не использует userdata минуя Luabind, а значит все его данные - ссылки на объекты или сами объекты, сохранение которых не имеет смысла. Принцип работы хранимых переменных, сохранять "как есть" данные переменной и её Lua-тип, а значит userdata сохраняется именно как userdata и выдается аналогично. Другое дело lightuserdata, что в сущности указатель и Lua не может подсказать размер данных по этому указателю. Если смотреть исходник script_vars_storage.cpp, определение блока данных как объекта происходит только для нет-пакетов, что позволяет сохранить нет-пакет присвоением - вероятно это самый продуктивный способ для хранения двоичных данных небольшого размера.
apostol1999
Всем привет, форумчане!)
Возникла проблема, не могу решить её. Может тут есть люди, которые знают и ответят мне. Заранее спасибо!
Вообщем, имеется студия VS 2008. На ней собираю движок. Движок собирается полностью, все длл-ки. С этим проблем нету.
Идем еще дальше. Значит делаю свои правки, выношу параметры из движка, в конфиги и т.д, все тоже отлично собирается.
А вот теперь самое интересное для меня. А проблема именно с рендерами. У себя запускаю, мой движок ЗП, у меня есть все рендеры, ну и все работает как надо, но, если дать кому-нибудь мой движок, и он запустит его. То у него просто не будет рендера DX11. Вот почему так происходит? Проверял у себя, на другом компьютере, Directx стоит, все нормально, но, не видит DX11. Не хочет. Причина мне не ясна...
Giperion
Скинь бинарники и желательно pdb от xrEngine, гляну че там.

Update: на вскидку тут несколько вариантов:
* Тупо не собрал xRenderR4. Или пытался собрать, но выбило ошибку, но ведь игра запускается biggrin.gif
* Собрал, но в процессе инициализации выкидывает ошибку
* Напортачил в коде
* Твои друзья не имели dx11 biggrin.gif

Код могу проверить
apostol1999
Цитата(Giperion @ 11.06.2016, 12:10) *
Скинь бинарники и желательно pdb от xrEngine, гляну че там.

Update: на вскидку тут несколько вариантов:
* Тупо не собрал xRenderR4. Или пытался собрать, но выбило ошибку, но ведь игра запускается biggrin.gif
* Собрал, но в процессе инициализации выкидывает ошибку
* Напортачил в коде
* Твои друзья не имели dx11 biggrin.gif

Код могу проверить


Хорошо, скину в лс ссылку.

Вот смотри:
* Собранный xrRenderR4, на нем же я гоняю у себя)
* Ошибок никаких нет, ничего не выскакивает.
* А в коде, как я мог так, напортачить? Это получается я себе DX11 оставил, а другим отрубил?)) rolleyes.gif
* У всех моих друзей, есть DX11 smile.gif
Neo][
apostol1999, загрузка библиотек-рендеров динамическая, по жёстко заданным именам.

Соответственно причин такого поведения можно придумать множество, например, не правильно собрал(crt не тот выбрал, у друзей redist пакета для этого crt нет) или имя не правильное у собранной библиотеки(у тебя может старая оригинальная лежит рядом) ошибку на экране ты не получишь, но в лог выводится процесс загрузки библиотек, соответственно смотри лог у друзей.
SkyLoader
apostol1999, у меня тоже была проблема с тем, что игра не видела DX11, когда перетаскивал его в ЛА. Сейчас, к сожалению, не вспомню, как фиксил это, но начинал я с лога. В логе будет написана причина, по которой функция теста наличия дх11 вернет ложь. И оттуда уже надо плясать.
apostol1999
Цитата(Neo][ @ 12.06.2016, 18:55) *

apostol1999, загрузка библиотек-рендеров динамическая, по жёстко заданным именам.

Соответственно причин такого поведения можно придумать множество, например, не правильно собрал(crt не тот выбрал, у друзей redist пакета для этого crt нет) или имя не правильное у собранной библиотеки(у тебя может старая оригинальная лежит рядом) ошибку на экране ты не получишь, но в лог выводится процесс загрузки библиотек, соответственно смотри лог у друзей.

Лог, есть. С второго компа, взял. Там тоже нету Dx11
Лог
* Detected CPU: AMD FX™-8320 Eight-Core Processor [AuthenticAMD], F15/M2/S0, 4700.00 mhz, 51-clk 'rdtsc'
* CPU features: RDTSC, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2
* CPU cores/threads: 4/4

Initializing File System...
using fs-ltx fsgame.ltx
FS: 40440 files cached 28 archives, 6121Kb memory used.
Init FileSystem 1.323072 sec
'xrCore' build 6303, May 9 2016

EH: A921677F98B47F345ED187B3DC996714

-----loading d:\ЗП игра\gamedata\configs\system.ltx
-----loading d:\ЗП игра\gamedata\configs\system.ltx
Initializing Engine...
Starting INPUT device...
Loading DLL: xrRender_R2.dll
Loading DLL: xrRender_R3.dll
refCount:m_pAdapter 1
Loading DLL: xrRender_R4.dll
command line
Executing config-script "user.ltx"...
[test_sgm_weather_2301\user.ltx] successfully loaded.
Loading DLL: xrRender_R2.dll
Loading DLL: xrGame.dll
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* [win32]: free[4016304 K], reserved[70776 K], committed[107160 K]
* [ D3D ]: textures[0 K]
* [x-ray]: crt heap[12061 K], process heap[5212 K], game lua[0 K], render[0 K]
* [x-ray]: economy: strings[8128 K], smem[0 K]
SOUND: OpenAL: enumerate devices...
SOUND: OpenAL: EnumerationExtension Present
devices Generic Audio
SOUND: OpenAL: system default SndDevice name is Generic Audio
SOUND: OpenAL: All available devices:
1. Generic Audio, Spec Version 1.1 (default) eax[0] efx[no] xram[no]
Executing config-script "d:\ЗП игра\gamedata\configs\default_controls.ltx"...
[d:\ЗП игра\gamedata\configs\default_controls.ltx] successfully loaded.
Executing config-script "user.ltx"...
Executing config-script "d:\ЗП игра\gamedata\configs\rspec_extreme.ltx"...
[d:\ЗП игра\gamedata\configs\rspec_extreme.ltx] successfully loaded.
Executing config-script "d:\ЗП игра\gamedata\configs\default_controls.ltx"...
[d:\ЗП игра\gamedata\configs\default_controls.ltx] successfully loaded.
~ Invalid syntax in call to 'r2_aa_break'
~ Valid arguments: vector3 in range [0.000000e+000,0.000000e+000,0.000000e+000]-[1.000000e+000,1.000000e+000,1.000000e+000]
~ Invalid syntax in call to 'r2_aa_weight'
~ Valid arguments: vector3 in range [0.000000e+000,0.000000e+000,0.000000e+000]-[1.000000e+000,1.000000e+000,1.000000e+000]
~ Invalid syntax in call to 'sv_adm_menu_ban_time'
~ Valid arguments: ui_mp_am_10_minutes/ui_mp_am_30_minutes/ui_mp_am_1_hour/ui_mp_am_6_hours/ui_mp_am_1_day/ui_mp_am_1_week/ui_mp_am_1_month/ui_mp_am_3_monthes/ui_mp_am_forever
[test_sgm_weather_2301\user.ltx] successfully loaded.
SOUND: Selected device is Generic Audio
EnvFX build 87, Jun 17 2015
* sound: EAX 2.0 extension: absent
* sound: EAX 2.0 deferred: absent
* sound : cache: 65537 kb, 4856 lines, 13820 bpl
Starting RENDER device...
* GPU [vendor:10DE]-[device:11C0]: NVIDIA GeForce GTX 660
* GPU driver: 10.18.13.5362
* CREATE: DeviceREF: 1
* Vertex Processor: PURE HARDWARE
* Texture memory: 4014 M
* DDI-level: 9.0
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: unrecognized, 16
* NVidia MGPU: Logical(1), Physical(1)
* Starting rendering as 2-GPU.
* DVB created: 6144K
* DIB created: 2048K
! Renderer doesn't support blender 'effects\shadow_world'
* NULLRT supported
* ...and used
* HWDST/PCF supported and used
* NV-DBT supported and used
compiling shader dumb
compiling shader dumb
compiling shader accum_mask
compiling shader accum_sun_mask
compiling shader copy_p
compiling shader accum_volume
compiling shader copy
compiling shader accum_sun_near
compiling shader accum_sun
compiling shader accum_sun_cascade
compiling shader accum_sun_cascade_far
compiling shader accum_volumetric_sun
compiling shader accum_volumetric_sun_cascade
compiling shader accum_omni_unshadowed
compiling shader accum_omni_normal
compiling shader accum_omni_transluent
compiling shader accum_spot_unshadowed
compiling shader accum_spot_normal
compiling shader accum_spot_fullsize
compiling shader accum_volumetric
compiling shader accum_volumetric
compiling shader accum_indirect
compiling shader bloom_build
compiling shader bloom_filter
compiling shader bloom_filter_f
compiling shader ssao_calc
compiling shader combine_1
compiling shader depth_downs
compiling shader bloom_luminance_1
compiling shader bloom_luminance_2
compiling shader bloom_luminance_3
compiling shader combine_1
compiling shader combine_2_AA
compiling shader combine_2_NAA
compiling shader combine_2_AA_D
compiling shader combine_2_NAA_D
compiling shader combine_volumetric
compiling shader postprocess
compiling shader postprocess_CM
compiling shader distort
compiling shader particle_distort
compiling shader particle
compiling shader particle
compiling shader particle_s-blend
compiling shader particle-clip
compiling shader particle_s-add
compiling shader particle_s-aadd
compiling shader deffer_particle
compiling shader deffer_particle
- r__tf_aniso 16
- r2_tf_mipbias 0.
compiling shader portal
compiling shader portal
compiling shader simple_color
compiling shader editor
compiling shader sky2
compiling shader sky2
compiling shader clouds
compiling shader clouds
Starting engine...
compiling shader stub_default
compiling shader effects_sun
compiling shader hud_font
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
Loading DLL: xrGameSpy.dll
compiling shader yuv2rgb
! Missing ogg-comment, file: d:\ЗП игра\gamedata\sounds\video\ati_radeon_1920x1080.ogg
! Missing ogg-comment, file: d:\ЗП игра\gamedata\sounds\video\amd_fusion_final_720.ogg
intro_start intro_logo
intro_delete ::update_logo_intro
compiling shader yuv2rgb
* [win32]: free[3671256 K], reserved[78340 K], committed[444644 K]
* [ D3D ]: textures[64 K]
* [x-ray]: crt heap[99506 K], process heap[24305 K], game lua[2146 K], render[249 K]
* [x-ray]: economy: strings[8318 K], smem[0 K]
Input: 1
Config-file [test_sgm_weather_2301\user.ltx] saved successfully
Destroying Direct3D...
* RM_Dump: textures : 3
* : 1: ui\ui_actor_hint_wnd
* : 1: ui\ui_actor_multiplayer_game_menu
* : 1: ui\ui_common
* RM_Dump: rtargets : 0
* RM_Dump: vs : 1
* : 3: null
* RM_Dump: ps : 1
* : 3: null
* RM_Dump: dcl : 0
* RM_Dump: states : 1
* RM_Dump: tex_list : 3
* RM_Dump: matrices : 0
* RM_Dump: lst_constants: 0
* RM_Dump: v_passes : 3
* RM_Dump: v_elements: 3
* RM_Dump: v_shaders : 3
refCount:pBaseZB 1
refCount:pBaseRT 1
DeviceREF: 4

Как видишь, есть загрузка 4 рендера. Но кажись, показывать он его не хочет.
Может обьяснишь, как настроить crt? Заранее, спасибо!


Цитата(SkyLoader @ 12.06.2016, 19:40) *
apostol1999, у меня тоже была проблема с тем, что игра не видела DX11, когда перетаскивал его в ЛА. Сейчас, к сожалению, не вспомню, как фиксил это, но начинал я с лога. В логе будет написана причина, по которой функция теста наличия дх11 вернет ложь. И оттуда уже надо плясать.

Ничего я в логе, так и не понял sad.gif dry.gif
Neo][
apostol1999, сообщение о загрузке библиотеки есть, ошибок проверки поддержки нет и рендер не доступен, можно сделать вывод, что библиотека по итогу не загрузилась и код проверки не вызывался.

Скорее всего проблема в том, что неправильно собрал библиотеку рендера. 2 варианта проверки:
- закоментировать SetErrorMode(SEM_FAILCRITICALERRORS) перед загрузкой библиотеки;
- чтобы не пересобирать движок, можно написать утилиту с парой строк кода, которая пытается загрузить xrRender_R4.dll.

В итоге скорее всего получишь ошибку на экран, от неё уже можно будет раскручивать дальше.
Giperion
Проблема apostol1999 решена. Он линканулся к d3dx11_41 либе (уже как 6 лет есть 43 версия, где он только 41 откопал?). У всех уже либо 42 либо вообще 43. Релизный CoP использует 42 версию, между прочим.
Поэтому у него DX11 был, а у остальных нет.
Winsor
Уважаемые знающие, столкнулся с такой проблемой.
xray 1.0007 (rc1) debug конфигурация
Движок собирается, но запускается исключительно из под vs2012. Без нее завершается с ошибкой:
Лог

00000001 0.00000000 [4476] * Detected CPU: GenuineIntel Intel® Core™ i5-4460 CPU @ 3.20GHz, F6/M60/S3
00000002 0.00002181 [4476]
00000003 0.00019469 [4476] * CPU Features: RDTSC, MMX, SSE, SSE2, SSE3, SSE4.1, SSE4.2
00000004 0.00024376 [4476]
00000005 0.00029091 [4476]
00000006 0.00082108 [4476] Initializing File System...
00000009 0.00093526 [4476]
00000010 0.00098241 [4476] FATAL ERROR
00000014 0.00109050 [4476] [error]exp​ression : fatal error
00000016 0.00114695 [4476] [error]Function : mem_usage_impl
00000018 0.00120308 [4476] [error]File : memory_usage.cpp
00000020 0.00129994 [4476] [error]Line : 156
00000022 0.00135350 [4476] [error]Description : <no exp​ression>
00000024 0.00140995 [4476] [error]Arguments : bad node in heap
00000025 0.00142310 [4476]
00000028 0.00150104 [4476]
00000029 0.00152060 [4476] stack trace:
00000035 0.03255266 [4476]
00000036 0.03260878 [4476]
00000037 0.03265850 [4476] ! 0023:0F0A5A8F (0x0F115E20 0x0F115E10 0x001D9794 0x00000000) xrCore.dll, xrDebug::backend(), s:\xrcore\xrdebugnew.cpp, 290
00000039 0.03272136 [4476] ! 0023:0F0A6343 (0x0F1B0FA4 0x0F11591C 0x0000009C 0x0F11590C) xrCore.dll, xrDebug::fatal(), s:\xrcore\xrdebugnew.cpp, 417
00000041 0.03277845 [4476] ! 0023:0F0A2D24 (0x00920000 0x00000000 0x00000000 0x001DCE20) xrCore.dll, mem_usage_impl(), s:\xrcore\memory_usage.cpp, 156
00000043 0.03283522 [4476] ! 0023:0F0A2BEC (0x00000000 0x00000000 0x6B588D1C 0x001DCE18) xrCore.dll, xrMemory::mem_usage(), s:\xrcore\memory_usage.cpp, 164
00000045 0.03289199 [4476] ! 0023:0F08B62D (0x00000080 0x00000000 0x00000000 0x6B5895D0) xrCore.dll, CLocatorAPI::_initialize(), s:\xrcore\locatorapi.cpp, 525
00000047 0.03295133 [4476] ! 0023:0F0627F0 (0x00688CDC 0x00000000 0x00000001 0x00000000) xrCore.dll, xrCore::_initialize(), s:\xrcore\xrcore.cpp, 114
00000049 0.03300810 [4476] ! 0023:0042D3EC (0x00250000 0x00000000 0x0092439A 0x00000001) XR_3DA.exe, WinMain_impl(), s:\xr_3da\x_ray.cpp, 640
00000051 0.03306102 [4476] ! 0023:00443612 (0x00250000 0x00000000 0x0092439A 0x00000001) XR_3DA.exe, WinMain(), s:\xr_3da\x_ray.cpp, 749
00000053 0.03308604 [4476] ! 0023:00667479 (0xFFFDE000 0x001DFAD8 0x76F09902 0xFFFDE000) XR_3DA.exe, __tmainCRTStartup(), f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c, 528
00000055 0.03312741 [4476] ! 0023:749F338A (0xFFFDE000 0x76F43CD7 0x00000000 0x00000000) kernel32.dll
00000057 0.03315948 [4476] ! 0023:76F09902 (0x003BF086 0xFFFDE000 0x00000000 0x00000000) ntdll.dll
00000059 0.03318995 [4476] ! 0023:76F098D5 (0x003BF086 0xFFFDE000 0x00000000 0x00000000) ntdll.dll

каких либо изменений в код memory_usage.cpp не вносилось.
jamakasi
Winsor, просто не надо собирать дебаг версию которую хочешь запускать отдельно от дебагеров и студии. Вкурсе вообще зачем дебаг версия нужна? Собери нормально всю игру без дебагов и отдельно нужный модуль с дебагом и колупайся потом в нем, а иначе или оно совсем не запустится или запустится с колоссальной потерей производительности.
Winsor
Цитата(jamakasi @ 21.06.2016, 14:22) *
колоссальной потерей производительности.
- да бог с ней , с производительностью, я ж не играться на ней буду...
Пере собрал полностью проект - теперь и при запуске в студии появляется эта же ошибка...
Redistribute пакеты стоят. что может влиять на такое поведение? huh.gif
следующий симптом в mem_usage_impl
CODE
while( ( heapstatus = heap_walk( heap_handle, &hinfo ) ) == _HEAPOK )

вечный цикл.... О_О
Giperion
Цитата
каких либо изменений в код memory_usage.cpp не вносилось.

Это одна из runtime проверок, от изменений тут ничего не зависит.

Конкретно эта ошибка означает, что где то произошла утечка памяти и/или неправильно освободили память.
Тут есть следующие варианты:

1) Сбилдили и слинковали с либой, которая не совместима с текущей версией движка (особенно касается LuaJIT).
2) Что то поменяли и где то накосячили, ну тут понятно

Падение на xrCore::_initialize означает что уже самая первая проверка памяти (а их кстати несколько штук при запуске) провалилась.
Поскольку это SoC, то помочь ничем не могу (вернее нет желания работать с этой версией).

UPDATE: У меня была похожая ошибка при миграции на x64, но это специфическая проблема. Кстати в студий Output Log он пишет почему проверка памяти провалилась, хотя не думаю что вы сможете воспользоваться той информации что он вам даст.

UPDATE2:
Цитата
вечный цикл.... О_О

Это цикл пока heap_walk дает _HEAPOK. Когда он достигнет конца он даст _HEAPEND, что прервет цикл
Winsor
Цитата
UPDATE2:
Цитата
вечный цикл.... О_О

Это цикл пока heap_walk дает _HEAPOK. Когда он достигнет конца он даст _HEAPEND, что прервет цикл

так вот он не заканчивается smile.gif количество памяти, занимаемой процессом xr_3da при этом не увеличивается.
Giperion
Цитата(Winsor @ 21.06.2016, 15:45) *
Цитата
UPDATE2:
Цитата
вечный цикл.... О_О

Это цикл пока heap_walk дает _HEAPOK. Когда он достигнет конца он даст _HEAPEND, что прервет цикл

так вот он не заканчивается smile.gif количество памяти, занимаемой процессом xr_3da при этом не увеличивается.

Как раз таки цикл идет нормально, просто в одной из итерации вместо _HEAPOK он получил какую то ошибку.
Еще раз говорю, проблема не в коде проверки, а в том факте, что где то при выполнений некорректно работали с памятью.
Northern Maverick
Добрый день.

Два дня назад (20.06.16) на Хабре вышла статья от PVS-Studio посвящённая разбору найденных ошибок в движке X-Ray.

Делая бесплатные разборы открытых продуктов данная компания рекламирует свой продукт, но ошибки-то они находят реальные.
abramcumner
Northern Maverick, вот здесь обсудили.
Northern Maverick
Извиняюсь. Не догадался поискать по ссылке. Навык утерял. Буду внимательнее.
Winsor
Скачал чистый движок, без каких либо правок, сконвертировал в VS2012, настроил инклюды и пути к библиотекам. собрал в debug. Первый запуск - и
[error]Expression : fatal error
[error]Function : mem_usage_impl
[error]File : memory_usage.cpp
[error]Line : 156
[error]Description : <no expression>
[error]Arguments : bad node in heap

windows 7
может ли какой либо софт на компьютере мешать программе работать с heap?
Neo][
Цитата(Winsor @ 22.06.2016, 14:32) *
windows 7
может ли какой либо софт на компьютере мешать программе работать с heap?

Winsor, в теории да, на практике, я думаю, это было бы сразу заметно, поведение других программ так же изменилось бы. А раз проблема только с xray, то как уже сказал Giperion, где-то некорректно идёт работа с памятью внутри движка. Поэтому вперёд, в долгий дебаг ) Для начала глянуть, HeapWalk или HeapValidate останавливают цикл, по коду возврата или по исключению.

Попробуй запустить с ключом: -pure_alloc, хотя бы исключить влияние xray-евских мем пулов, но это вряд ли поможет )
abramcumner
Насколько я помню, в функции heap_walk ошибка - неправильно работают с апи. Cохраняются не все данные PROCESS_HEAP_ENTRY между вызовами HeapWalk.
Или корректно реализовать обход через HeapWalk или тупо заменить heap_walk на сишную _heapwalk(все равно данные только по одной куче выводятся, что и делает _heap_walk).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.