OGSR Engine Versions Save

OGSR Project - Evolution of X-Ray Engine for S.T.A.L.K.E.R.: Shadow of Chernobyl

2.1.416

2 months ago

Исправлена ошибка, обнаруженная в прошлых версиях

2.1.415

2 months ago

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

  • SCREEN SPACE SHADERS Addon обновлён до v19.

  • Оживлён объёмный дым r3_volumetric_smoke - можно расставлять на локациях в SDK и он будет работать.

  • Добавлена поддержка отладки рендера с помощью RenderDoc.

  • Добавлена поддержка Anomaly-style распакованных партиклов. Добавляем в fsgame.ltx:

$game_particles$        = true|     false|  $game_data$|        particles\

Пишем в консоли particles_export - двиг распакует все загруженные партиклы в текстовый формат. После этого двиг будет всегда читать распакованные партиклы из этой папки вместо файлов particles*.xr, если эта папка не пуста. Можно после редактирования распакованных партиклов используя конс. команду particles_import упаковать их обратно в один particles_cop.xr файл в ЗП-формате (это важно, партиклы в ЗП-формате должны быть названы именно так, т.к. имеют отличия от ТЧ-формата партиклов и читаются немного по-другому.) Стоит заметить, что запуск двига с распакованными партиклами происходит немного дольше.

  • Добавлена поддержка распаковки shaders.xr. Чтобы распаковать, в консоли должна быть активирована команда shaders_xr_export. После запуска двига, двиг распакует этот файл в текстовый shaders.ltx и после этого будет читать только этот конфиг вместо .xr файлов. Распакуется как shaders.xr, так и shaders_cop.xr (ЗП-вариант, если он есть).

  • Добавлен редактор для звуковых зон (запускается как и редактор погоды по SHIFT + F10) После редактирования настройки зон сохранятся в текстовом формате senvironment.ltx и после этого двиг будет читать только этот конфиг вместо senvironment.xr. Просто распаковать senvironment.xr можно активировав консольную команду senvironment_xr_export.

  • Добавлена консольная команда dbg_lalib_dump для дампа в лог текущего ELightAnimLibrary. Редачить его в тексте смысла нету - проще в SDK, но каждый раз искать что там - напряжно.

  • Добавлена поддержка круглой миникарты и часов на ней. Пример настройки:

    <minimap rounded="1" alpha="220">
        <level_frame x="75" y="670" width="172" height="172" stretch="1" alignment="c"/>

        <background width="350" height="380" stretch="1" alignment="c">
            <texture></texture>
            <dist_text x="75" y="3" width="100" height="20">
                <text align="r" font="letterica16" color="ui_clr_1" />
            </dist_text>
        </background>

        <clock_wnd x="18" y="170" width="39" height="16" alignment="c">
            <text x="0" y="0" font="letterica16" color="ui_clr_1" align="c" vert_align="c" />
        </clock_wnd>

        <compass x="75" y="670" width="192" height="192" stretch="1" heading="1" alignment="c">
            <texture></texture>
        </compass>

        <center width="4" height="4" alignment="c" stretch="1" heading="1">>
            <texture></texture>
        </center>
    </minimap>
  • Добавлена возможность биндить кнопки xml на keyaboard actions что б их потом можно было настроить, например:
[custom_keyboard_action]
dlg_quickaction = kDLG_QUICKACTION

в config\ui\ui_keybinding.xml:

<command id="kb_dlg_quickaction" exe="dlg_quickaction" />

в config\ui\carbody_new_16.xml:

<take_all_btn x="765" y="727" width="157" height="48" highlight_text="1" accel_action="dlg_quickaction">
...
</take_all_btn>

НО из-за того, что двиг все кнопки биндит без контекста, это не так удобно. Нельзя например в диалоге повестить туже кнопку что и на бег в игре.

  • Новые настройки объёмного света для аномалий:
light_volumetric_enable			= true
light_volumetric_quality		= 0.9
light_volumetric_intensity		= 0.05
light_volumetric_distance		= 0.3

