Releases: OGSR/OGSR-Engine
2.1.416
2.1.415
Спустя долгое время, обновлён 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
Рендер:
- Адаптирован 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
-
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
Full Changelog: 2.1.402...2.1.406
2.1.402
-
Адаптирован 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
- Тесселяция теперь может работать на худовых моделях
- Добавлена возможность замены шейдеров в визуалах через конфиг:
; Замена шейдеров в визуалах
[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
Фундаментальные изменения в движке:
- Все модули движка линкуются статически, поэтому оставлен только 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
Значимых изменений не много, потому что в основном идёт работа над 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.359
- Добавлена поддержка ЗП-стайл детекторов в руках.
Простой и средний детекторы полностью работают как в ЗП, элитный детектор с экраном работает по огсе-системе (артефакты, аномалии и квестовые штуки на нем рисуются шейдером с управлением из скриптов, а не через рендер ui - у меня он по не понятным причинам не работает, для моих целей это и не нужно, поэтому я особо на это время не тратил. Если у кого-то есть желание помочь - я буду только рад.) Увеличил лимит на кол-во показываемых аномалий и артефактов, которые шейдер может нарисовать на экране детектора - было 8 , стало 24.
По причинам выше, ui_detector_artefact.xml
сделан не обязательным.
Старый класс детекторов без худа переименован в CCustomDetectorSHOC
, они будут работать как раньше без изменений.
Добавлена возможность детектировать все артефакты добавив в конфиг детектора:
af_class_all = true
af_sound_all_ = detectors\art_beep1
af_freq_all = 0.05, 2
Добавил для скриптов проверку get_actor_obj():IsDetectorActive()
- так можно проверять, находится ли детектор в руках актора в данный момент.
Артефактам в конфиг добавились параметры af_rank
, can_be_controlled
, det_show_particles
, det_hide_particles
, particles_bone
, det_show_snd
, det_hide_snd
из ЗП. Я так понимаю для того чтобы можно было делать арты невидимыми (не тестировалось)
Детектор можно держать в руках месте с болтом, ножом или предметом которому прописан первый слот (пистолетный).
- Сделали ганслингер-стайл эффекты выглядываний. Добавились новые параметры для оружия (по умолчанию в движке такие же значения как тут):
lookout_enabled = true
lookout_transition_time = 0.25
lookout_hud_offset_pos = 0.045, 0.0, 0.0
lookout_hud_offset_rot = 0.0, 0.0, 10.0
lookout_aim_enabled = true
lookout_aim_transition_time = 0.15
lookout_aim_hud_offset_pos = 0.0, 0.0, 0.0
lookout_aim_hud_offset_rot = 0.0, 0.0, 15.0
- Добавлена поддержка многих анимаций для оружия (анимации moving будут работать если выключен bobbing эффектор конечно же):
anm_shoot*
anm_idle_aim_start*
anm_idle_aim_end*
anm_idle_moving_crouch*
anm_idle_moving_slow*
anm_idle_aim_moving*
anm_idle_aim_scope_moving*
anm_idle_aim_g ; - тоже самое что и anm_idle_g_aim
anm_idle_aim_w_gl ; - тоже самое что и anm_idle_w_gl_aim
-
Добавил для аномалий параметр
DestroyAfterBlowout
, чтобы можно было удалить мины после их взрыва. Мины же на классе аномалий сделаны. -
Добавил для скриптов проверку
db.actor:active_item():get_weapon():UseScopeTexture()
- показывает, использует ли оружие текстурный прицел в данный момент. -
Скриптовый каллбек на нажатие клавиши перенесен в другое место, чтобы он срабатывал в ui.
-
В скриптовый каллбек
article_info
передается ещё один аргумент - текст артикла. -
В
scope_bone
можно указывать несколько костей через запятую. -
Исправлен вылет при попытке снять прицел с оружия находящегося в ящике, а не в инвентаре.
-
Пофиксил растянутую иконку заряда рпг на худе.
-
Исправлена работа консольной команды
g_spawn
. -
Поправлен баг с анимациями разряженного пистолета.
-
Убрана квантизация параметров анимаций при их загрузке.
Т.к. изменений/переделок в коде движка довольно много, весьма вероятно, что в этой версии могут быть новые баги, которых мы пока не заметили.