Skip to content

Releases: OGSR/OGSR-Engine

1.oct.2024

02 Oct 09:59
6ae9226
Compare
Choose a tag to compare

Caution

UPD: 06.11.2024 в этот релиз добавлена более свежая версия движка, исправлена проблема #490

UPD2: 06.12.2024 в этот релиз добавлена более свежая тестовая версия движка c большими изменениями по оптимизации:

  • Многопоточность (D3D11 Deferred Contexts для каскадов теней + асинхронные расчеты)
  • Управление некоторыми новыми оптимизациями в консоли:
r_mt_sun - вкл/выкл многопоточные каскады теней (сильно влияет на FPS, теперь можно включать тени от травы и они не будут лагать)
r_mt_rain - вкл/выкл многопоточный дождь (сильно влияет на FPS при дожде)
r_mt_particles - вкл/выкл многопоточные партиклы (не сильно влияет на fps)
  • Множество переделок в структуре рендера.
  • !Для правильной работы рендера требуется обновлённый external.ltx (добавилась секция [shader_params_export]). Без этого будут баги!

Системные требования повышены:

  • GPU с поддержкой DirectX 11.2 и выше.
  • Windows 8.1 и выше.

Warning

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

Что сделано на данный момент:

  • Добавлена поддержка сглаживания с использованием технологии NVIDIA DLSS
  • Добавлен патченый скрипт погодного менеджера под оригинальную погоду из ТЧ, чтобы на ней работал ветер и саншафты без правок самой погоды. Скриншот с этой версии движка + Wooden Addon:
    ss_admin_10-02-24_12-38-21_(l01_escape)
  • Добавлена поддержка блокировки клавиш из скриптов:
level.block_action(key_bindings.kTORCH)
level.unblock_action(key_bindings.kTORCH)
  • Добавлены звуки включения / выключения для фонарика:
[device_torch]:identity_immunities
snd_turn_on   = weapons\device_torch\snd_switch_on
snd_turn_off  = weapons\device_torch\snd_switch_off
  • Добавлена возможность привязать свет фонарика к камере:
[device_torch]:identity_immunities
; светить из камеры, а не из фонарика на голове актора
bind_to_camera = true

; смещение источников света фонарика
; эти параметры используется только при включенном bind_to_camera и только для актора с видом от первого лица.
camera_torch_offset = 0, 0.1, 0.2
camera_omni_offset  = 0, 0.1, 0.4

; Минимальное расстояние до препятствия, когда свет фонарика начнёт смещаться назад, сохраняя это расстояние. Нужно что бы препятствие было равномерно освещено. Значение по умолчанию - 0.5
camera_min_target_dist = 0.5
  • Поддержка звуков для talk.xml:
  <action_sounds>
    <snd_open>interface\inv_open2</snd_open>
    <snd_close>interface\inv_open2</snd_close>
    <snd_say>interface\inv_page2</snd_say>
  </action_sounds>
  • Поддержка звуков для carbody_new.xml:
 <action_sounds>
  <snd_open>interface\inv_open</snd_open>
  <snd_close>interface\inv_close</snd_close>
  <snd_properties>interface\inv_properties</snd_properties>
  <snd_drop_item>interface\inv_drop</snd_drop_item>
  <snd_detach_addon>interface\inv_detach_addon</snd_detach_addon>
  <snd_item_use>interface\inv_slot</snd_item_use>
 </action_sounds>
  • Добавлена поддержка переключения языка консольной командой g_language. Можно добавить настройку в меню и переключать язык до загрузки уровня. Переключение действует только на тексты. Шрифты, звуки и тп - не меняются. Языки указываются тут:
[string_table]
language = rus, ukr, eng
  • Расширение экспорта в скрипты:
local dir = device().cam_dir
local up, right = vector(), vector()
dir:generate_orthonormal_basis(up, right)
dir:generate_orthonormal_basis_normalized(up, right)

-- методы типа db.actor:move_to_belt будут возвращать результат, удалось ли переместить предмет, пример:
if not db.actor:move_to_belt(obj) then
  for i = 0, db.actor:belt_count() - 1 do
    local item = db.actor:item_on_belt( i )
    db.actor:move_to_ruck(item)
    db.actor:move_to_belt(obj)
    return
  end
end
  • Запрет перезарядки во время бега теперь управляется консольной командой g_lock_reload
  • Добавлена плавная смена гранат
  • Добавлены запреты некоторых действий когда актор что то делает с оружием в руках (перезарядка, доставание/убирание и тп)
  • Запрещено выкидывать из рук квестовые предметы.

2.1.421

09 Jul 07:32
Compare
Choose a tag to compare

2.1.417

27 Jun 15:10
Compare
Choose a tag to compare
2.1.417 Pre-release
Pre-release
  • Настройка звукового устройства в меню доработана и не требует перезапуска движка
  • Настройка EFX теперь тоже не требует перезапуска
  • Переработаны реакции худа на движения актора, добавлена реакция на движение вперед/назад
  • Добавлена поддержка смены текстур пуль для оружий. Пример настроек для Gunslinger-style дробовиков:
;Имена текстур пуль прописанных в модели, которые будут заменяться
bullet_textures_in_model = wpn\ammo_12x70_blue, wpn\ammo_12x70
;Пары "название секции патронов, текстура для пуль из этой секции"
bullet_textures_for_ammos = ammo_12x76_zhekan, wpn\ammo_12x70_blue, ammo_12x70_buck, wpn\ammo_12x70_red, ammo_12x76_dart, wpn\ammo_12x70_green
  • Добавлена поддержка ЗП формата для файлов описания текстур texture_desc. Они удобнее - можно кучу текстур описать в одном файле. Так же автозагрузка описаний по пути ui\textures_descr\*.xml
  • Добавлен skip_prefix = true для секций шрифтов. Двиг не будет требовать добавлять font_prefix (из [string_table]) к имени текстуры такого шрифта:
[ui_font_digital_16]
skip_prefix = true
shader    = font
texture   = ui\fonts\Digital52
scale_x   = 0.30
scale_y   = 0.30
  • Добавлена команда r_font_shadows для вкл/выкл. теней от шрифтов
  • Добавлен плавный scroll в ui
  • Доадаптировано SSS Interactive Grass for Anomalies. Примеры настроек для аномалий:
;Холодец
bend_grass_blowout = true
bend_grass_blowout_speed = 3.0
bend_grass_blowout_radius = 3.0
;----------------------------------
;Воронка
bend_grass_idle_anim = 3
bend_grass_idle_radius = 4.0
bend_grass_idle_str = 2.0
bend_grass_idle_speed = 1.5

bend_grass_whenactive_str = 3.0
bend_grass_whenactive_speed = 3.0

bend_grass_blowout = true
bend_grass_blowout_duration = 2500
bend_grass_blowout_speed = 6.0
bend_grass_blowout_radius = 20.0
;----------------------------------
;Карусель
bend_grass_idle_anim = 2
bend_grass_idle_radius = 4.0
bend_grass_idle_speed = 1.3

bend_grass_whenactive_anim = 3
bend_grass_whenactive_str = 3.5
bend_grass_whenactive_speed = 4.5

bend_grass_blowout = true
bend_grass_blowout_duration = 5500
bend_grass_blowout_speed = 5.0
bend_grass_blowout_radius = 20.0
;----------------------------------
;Трамплин
bend_grass_idle_anim = 3
bend_grass_idle_radius = 4.0
bend_grass_idle_str = 2.0
bend_grass_idle_speed = 1.5

bend_grass_whenactive_str = 3.0
bend_grass_whenactive_speed = 3.0

bend_grass_blowout = true
bend_grass_blowout_duration = 2500
bend_grass_blowout_speed = 6.0
bend_grass_blowout_radius = 20.0
;----------------------------------
;Электра
bend_grass_blowout = true
bend_grass_blowout_speed = 4.0
bend_grass_blowout_radius = 5.0
;----------------------------------
;Жарка
bend_grass_idle_radius = 3.5

bend_grass_whenactive_anim = 4
bend_grass_whenactive_str = 2.0
bend_grass_whenactive_speed = 3.5

bend_grass_blowout = true
bend_grass_blowout_duration = 2500
bend_grass_blowout_speed = 3.0
bend_grass_blowout_radius = 5.0
  • Убран assert на битрейт звука R_ASSERT3(ovi->rate == 44100, "Invalid source rate:", pName); вроде как это не актуально и OpenAL должен справляться со звуком с разным битрейтом.
  • Добавлен debug_render для скриптов из STALKER-Anomaly-modded-exes
  • Добавлена консольная команда particle_update_mod для управления плавностью партиклов из STALKER-Anomaly-modded-exes
  • Поправлено чтение clouds_color в погодных секциях, т.к. бывает что там по 4 параметра а не по 5.
  • Добавлен экспорт в скрипты функции level.is_ray_intersect_sphere для проверки пересечения луча со сферой:
function is_actor_looking_to_pos( pos, radius )
  return level.is_ray_intersect_sphere( device().cam_pos, device().cam_dir, pos, radius ) >= 0
end
--К примеру проверка, смотрит ли актор в область с радиусом 0.5 от object:position()
local looking = is_actor_looking_to_pos( object:position(), 0.5 )
  • Из скриптов теперь можно вызвать __debugbreak() чтобы можно было отладить скрипт с просмотром переменных и тп. в студии используя LuaDkmDebugger.
  • ...Множество мелких фиксов и изменений. Full Changelog: 2.1.416...2.1.417 ...

2.1.416

14 Mar 08:06
Compare
Choose a tag to compare

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

2.1.415

29 Feb 07:55
Compare
Choose a tag to compare
2.1.415 Pre-release
Pre-release

Спустя долгое время, обновлён 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

24 Dec 12:03
Compare
Choose a tag to compare

Рендер:

  • Адаптирован 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

10 Mar 10:15
c56f935
Compare
Choose a tag to compare
  • 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.406

08 Mar 17:41
Compare
Choose a tag to compare
2.1.406 Pre-release
Pre-release

Full Changelog: 2.1.402...2.1.406

2.1.402

01 Feb 09:12
Compare
Choose a tag to compare
  • Адаптирован 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

17 Oct 10:57
Compare
Choose a tag to compare
  • Тесселяция теперь может работать на худовых моделях
  • Добавлена возможность замены шейдеров в визуалах через конфиг:
; Замена шейдеров в визуалах
[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`. В качестве значения указываются пары что на что менять.
  • Исправлены различные ошибки...