Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
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
Карлан
Поправил баг (тут можно и "баг", так как кому как, кому так и надо, а кому и по другому, мне вот по другому, иначе приходится писать костыли), о котором еще несколько лет назад Malandrinus писал, думаю все скриптеры будут рады этому исправлению. Если дойдут руки, то напишу параллельный код и сделаю по другому, а то там серверная часть чудит от таких пируэтов. Пока немного грязно и совершенно неоптимизированно, зато все работает.

Видео


И это, кстати, возвращаясь к моему посту чуть выше, довольно спорное нововведение, так как требует существенной переделки скриптов в области сохранения на клиентской части (здесь я подразумеваю еще и удаление потоков, они в 2018 не модные), перестает работать куча трюков, также внесет несовместимость с другими движками, т.е. алгоритм сохранения и загрузки там изменится, так что, скорее всего, это добавлять я не буду вообще, иначе моим кодом другим будет тяжело воспользоваться, если они будут сидеть на своих платформах.
Winsor
Цитата(Карлан @ 16.01.2018, 14:51) *
Поправил баг (тут можно и "баг", так как кому как, кому так и надо, а кому и по другому, мне вот по другому, иначе приходится писать костыли), о котором еще несколько лет назад Malandrinus писал, думаю все скриптеры будут рады этому исправлению. Если дойдут руки, то напишу параллельный код и сделаю по другому, а то там серверная часть чудит от таких

так и не понял - какой именно баг правился и каким образом... У себя даже ничего подобного не помню... не понятно, что именно делается с ящиком и его биндером...
RayTwitty
Цитата(Winsor @ 18.01.2018, 09:58) *
так и не понял - какой именно баг правился и каким образом...


Включи шестое чувство и догадайся!
RayTwitty
Стало интересно, как работает консольная команда _preset.
Программа сканирует файлы config\rspec_*.ltx и устанавливает соответствующие настройки.

Значения команды: Minimum, Low, Default, High, Extreme. Им соответствуют: rspec_minimum.ltx, rspec_low.ltx, rspec_default.ltx, rspec_high.ltx, rspec_extreme.ltx. rspec_maximum.ltx не используется.
Всё это зашито в движок.

Внутри команды _preset выполняется ещё одна команда - cfg_load (загрузка конфига настроек), которая принимает на вход полный путь до файла настроек на диске. В свою очередь, в cfg_load выполняется построчный ввод всех перечисленных команд (как если бы мы вводили их по отдельности через консоль).

https://xray-engine.org/index.php?title=preset
STALKER18
Здрасте!
Решил, значит пройти чистый ЧН, думаю заодно посмотрю, что там умельцы с исходников смастерили. Так, как на остальных стоит метка "архивная ценность" скачал последний билд от Abramcumner'а, 1.5.10-78. Кинул в bin с заменой, игра запустилась, я даже обрадовался что все вроде бы так просто, но при старте новой игры вылетает с логом
1
exp​ression : XRAI_CURRENT_VERSION == m_version
Function : CALifeSpawnHeader::load
File : alife_spawn_registry_header.cpp
Line : 21
Description : 'game.spawn' version mismatch!

При попытке загрузки сохранения вылет с логом
2
exp​ression : header().version() == XRAI_CURRENT_VERSION
Function : CGameGraph::CGameGraph
File : c:\projects\xray15\xray\xrgame\game_graph_inline.h
Line : 32
Description : Graph version mismatch!

Пробовал на дисковой и GOG версии (обе с 10 патчем), результат идентичный. Можно ли как-нибудь завести сие изделие на стоковом ЧН?
Может глупость написал и это легко сделать, извиняйте, в ковырянии я максимум что могу, так это вес в конфиге поменять laugh.gif
ForserX
STALKER18, у абрама своя версия AI-Map, ваниль н поддерживается.
abramcumner
Цитата(STALKER18 @ 31.01.2018, 20:49) *
Пробовал на дисковой и GOG версии (обе с 10 патчем), результат идентичный. Можно ли как-нибудь завести сие изделие на стоковом ЧН?