idle_light_volumetric_enable		= true
idle_light_volumetric_quality		= 0.9
idle_light_volumetric_intensity		= 0.05
idle_light_volumetric_distance		= 0.4
  • Новые скриптовые методы для класса ламп:
local lamp = self.object:get_hanging_lamp()
lamp:set_volumetric( true )
lamp:set_volumetric_quality( 0.9 )
lamp:set_volumetric_intensity( 0.05 )
lamp:set_volumetric_distance( 0.3 )
  • Расширен класс скриптовых партиклов. Добавлены методы set_position, set_direction, set_orientation, last_position из Anomaly и добавлена возможность играть партиклы в худовом режиме: :play(true) / :play_at_pos(pos, true).
  • Добавлена консольная команда dbg_string_table_error_msg, чтобы собирать непереведённые строки в лог.
  • Добавлена консольная команда r_lens_flare для вкл/выкл флара от солнца.
  • Добавлены тени для шрифтов. В будущем надо будет подумать как лучше их настраивать.
  • Поведение клина при выстреле уточнено - теперь клинит не после выстрела, а так, чтобы поведение соответствовало Gunslinger Mod.
  • Добавлен параметр запуска -use-work-dir. С ним двиг будет искать fsgame.ltx в рабочей директории.
  • dont_interrupt_shot_anm для оружия по умолчанию отключено - всё таки это нужно только для Gunslinger Mod.
  • Таким образом, при добавлении оружий из Gunslinger, чтобы двиг понимал как с ними работать, в каждой секции такого оружия (или в общей для них базовой секции) должны присутствовать эти параметры:
dont_interrupt_shot_anm = true ;Не прерывать анимацию выстрела чтобы гильза успела вылететь, т.к. в гансе гильзы являются частью анимации выстрела
is_gunslinger_weapon = true ;Специальный флаг чтобы двиг понимал что это ствол из Gunslinger Mod и к нему надо применить фикс создания физ. оболочки для избежания ошибок с этим связанных.
  • Множественные исправления утечек памяти.
  • Фикс редких вылетов связанных с рестрикторами.
  • ...Множество прочих мелких фиксов и изменений...

2.1.414

4 months ago

Рендер:

  • Адаптирован SCREEN SPACE SHADERS Addon v18.1
  • Адаптирован ENHANCED SHADERS (PBR) + Enhanced Color Grading v1.10
  • Добавлен шейдер GTAO by Doenitz
  • Теперь мы не будем поддерживать два вида шейдеров, для тч и зп погоды. Шейдеры в OGSR GA и здесь будут общие. Соотв. корректная работа этих шейдеров на тч-погоде не гарантируется. Рекомендуем использовать зп-погоду, например эту или любую другую.
  • Теперь двиг должен правильно выбирать самый мощный GPU из имеющихся (актуально на ноутах с несколькими GPU)
  • Использование устаревших D3DX библиотек заменено на DirectXTex, DirectXMesh, DirectXMath. Благодаря этому двиг теперь поддерживает современные форматы сжатия текстур типа BC7 и не требует наличия в системе d3dx*.dll

Оптимизация:

  • Добавлено кэширование визуалов для уменьшения лагов при приближении к большим скоплениям объектов. Для этой же цели переделан механизм загрузки звуков для НПС. Вкл/выкл консольной командой g_prefetch.
  • Добавлено кэширование ui_shader для ускорения работы UI
  • Добавлена оптимизация для расчетов инверсной кинематики из Anomaly
  • Фикс лагов из-за партиклов если застрять на машине в кустах

Многопоточность:

  • Интегрирован TaskThreadPool для удобной работы с потоками и асинхронными задачами std::packaged_task
  • Добавлен асинхронный расчет дождя (конс. команда r_mt_rain)
  • Добавлен асинхронный расчет травы (конс. команда r_mt_details)
  • Добавлен асинхронный расчет солнца (конс. команда r_mt_sun)
  • Переделана асинхронная загрузка текстур (конс. команда r_mt_texload)