Теперь должно заводиться. на оригинальном ЧН.
STALKER18
Цитата(abramcumner @ 31.01.2018, 22:58) *
Теперь должно заводиться. на оригинальном ЧН.

Сохранения загружаются, монстры бегают, чистонебовцы воюют с ренегатами, вообщем все работает, как положено. Спасибо за быстрый фикс!
akaSpy
Всем привет!

Так как вы люди знающие движок (Зов Припяти) изнутри, можете, пожалуйста, подсказать какой алгоритм оптимизации геометрии у hud-моделей с включенным флагом HQ Geometry?

Хочется в итоге получить более управляемый результат при моделировании. Визуально не всегда понятно как он работает, как мне кажется он не завязан на расстояние между вершинами, а больше на повторение одинаковых/похожих длин рёбер.
Zagolski
Что-то никак не могу разобраться, как грамотно развернуть камеру при виде от 3-го лица наоборот, чтобы камера смотрела спереди на ГГ. Со смещением камеры по point.z вперед и разворотом по vDirection.z на 180 гр. - тут постоянно угол сбивается, видимо из-за того, что ГГ при этом сам по себе крутится. Но это я скорее всего не в ту сторону полез, наверняка все гораздо проще можно сделать. Или малой кровью тут не обойтись?
RayTwitty
Zagolski, может просто актора развернуть камеру? Просто инвертировать вектор направления. Но тут еще вопрос в том, что стрелять оружие будет по-прежнему, по направлению камеры, а также другие побочки.
v2v3v4
Цитата(Zagolski @ 17.02.2018, 22:57) *
Что-то никак не могу разобраться, как грамотно развернуть камеру при виде от 3-го лица наоборот, чтобы камера смотрела спереди на ГГ.

посмотри в классе зпшном CCameraFixedLook
Zagolski
Более менее разобрался. Я изначально камеру актора использовал, но там у нее привязка к направлению ГГ, при смене вектора направления она начинает чудить, сбиваться. Но может не там я ее крутил...
Но да, помог класс CCameraFixedLook, там камера отвязана от направления ГГ. Правда, что-то не получается свободно камерой играться по z-оси, только или четко на север или на юг. Где-то там дальше ее фиксация в этих направлениях происходит, наверное, в базовом классе. Дальше продолжаю разбираться.

Эх, сделать бы возможность скриптово ролики создавать малыми силами. Плавные переходы камеры от одного непися к другому, наезды, повороты. Как во Флешпоинте. Сейчас, как я понял, в Сталкере вообще нет возможности нормально ролики создавать. Только камерой в СДК по координатам, да еще ролик куда-то в .anm файл записывается. Жуть какая-то.
v2v3v4
Цитата(Zagolski @ 19.02.2018, 13:21) *
Более менее разобрался. Я изначально камеру актора использовал, но там у нее привязка к направлению ГГ, при смене вектора направления она начинает чудить, сбиваться. Но может не там я ее крутил...
Но да, помог класс CCameraFixedLook, там камера отвязана от направления ГГ. Правда, что-то не получается свободно камерой играться по z-оси, только или четко на север или на юг. Где-то там дальше ее фиксация в этих направлениях происходит, наверное, в базовом классе. Дальше продолжаю разбираться.

Эх, сделать бы возможность скриптово ролики создавать малыми силами. Плавные переходы камеры от одного непися к другому, наезды, повороты. Как во Флешпоинте. Сейчас, как я понял, в Сталкере вообще нет возможности нормально ролики создавать. Только камерой в СДК по координатам, да еще ролик куда-то в .anm файл записывается. Жуть какая-то.

demo_record записывает и сохраняет demo_play воспроизводит
Zagolski
Восстановил билдовский класс CUI3dStatic (это который в меню предмет в 3D показывает). Все бы ничего, но наотрез отказывается работать на всех рендерах кроме первого, визуал не отображается (на R1 нормально). Ну оно и понятно, все же делалась эта наработка в 2004 годах, когда только этот рендер и был...
Может есть у кого идеи, кто им занимался, как заставить функционировать на остальных рендерах? Двиг - ЗП. Да, смотрится моделька без пост-эффектов весьма убого, да и низкополигональная, но все же.
ForserX
Zagolski, Zagolski, кинь в ЛС класс. Посмотрю.
Zagolski
Скинул. Вот еще сюда Draw() напишу, тут в нем где-то заковырка скорее всего, а точнее тут:

::Render->set_Transform(&matrix);
::Render->add_Visual(m_pCurrentItem->Visual());

Draw()
//прорисовка
void CUI3dStatic::Draw()
{
if(m_pCurrentItem)
{
//Msg("Start draw 3d model");
Frect rect;
GetAbsoluteRect(rect);

Fmatrix translate_matrix;
translate_matrix.identity();

Fmatrix scale_matrix;
scale_matrix.identity();

Fmatrix rx_m;
rx_m.identity();

Fmatrix ry_m;
ry_m.identity();

Fmatrix rz_m;
rx_m.identity();

Fmatrix matrix;
matrix.identity();

//поместить объект в центр сферы

translate_matrix.translate( - m_pCurrentItem->Visual()->getVisData().sphere.P.x,
- m_pCurrentItem->Visual()->getVisData().sphere.P.y,
- m_pCurrentItem->Visual()->getVisData().sphere.P.z);

matrix.mulA_44(translate_matrix);

rx_m.rotateX(m_x_angle);
ry_m.rotateY(m_y_angle);
rz_m.rotateZ(m_z_angle);
matrix.mulA_44(rx_m);
matrix.mulA_44(ry_m);
matrix.mulA_44(rz_m);

float x1, y1, x2, y2;

FromScreenToItem(rect.left, rect.top, x1, y1);
FromScreenToItem(rect.right, rect.bottom, x2, y2);

float normal_size;
normal_size =_abs(x2-x1)<_abs(y2-y1)?_abs(x2-x1):_abs(y2-y1);

float radius = m_pCurrentItem->Visual()->getVisData().sphere.R;

float scale = normal_size/(radius*2);

scale_matrix.scale( scale, scale,scale);

matrix.mulA_44(scale_matrix);

float right_item_offset, up_item_offset;

///////////////////////////////

FromScreenToItem(rect.left + iFloor(GetWidth()/2),rect.top + iFloor(GetHeight()/2), right_item_offset, up_item_offset);

translate_matrix.identity();
translate_matrix.translate(right_item_offset,up_item_offset,dist);

matrix.mulA_44(translate_matrix);

Fmatrix camera_matrix;
camera_matrix.identity();
camera_matrix = Device.mView;
camera_matrix.invert();

matrix.mulA_44(camera_matrix);

::Render->set_Transform(&matrix);
::Render->add_Visual(m_pCurrentItem->Visual());
}
else
{
//Msg("not item for draw");
}

//inherited::Draw ();
}


Но вообще есть предположение, что копать нужно где-то в рендере в combine_2, в CRenderTarget::phase_combine(), там где пост-эффекты накладываются. Нужно попробовать 3д статик отрисовывать на каком-то определенном этапе, да или вообще в отдельный рендертагет.
Zagolski

Я так понял, там просто визуал модели тупо рендерится перед камерой ГГ и все. А на R2 и выше наверняка пост-эффектами убивается. sad.gif
Разрабы эту наработку видать и удалили из-за неспособности сделать работоспособную эту фишку на втором рендере, когда начали последний разрабатывать...
dPlayer
Цитата(Zagolski @ 21.02.2018, 02:21) *
в меню предмет в 3D показывает

А он у тебя как освещается? В некоторых билдах, помню, освещение было внешним, т.е в потёмках и предмет не видно было
Zagolski
Внешним освещением. Просто там от угла зависит, при каком-то угле сильнее освещается, при каком-то слабее. На скрине вариант с максимальным освещением, а вот если в темное помещение зайти, так моделька почти черной становится. А при каком-то направлении ГГ вообще с экрана исчезает, как и при вкл фонарика.

Как освещать - это ерунда, можно придумать, главное выяснить, почему на R2 и выше не хочет работать.
dPlayer
Цитата(Zagolski @ 21.02.2018, 17:51) *
Как освещать - это ерунда, можно придумать, главное выяснить, почему на R2 и выше не хочет работать.

Мб в этом проблема и есть, хотели попроще, тупо вращать её перед гг, а этот вариант изначально, даже на р1 тупиковый. Т.е. восстанавливать класс не выйдет, пили с нуля)
ForserX
Есть у кого идеи, как вывести .object вьювер на CLI форму? И да, я в 3D API полное дно, впрочем, как и в остальном.
Modera
ForserX, очевидно, получить хендл окна (HWND) а затем скормить его директиксу.
Zagolski
В ЧН/ЗП в отличие от ТЧ в BOOL CPhysicObject::net_Spawn(CSE_Abstract* DC) добавлен в конце код:

if (DC->s_flags.is(M_SPAWN_UPDATE)) {
NET_Packet temp;
temp.B.count = 0;
DC->UPDATE_Write (temp);
if (temp.B.count > 0)
{
temp.r_seek (0);
net_Import (temp);
}
}
Какая выгода от этой примочки?
BoBaH_671
Кто-нибудь сталкивался с такой проблемой? Встречал не только в меню, но и в процессе игры: в окне диалога, в инвентаре и прочих местах.



Заметил эту заразу при переходе на x64 движок. Сидел на движках от двух разных авторов: Oxygen и Im-dex. На обоих встречается. Может, кто-то знает, как это лечится? PS: появляется рандомно, редко.

Текст либо рисуется на экране не там где надо, либо его вообще нет (как мне говорили, рисуется за пределами экрана, скорее всего).
Xottab_DUTY
BoBaH_671, это общий баг х64, на любом движке его найдёшь. Пока не нашёл никто не нашёл как исправить, вроде..
Trollz0r
А как выглядит экран после ввода команды show_wnd_rect_all ?
Уползает именно текст или какие-то другие элементы?
Xottab_DUTY
Дополнение к предыдущему сообщению: тот факт, что в движке от Im-Dex, Oxygen и OpenXRay пропадает текст, дал мне основания полагать, что это общий баг.

Есть предположение, что, скорее всего, это повреждение памяти. Как выяснилось, повреждения памяти в X-Ray не редкость, но эта проблема была скрыта, потому что использовались мемпулы, в которых не было никаких проверок.

Цитата(Intorr)
Вообще, для странных "плавающих" багов наиболее часто оказывающееся верным объяснение - повреждения памяти.

Кроме того, повсеместное использование 32-битных типов также может приводить к скрытым проблемам.
SkyLoader
Цитата(Xottab_DUTY @ 12.03.2018, 16:50) *
тот факт, что в движке от Im-Dex, Oxygen и OpenXRay пропадает текст, дал мне основания полагать, что это общий баг.

Еще есть факт, что периодически проекты друг у друга правки/"фиксы" берут. Иногда неправильные, с ошибками.
Antnigm
Цитата(akaSpy @ 10.02.2018, 09:47) *
Так как вы люди знающие движок (Зов Припяти) изнутри, можете, пожалуйста, подсказать какой алгоритм оптимизации геометрии у hud-моделей с включенным флагом HQ Geometry?
Хочется в итоге получить более управляемый результат при моделировании. Визуально не всегда понятно как он работает, как мне кажется он не завязан на расстояние между вершинами, а больше на повторение одинаковых/похожих длин рёбер.

Тоже сталкивался с такой проблемой. Загвоздка в том, что модель всё равно упрощается в самой игре даже если HQ флажок в SDK был выставлен (особенно заметно на hud оружии с качественным апертурным прицелом - "кольцо" искажается). Кажется, Shoker делал правки движка, которые это убирают и выкладывал где-то в этой теме.
abramcumner
Цитата(Antnigm @ 15.03.2018, 13:19) *
Кажется, Shoker делал правки движка, которые это убирают и выкладывал где-то в этой теме.