UI:

  • Переделана система шрифтов и парсер текста для корректной поддержки UTF-8. Шрифты с поддержкой UTF-8 можно генерировать используя Fonts_generator. Обратная совместимость с ANSI-символами, детект UTF-8 BOM и прочие нюансы учтены.
  • Чтобы не создавать кучу текстур шрифтов для разных размеров текста, можно создать одну текстуру большого размера и уменьшать через конфиг до нужной величины, например:
[ui_font_bender]
shader    = font
texture   = ui\ui_font_bender ;Текстура сгенерированного шрифта большого размера
scale_x   = 0.5 ;Уменьшаем в два раза высоту
scale_y   = 0.5 ;Уменьшаем в два раза ширину
interval  = 1, 0.75 ;Можно регулировать интервал между буквами сверху и сбоку.
  • Добавлена поддержка выравнивания текста по двум сторонам (alJustified для скриптов, align="j" для xml)
  • Сделаны отключаемыми кринжовые статики кубиков в ПДА (a_static, anim_static)
  • Поддержка рандомных загрузочных экранов (intro_l01_escape_1.dds, intro_l01_escape_2.dds, 3, 4, ...)
  • Название валюты вынесено в xml: ui_st_money_descr

Оружие:

  • Добавлена поддержка управления костями пулемётной ленты
bullet_bones = bullet_1, bullet_2, bullet_3, bullet_4, bullet_5, bullet_6, bullet_7, bullet_8, bullet_9, bullet_10, bullet_11, bullet_12
  • Добавлена опция в конфиг оружий dont_interrupt_shot_anm (по умолчанию выкл.) - давать ли доиграть анимацию выстрела после выстрела. Не на всех оружиях это хорошо выглядит, только для стволов из Gunslinger подходит отлично
  • Можно отключить шейдерное авторастягивание прицельной сетки добавив в конфиг предмета scope_texture_autoresize = false, например для широкой текстуры бинокля

Всё остальное:

  • Добавлен внутриигровой редактор погоды на базе ImGui - включается в игре по Shift + F10
  • Добавлена поддержка полупрозрачного cплэша в формате png
  • Клавиши скрытия/показа худа теперь можно настроить в опциях, т.к. стандартные NUM+/NUM- есть не на каждой клавиатуре
  • При скрытии худа теперь будет скрываться весь UI, включая окно новостей и курсор, что бы было удобнее делать скриншоты
  • Адаптация #432 : Добавлена поддержка спавн файлов со встроенным гейм графом, как в ЗП. Собрать спавн в таком виде можно через универсальные компиляторы с дополнительным ключом -insert_graph. Такие спавны не требуют глобального game.graph и локальных level.gct, level.graph. При отсутствии данного чанка (с графами) в файле спавна, игра будет загружать game.graph и спавн, как раньше.
  • Фикс багов физики - зафиксированные физ. объекты теперь не должны со временем менять своё положение в некоторых случаях
  • Добавлен каллбек, который вызывается перед поднятием предмета ГГ (нужен для анимации подбора предметов)
[engine_callbacks]
; Если вернуть false - движок не будет поднимать предмет
actor_on_item_before_pickup = ogsr_actor_animation.on_item_before_pickup
  • Добавлен метод level.iterate_nearest и каллбеки on_footstep, on_actor_land, on_actor_jump из Anomaly
  • Вытащена из дебага в релиз консольная команда dbg_draw_skeleton
  • OpenAL Soft обновлён до версии 1.23.1
  • Mimalloc обновлён до актуальной версии
  • Генератор рандомных чисел (CRandom) теперь использует std::mersenne_twister_engine и работает намного лучше
  • ...Множество прочих мелких фиксов и изменений...

2.1.407

1 year ago
  • Mimalloc обновлён до v2.0.9

  • ScreenSpaceShaders addon обновлён до версии 14.9

  • Починен и работает EAX

  • Добавлено переключение режимов огня колёсиком мыши. Переключения не циклическое. Т.е. дойдя в одну сторону до одиночного режима, а в другую - до автоматического - далее на другой режим уже переключаться не будет. Таким образом можно быстро переключиться на одиночный или автоматический режим, просто сильно крутанув колёсико.

  • Восстановлен зум для мини карты который был в билдах. Работает по Shift + NUM+ \ NUM-.

  • Добавлена консольная команда g_spawn_to_inventory

  • Добавлены новые параметры для создания контактных гранат:

explosion_on_kick = true ;делает гранату контактной
safe_dist_to_explode = 10 ;минимальная дистанция для контактного взрыва
explode_by_timer_on_safe_dist = true ;по сути влияние safe_dist_to_explode на взрыв по таймеру. Если true - грена будет взрываться даже в пределах safe_dist_to_explode по таймеру.
  • Восстановлен псевдо-респавн артов в аномалиях, который был в ТЧ. Включается опцией enable_spawn_artefacts.

  • ...Многочисленные багфиксы и прочие изменения...

2.1.402

1 year ago
  • Адаптирован Screen Space Shaders addon - SSDO, SSR, лужи, DOF, FOG, и тд. Переработано меню настроек графики, кол-во настроек уменьшено, сделано более понятным как в современных играх.

  • Адаптирована консоль из Anomaly, добавлена команда g_console_show_always - для рендеринга лога консоли всегда

  • OpenAL Soft обновлён до версии 1.22.2

  • Mimalloc обновлён до актуальной версии

  • Исправлены проблемы с IReader, который иногда вызывал memory corruption при чтении файлов моделей и не только.

  • Добавлена поддержка скриптовых анимаций из Anomaly

  • Поддержка _start_k для анимаций. Значение от 0,001 до 1

  • hud_movement_layers из Anomaly

[hud_movement_layers]
;types: 0 = aim_walk, 1 = aim_crouch, 2 = crouch, 3 = walk, 4 = run, 5 = sprint
;type     path         speed   power
movement_layer_0  = movement\aim_walk.anm,  1,   0.85
movement_layer_1  = movement\aim_walk.anm,  0.75,  0.5
movement_layer_2  = movement\newwalk.anm,   1,   0.1
movement_layer_3  = movement\newwalk.anm,   1,   0.1
movement_layer_4  = movement\newwalk.anm,   1.25,  0.125
movement_layer_5  = movement\newrunreload.anm, 1,   0.15
  • Добавлен для дробовиков звук snd_add_cartridge_empty и анимации anm_reload_jammed, anm_reload_jammed_last

  • Добавлена поддержка ЗП-формата партиклов. Миксовать эффекты из ЗП и ТЧ в один .xr нельзя. ЗП эффекты должны быть в отдельно файле в имени которого должно быть particles_cop.xr. Пусть сначала грузиться particles_cop.xr (если он есть) в ЗП формате, а потом уже particles.xr (если есть) в обычном формате и добавит только то чего не хватает. Так логичнее всего подключать ЗП\Аномали партиклы.

  • Скрины для сохранок делаются в более высоком качестве

  • Убрано перекрестье при перезарядке и беге

  • Доделаны советы при загрузке в новом виде

  • Починен параметр width_correction у шрифтов, и поэтому переименован в font_width_correction

  • Экспорт в шейдеры fog_params.y --> fog_near, fog_params.z --> fog_far. Может когда-то пригодятся.

  • Различные изменения для скриптов:

snd_obj:set_start_time(0.5) -- для sound_object добавлен метод для установки позиции начала звука

sobj.visual_name = "новый_визуал" -- для серверных объектов имеющих визуал так можно читать/изменять название визуала

-- Возможность открывать на чтение\запись ltx файлы в любом каталоге: --
local setting_ini = ini_file(full_name, false) -- false тут нужен, значит файл будет искать как указано, без привязки к configs
setting_ini.readonly = false -- обязательно при сохранении

setting_ini:w_string("setting", "string_param", "string_value123")
setting_ini:w_bool("setting", "bool_param", true)
setting_ini:w_float("setting", "float_param", 123.123)

setting_ini:save()
----------------------------------------------------------------------------