Да, правки Шокера обязательны.
Zagolski
Не знаю, я у себя гоняю модели стволов по 35к полигонов без шокерских правок и с ними, разницы не вижу. А вот если без HQ Geometry модель делать, тогда полигоны заметно режутся, это да.
SkyLoader
Цитата(Zagolski @ 16.03.2018, 20:00) *
Не знаю, я у себя гоняю модели стволов по 35к полигонов без шокерских правок и с ними, разницы не вижу. А вот если без HQ Geometry модель делать, тогда полигоны заметно режутся, это да.

Количество полигонов здесь роли не играет. Дело в качестве отрисовки самой модели. Из за низкой точности данных в шейдерах модель бьется на уровне рендеринга, вертексы "пляшут". Вообще у Шокера было сравнение модели с правкой и без неё. Разница была неплохо так заметна.
ForserX
Тут Rafa из ЛА на сервер Oxy в дискорде небольшие замеры скинул:

Цитата
Influence of Optimization options of xrAI project on Spawn compilation (in time taken for spawn to be made)

- Optimization: "Maximaize speed"
and
- Floating point model "fast"
and else is default or off
2:37

- Optimization: "Maximaize speed"
and
- Floating point model "fast"
and
- Inline function expantion "Any Suitable"
and else is default or off
50 sec

- Optimization: "Maximaize speed"
and
- Floating point model "fast"
and
- Inline function expantion "Any Suitable"
and
- Enable intrising function "Yes"
and else is default or off
51 sec

- Optimization: "Maximaize speed"
and
- Floating point model "fast"
and
- Inline function expantion "Any Suitable"
and
- Enable intrising function "Yes"
and
- Favor Speed of Smaller size "Faster code"
and else is default or off
51 sec

- Optimization: "Maximaize speed"
and
- Floating point model "fast"
and
- Inline function expantion "Any Suitable"
and
- Enable intrising function "Yes"
and
- Favor Speed of Smaller size "Faster code"
and
- Fiber safe optimization "On"
and else is default or off
51 sec
- Optimization: "Maximaize speed"
and
- Floating point model "fast"
and
- Inline function expantion "Any Suitable"
and
- Enable intrising function "Yes"
and
- Favor Speed of Smaller size "Faster code"
and
- Fiber safe optimization "On"
and
- Whole programm optimization "on"
51 sec

- Optimization: "Maximaize speed"
and
- Floating point model "fast"
and
- Inline function expantion "Any Suitable"
and
- Enable intrising function "Off"
and
- Favor Speed of Smaller size "Faster code"
and
- Fiber safe optimization "On"
and
- Whole programm optimization "on"
50 sec

- Optimization: "Maximaize speed"
and
- Floating point model "precise"
and
- Inline function expantion "Any Suitable"
and
- Enable intrising function "Off"
and
- Favor Speed of Smaller size "Faster code"
and
- Fiber safe optimization "On"
and
- Whole programm optimization "on"
1:12

- Optimization: "Maximaize speed"
and
- Floating point model "strict"
and
- Inline function expantion "Any Suitable"
and
- Enable intrising function "Off"
and
- Favor Speed of Smaller size "Faster code"
and
- Fiber safe optimization "On"
and
- Whole programm optimization "on"
2:30
RayTwitty
Microsoft DirectX SDK (June 2010) есть на сайте Майкрософт, а Microsoft DirectX SDK (June 2007) как я понимаю уже не найти у них? Качать с левых сайтов как-то стремно.
-StalkMen-
RayTwitty,
Кнопка "Поиск" не робит?
https://www.microsoft.com/en-us/search/resu...Development+Kit
- И за 2007 и за 2008. Вот только зачем это старьё, если есть за 2010 год нормальный dxsdk..
RayTwitty
Цитата(-StalkMen- @ 25.03.2018, 02:12) *
Кнопка "Поиск" не робит?