sobj:set_health(0.5) -- можно менять здоровье для серверного объекта

obj:setVisible(false) -- отключить рендеринг клиентского объекта, можно так скрывать объекты

local slot_n = obj:get_slot() -- возвращает номер слота (u8), в котором находится этот предмет.

-- Добавлен флаг `FS.FS_NoLower` чтобы file_list_open_ex не приводил имен а файлов к нижнему регистру
local flist = getFS():file_list_open_ex( "$game_saves$", FS.FS_ListFiles + FS.FS_ClampExt + FS.FS_RootOnly + FS.FS_NoLower, "*.sav" )
flist:Sort(FS.FS_sort_by_modif_down)
for file in flist:GetAll() do
  wnd:AddItemToList( file:NameFull(), file:Modif() )
end

-- Добавлен третий аргумент в sound_object что б играть звук как музыку (по сути только громкость будет регулироваться через ползунок громкости музыки в меню). Значения: `sound_object.effect` (дефолт) и `sound_object.music`.
local snd = sound_object(path, 0, sound_object.music)

-- Экспорт `CMainMenu:IsActive()` -- не понятно зачем это надо но пусть будет

-- Добавлен каллбек `entity_alive_before_hit` для классов `CCar` & `CHelicopter`

2.1.394

1 year ago
  • Тесселяция теперь может работать на худовых моделях
  • Добавлена возможность замены шейдеров в визуалах через конфиг:
; Замена шейдеров в визуалах
[vis_shaders_replace]
; шейдер тесселяции: models\model -> models\model_pn. Должен присутствовать в shaders.xr!
actors   = models\model,models\model_pn, models\weapons,models\model_pn, models\artefact,models\model_pn, models\artefact2,models\model_pn
new      = models\model,models\model_pn, models\weapons,models\model_pn, models\artefact,models\model_pn, models\artefact2,models\model_pn
monsters = models\model,models\model_pn
dynamics\weapons\wpn_hand = models\model,models\model_pn, models\weapons,models\model_pn
; Т.е. тут обрабатываются все визуалы, у которых в пути есть `dynamics\weapons\wpn_hand`. В качестве значения указываются пары что на что менять.
  • Исправлены различные ошибки...

2.1.390

1 year ago

Фундаментальные изменения в движке:

  • Все модули движка линкуются статически, поэтому оставлен только DX11 рендер.
  • Двиг переведён на С++20. Используются самые новые features, такие как std::format, и тд.
  • Интегрирован mimalloc - is a general purpose allocator with excellent performance characteristics.

Наиболее значимые изменения:

  • Теперь двиг поддерживает погоду из Зова Припяти. Тип погоды определяется по наличию специфичных для этой погоды строк в fsgame.ltx. Если их нет - используется ТЧ-стайл погода.

  • Починен и возвращён оптимизированный MSAA. Крайне рекомендуется к использованию, потому что хорошо сглаживает провода и полупрозрачную геометрию. На настройках 2х/4х жрет не очень много fps.

  • В меню добавлена настройка размера шрифтов - особенно пригодится обладателям мониторов с сверхвысокими разрешениями. Регулируется ширина и высота шрифтов конс. командами g_font_scale_x, g_font_scale_y.

  • Возвращена многопоточная загрузка текстур. Теперь она даёт очень существенное ускорение загрузки игры. Управляется конс. командой r_mt_texload и соотв. опцией в меню.

  • Реализовано Anomaly-style разделение расчетов худа для предметов в левой и правой руках + новая система коллизии худа для OGSR GA.

  • Добавлена поддержка 90% анимаций для оружия из Gunslinger Mod

  • Добавлена поддержка 3D PDA. Важный нюанс: для его работы слот пда должен быть активируемым:

[inventory]
slot_visible_8 = true ;pda
  • Переписан настройщик худа, теперь в нём можно настраивать позиции лазера и фонаря.

  • Добавлен настройщик положения оружия от третьего лица. Можно настроить положение оружия как у актора от 3 лица, так и у НПС. Настройка для состояния за спиной у нпс тоже работает. Для включения режима настройки наводим курсор на НПС и набираем в консоли dbg_adjust_attachable_item имя_секции_оружия или (что более удобно) dbg_adjust_attachable_item_in_slot номер_слота. LSHIFT + Z/X/C + PageUP/PageDown - настройка position (x,y,z) LALT + Z/X/C + PageUP/PageDown - настройка rotation (x,y,z) LSHIFT + ENTER - сохранение результатов в папку logs/_world/ Шаги для настройки регулируются командами adjust_delta_pos, adjust_delta_rot

  • Добавлена SFZ-стайл тряска рук при воздействии пси-ауры мутантов. Интенсивность тряски регулируется через controller_amplitude в секции [wpn_bobbing_effector]

  • Добавлено скриптовое управление demo_record:

level.demo_record_start()
level.demo_record_stop()

local HPB = level.demo_record_get_HPB()
level.demo_record_set_HPB(HPB)

-- направление
-- HPB.x Left\Right
-- HPB.y Up\Down
-- HPB.z Rotate Left\Rotate Right

local position = level.demo_record_get_position()
level.demo_record_set_position(position)

-- position x y z как обычно на уровне

level.demo_record_set_direct_input(true/false) -- управление прямым вводом

Так же поправлено управление игрой в режиме demo record. Включается на * (звездочку DIK_MULTIPLY)

  • Эффекты ppe теперь должны отображаться в режиме от 3 лица. Так же добавлена команда g_effects_on_demorecord что б эффекты были и в режиме demo_record.

  • Добавил метод game.stop_tutorial и ЗП-стайл экшены для туториалов типа такого:

<action id="use" finalize="1">xr_effects.pri_a18_use_idol</action>
  • Для статиков можно указывать прозрачность. ogm видео теперь тоже поддерживает регулировку прозрачности, как и обычные текстуры. Примеры:

XML:

<!-- color_alpha="192" указывает, что текстура будет иметь 25% прозрачности. Значение от 0 до 255, от полностью прозрачной (не видимой) до полностью оригинальной текстуры. При отсутствии этого параметра текстура показывается как есть, т.е. без доп. прозрачности. -->
<hud_gaz_blue x="0" y="0" width="1024" height="768" stretch="1" color_alpha="192"
  light_anim="ui_slow_blinking_alpha" la_cyclic="1" la_texture="0" la_text="1" la_alpha="1" priority="30">

LUA:

local cs = get_hud():GetCustomStatic( hud_static )
cs:wnd():SetColorA( 128 ) --Здесь SetColorA установить прозрачность статика в 50%.
cs:wnd():SetColorA( 255 ) -- Этот вызов вернет статик к его оригинальному виду, т.е. без доп. прозрачности.
  • Добавлен функционал работы с мешами из скриптов. Вкл/выкл их видимости, а так же анализ модели (дамп всех костей и мешей). Главная фича управления мешами (в отличие от костей) в том, что можно менять внешний вид модели ничего не делая с скелетом.
local item = db.actor:active_item()
if item then
  item:dump_visual_to_log() --Распечатать в лог информацию о мешах и костях модели - мировой и худовой, если худовая доступна.
  log3("--Mesh count of [%s]: [%s]", item:name(), item:get_mesh_count_hud()) --вывести кол-во мешей в худовой модели.
  item:set_show_model_mesh_hud(0, false) --Установить видимость меша для худовой модели, в данном случае скрыть нулевой.
  local shown = item:get_show_model_mesh_hud(0) --узнать показан ли меш

  --Тоже самое для мировых моделей, подойдет для любых объектов наверно, не только для оружия.
  item:set_show_model_mesh(4, true)
  item:get_show_model_mesh(4)
  item:get_mesh_count()
end