И где там июнь 2007?))
-StalkMen-
RayTwitty,
Именно за июнь нет, но есть же за август. Может такого и в природе нет wink_old.gif
Neo][
RayTwitty, dxsdk_jun2007.exe(моя заливка) и всётаки зачем старая версия? С обратной совместимостью всё в порядке.
macron
Обновляю наработки по дождю для ТЧ 1.0006. Ничего особо нового по сравнению с прошлой версией. Просто после последних тестов на другом железе выявился эффект резкого падения fps при увеличении радиуса больше 13, о чем сообщено в ридми.

https://yadi.sk/d/n3sz7pCM3TjHKc
SkyLoader
Цитата(macron @ 25.03.2018, 14:00) *
Обновляю наработки по дождю для ТЧ 1.0006. Ничего особо нового по сравнению с прошлой версией.

Что там изменено то?) Не все знают об этой прошлой версии
macron
Цитата(SkyLoader @ 25.03.2018, 14:54) *
Не все знают об этой прошлой версии

Цитата(macron @ 27.03.2017, 02:17) *
Наработки по дождю, в том числе увеличение дальности (но с оговорками) для ТЧ 1.0006. Возможно, что-то может и для других движков пригодиться.

Включает советы по исходникам, патчер для экзешника, artmoney-таблицу для экзешника. Эксперименты проводились только на готовой системе
RayTwitty
Цитата(Neo][ @ 25.03.2018, 11:22) *

и всётаки зачем старая версия?

Все дело в том, что в зависимостях кучи проектов прописана именно эта версия. Перекраивать их слишком долго.

Ссылку бы хотелось конечно с оф. сайта, т.к. я ее планирую разместить публично на wiki... Но все равно спс.
Diesel
Цитата(RayTwitty @ 25.03.2018, 17:18) *
Ссылку бы хотелось конечно с оф. сайта, т.к. я ее планирую разместить публично на wiki... Но все равно спс.

Размещая публично код x-ray, вы не нарушаете ничего? Не смешно. Это просто пока молчат разрабы, а захотят и накажут. Нет никаких официальных договорённостей - я не видел - дайте бумагу заверенную нотариусом.
RayTwitty
Для Дизеля
Цитата(andreyholkin @ 25.03.2018, 17:03) *
Размещая публично код x-ray, вы не нарушаете ничего? Не смешно. Это просто пока молчат разрабы, а захотят и накажут. Нет никаких официальных договорённостей - я не видел - дайте бумагу заверенную нотариусом.

Во 1) что ты мне сделаешь
вовторых 2) с чего ты взял что я размещаю код иксрея, если я говорил про MS DirectX SDK?
в тетьих 3) что ты мне сделаешь, какие нотариусы, я в другой стране.

P.S.
вчетвертых 4) зайди на гитхаб и поищи по тегу "xray", "xray engine". Давно из спячки вылез?
Diesel
Для Shadows
Я не сдаю своих (тем более, что то делать). Типа бандит бандита будет призывать к закону.
RayTwitty
Вопрос по WinAPI.

При вылете игра сворачивается и включается MessageBox. Проблема в том, что при наведении на него курсор становится невидимым, но само окно даже можно таскать и нажимать на нем кнопки. Из-за чего может быть такой баг?

Код
        ShowWindow(GetTopWindow(NULL), SW_MINIMIZE); // GetTopWindow(NULL) - окно игры
        ShowCursor(TRUE);
        int                    result =
            MessageBox(
                GetTopWindow(NULL),
                assertion_info,
                "Fatal Error",
                MB_CANCELTRYCONTINUE|MB_ICONERROR|MB_SYSTEMMODAL
            );


З.Ы. при наведении на панель инструментов курсор тоже невидимый.
abramcumner
Цитата(RayTwitty @ 25.03.2018, 22:45) *
ShowCursor(TRUE);

А что возвращает ShowCursor(TRUE)?
Может надо так: while (ShowCursor(TRUE) < 0);
RayTwitty
Цитата(abramcumner @ 25.03.2018, 23:12) *
А что возвращает ShowCursor(TRUE)?
Может надо так: while (ShowCursor(TRUE) < 0);

good.gif
Ты прав, он просто был не для всех отображений показан. Все работает.
RayTwitty
Код
def("msg",    (void(*)(LPCSTR,...)) &Msg),

Кто-нибудь регистрировал такой прототип для экспорта функций в Lua? C передачей неограниченного кол-ва элементов:
Код
void XRCORE_API __cdecl Msg(LPCSTR format, ...);
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.