Прочие более мелкие изменения:

  • Добавлена опция volumetric_for_actor для управления объёмным светом фонаря актора, т.к. у актора объемный свет выглядит не очень красиво.
  • Добавлена конс. команда show_wnd_rect_names для показа имён статиков при отладке UI.
  • Добавлена конс. команда g_mouse_wheel_switch_slot и соотв. опция в меню.
  • Добавлено чтение hud_fov из конфига оружия
  • Редактирование меток в пда перенесено на левую кнопку мыши
  • Патрон в патроннике можно включить в конфиге оружия CartridgeInTheChamberEnabled = true
  • Xml парсер не будет игнорировать грубые ошибки в синтаксисе xml файлов. Однако оставлен режим совместимости в [features]:
;Игнорировать ошибки парсинга xml (в ТЧ они встречаются даже в оригинальной игре)
skip_shoc_xml_errors = true
  • Добавлены звуки snd_aim_start, snd_aim_end, snd_close_weapon_empty
  • Для оружия с трёхстадиевой перезарядкой при расклине будет проигрываться первая и третья стадия перезарядки.
  • Добавлена конс. команда r_terrain_parallax_enable и соотв. опция в меню.
  • Обновлён xrCompress. Добавлен ключ -WW для worldwide формата архивов, добавлен игнор пустых папок, добавлены настройки игнорируемых имен файлов, а не только расширений (см. xrCompress_Cfg.ltx)
  • Фикс ситуации когда вместо оружия в руках нпс мог оказаться артефакт
  • Команда ai_use_torch_dynamic_lights будет управлять объемным светом фонарей нпс, если он включен для них. Ранее эта команда не работала вообще.
  • Убран игнор ошибок в луа каллбеках. (на удивление в очень редких случаях ошибки там к сожалению могли игнорироваться)
  • Фикс тумана для шейдера models\transparent
  • Добавлен специальный шейдер для коллиматоров models_lfo_light_dot_weapons
  • Добавлен метод PlaySound("filename") в класс меню.
  • При использовании движка с оружием из Gunslinger Mod, надо добавить в system.ltx:
[mod_ver]
mod_ver = "OGSR: Gunslinger Addon"

так будут активированы необходимые для него фиксы. Затычка от крашей в ode.dll например.

2.1.386

2 years ago

Значимых изменений не много, потому что в основном идёт работа над OGSR:Gunslinger Addon. Какие-то новые баги тоже вполне могут быть.

  • Обновлён OpenAL Soft до версии 1.21.1

  • Добавлены инструменты для настройки UI в пикселах на мониторе конечного юзера, а не в координатной системе 1024х768. Это нужно что бы можно было избежать растянутого UI на широких мониторах, например ( #378 ). При включении атрибута as_is="1" в конфиге, GUI элементы будут читать координаты в пикселах конечного монитора, а не в сетке 1024х768 как было в ванили. Поэтому размеры и координаты в GUI-конфигах придется править, чтобы выглядело нормально и влезало в экран. Скорее всего придется поэкспериментировать. Но зато когда правкой конфигов удастся получить хороший результат, этот результат будет таким же хорошим для всех мониторов.

  • Для drag-drop элементов так же добавлен атрибут as_is, чтобы иконки инвентаря сохраняли правильные пропорции при любом отношении сторон экрана.

  • Так же для drag-drop элементов добавлен атрибут autocalc (0 or 1) управляющий автокалькуляцией размера и количества ячеек. Иконки инвентаря авто-масштабируются в сторону уменьшения, если это необходимо для того чтобы в драгдроп-лист вместилось то число ячеек, что указано в его конфиге. Драгдроп-лист до-заполняется дополнительными ячейками в ширину или высоту, до полного заполнения, если после применения вышеописанных манипуляций в нем осталось свободное место. Размер ячеек регулируется новым атрибутом cell_size (по умолчанию 50), старые атрибуты cell_width, cell_height не используются.

  • Сделал нормальную интерактивность тракбаров, в т.ч. для скриптов. Добавлен UI-евент TRACKBAR_CHANGED, и добавлен метод тракбара GetTrackValue. Пример использования в Lua:

self:AddCallback(
	"control_"..opt,
	ui_events.TRACKBAR_CHANGED,
	function()
		--log('TRACKBAR_CHANGED(%s) : %3.3f', opt, ctl:GetTrackValue())
	end
)
  • GetColorFromText с поддержкой ARGB или RGB. Более "дружелюбное" чтение конфигов. Автоматически понимает, в каком формате цвет - RGB или ARGB. Не генерирует вылет в случае невалидной кодировки.

  • Вывод дополнительной информации при вылете 'wrong fixed bone'.

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

  • Добавлена опция volumetric_for_actor для фонарика, чтобы для актора объемный свет можно было отключить, т.к. он только у нпс красиво выглядит.

  • Псевдо-коллизию камеры можно выключать командой g_camera_collision

  • Добавлена конс. команда show_wnd_rect_names для показа имён статиков при их отладке.

  • Добавлена конс. команда g_mouse_wheel_switch_slot взамен старой опции в конфиге.

  • Изменено имя окна. Движок больше не детектируется как CoP.

  • Добавлен режим более строгой проверки синтаксиса xml файлов

;Игнорировать ошибки парсинга xml (в ТЧ они встречаются даже в оригинальной игре)
skip_shoc_xml_errors = true

2.1.385

2 years ago

Значимых изменений не много, потому что в основном идёт работа над OGSR:Gunslinger Addon. Какие-то новые баги тоже вполне могут быть.

  • Обновлён OpenAL Soft до версии 1.21.1

  • Добавлены инструменты для настройки UI в пикселах на мониторе конечного юзера, а не в координатной системе 1024х768. Это нужно что бы можно было избежать растянутого UI на широких мониторах, например ( #378 ). При включении атрибута as_is="1" в конфиге, GUI элементы будут читать координаты в пикселах конечного монитора, а не в сетке 1024х768 как было в ванили. Поэтому размеры и координаты в GUI-конфигах придется править, чтобы выглядело нормально и влезало в экран. Скорее всего придется поэкспериментировать. Но зато когда правкой конфигов удастся получить хороший результат, этот результат будет таким же хорошим для всех мониторов.

  • Для drag-drop элементов так же добавлен атрибут as_is, чтобы иконки инвентаря сохраняли правильные пропорции при любом отношении сторон экрана.

  • Так же для drag-drop элементов добавлен атрибут autocalc (0 or 1) управляющий автокалькуляцией размера и количества ячеек. Иконки инвентаря авто-масштабируются в сторону уменьшения, если это необходимо для того чтобы в драгдроп-лист вместилось то число ячеек, что указано в его конфиге. Драгдроп-лист до-заполняется дополнительными ячейками в ширину или высоту, до полного заполнения, если после применения вышеописанных манипуляций в нем осталось свободное место. Размер ячеек регулируется новым атрибутом cell_size (по умолчанию 50), старые атрибуты cell_width, cell_height не используются.

  • Сделал нормальную интерактивность тракбаров, в т.ч. для скриптов. Добавлен UI-евент TRACKBAR_CHANGED, и добавлен метод тракбара GetTrackValue. Пример использования в Lua:

self:AddCallback(
	"control_"..opt,
	ui_events.TRACKBAR_CHANGED,
	function()
		--log('TRACKBAR_CHANGED(%s) : %3.3f', opt, ctl:GetTrackValue())
	end
)
  • GetColorFromText с поддержкой ARGB или RGB. Более "дружелюбное" чтение конфигов. Автоматически понимает, в каком формате цвет - RGB или ARGB. Не генерирует вылет в случае невалидной кодировки.

  • Вывод дополнительной информации при вылете 'wrong fixed bone'.

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

  • Добавлена опция volumetric_for_actor для фонарика, чтобы для актора объемный свет можно было отключить, т.к. он только у нпс красиво выглядит.

  • Псевдо-коллизию камеры можно выключать командой g_camera_collision

  • Добавлена конс. команда show_wnd_rect_names для показа имён статиков при их отладке.

  • Добавлена конс. команда g_mouse_wheel_switch_slot взамен старой опции в конфиге.

  • Изменено имя окна. Движок больше не детектируется как CoP.