Zander_driver 10 331 Опубликовано 10 Января 2017 @Graff46, Они все вызываются. При убирании из слота - дроп или перемещение в рюкзак, как сказано выше. Просто комбинаторика вызовов колбеков. Хотя да, надо отслеживать что дропнутый/перемещенный итем до этого был в слоте, а не где-нибудь еще. Это решается небольшой табличкой, в которой хранится все актуальное что/где у нас находится. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 7 Ноября 2019 А магазинное питание переносить в движок, кто-то когда-то пробовал, или я первый буду? Просто любопытно... 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 7 Ноября 2019 только что, abramcumner сказал: Ты имеешь ввиду, проверить при перезарядке, есть ли в магазине патроны и, если есть, заспавнить пачку патронов, ... нет... 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 7 Ноября 2019 только что, abramcumner сказал: тогда рассказывай Зачем... тема мода "магазинное питание" за авторством Кирага, существует много лет. Что это такое, можно там прочитать, вместо того чтобы скабрезничать. То что вы выше написали, к магазинному питанию не имеет отношения. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 7 Ноября 2019 только что, abramcumner сказал: Это единственное отличие Нет. Вам заняться нечем? 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 15 Ноября 2019 (изменено) Наткнулся на непонятку... Собственно, суть проблемы. Поставил VS, скачал исходники движка OGSR отсюда, Собрал. Release, x64. Инструкции по адаптации модов на этот двигатель изучил, в самом первом приближении все что надо сделал, упаковал свой мод xrCompress-ом, запускаю... Движок думает 8 минут с черным экраном. Не добираясь до главного меню. То что он потом вылетает это ладно. Вылет = информация, разберусь, уберу вызовы того что больше не нужно, моя забота короче. То что от запуска до начала попыток читать _g.script, проходит 8 минут - вот это вот, огорчает. Лог при этом образуется вот такой... Скрытый текст * Detected CPU: AMD FX-4330 Quad-Core Processor [AuthenticAMD], F111/M2/S0 * CPU features: RDTSC, MMX, SSE, SSE2, SSE3, MONITOR/MWAIT, SSSE3, SSE4.1, SSE4.2, SSE4a, AVX * CPU cores: [2], threads: [4] * CPU0 current freq: 4000 MHz, max freq: 4000 MHz * CPU1 current freq: 4000 MHz, max freq: 4000 MHz * CPU2 current freq: 4000 MHz, max freq: 4000 MHz * CPU3 current freq: 4000 MHz, max freq: 4000 MHz Initializing File System... --Found base arch: [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata.db_pack_#0], size: [2011603613] --Found base arch: [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata.db_pack_#1], size: [2027116103] --Found base arch: [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata.db_pack_#2], size: [1994756166] --Found base arch: [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata.db_pack_#3], size: [1993053021] --Found base arch: [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata.db_pack_#4], size: [1992622007] --Found base arch: [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata.db_pack_#5], size: [1992590392] --Found base arch: [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata.db_pack_#6], size: [102689189] using fs-ltx fsgame.ltx --Found external arch: [mp_military_2.xdb0], size: [50350518] FS: 57168 files cached, 12132Kb memory used. Init FileSystem 7.333754 sec [15.11.19 06:15:55.603] [OGSR Engine (x64)] build date: [Nov 15 2019 02:32:18] [15.11.19 06:15:55.603] Working Directory: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin] [15.11.19 06:15:55.603] CommandLine: ["E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe" ] [15.11.19 06:15:56.920] TTAPI number of threads: [4] [15.11.19 06:15:56.920] Initializing Engine... [15.11.19 06:15:56.921] Starting INPUT device... [15.11.19 06:15:57.722] refCount:m_pAdapter 1 [15.11.19 06:15:57.722] refCount:pFactory 1 [15.11.19 06:15:57.929] --[CEngineAPI::CreateRendererList] Available render modes [5]: [15.11.19 06:15:57.929] -- [renderer_r2a] [15.11.19 06:15:57.929] -- [renderer_r2] [15.11.19 06:15:57.929] -- [renderer_r2.5] [15.11.19 06:15:57.929] -- [renderer_r3] [15.11.19 06:15:57.929] -- [renderer_r4] [15.11.19 06:15:57.929] Executing config-script "user.ltx"... [15.11.19 06:15:57.947] --[CCC_r2::Execute] Executing renderer: [renderer_r2], renderer_value: [1] [15.11.19 06:15:57.947] [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\_appdata_\user.ltx] successfully loaded. [15.11.19 06:15:57.947] --Loading DLL: [xrRender_R2.dll] [15.11.19 06:15:57.949] --Loading DLL: [xrGame.dll] [15.11.19 06:15:58.384] -------------------------------------------------------------------------------- [15.11.19 06:15:58.385] [8149MB] physical memory installed, [6025MB] available, [26] percent of memory in use [15.11.19 06:15:58.385] PageFile usage: [142MB], Peak PageFile usage: [149MB] [15.11.19 06:15:58.385] -------------------------------------------------------------------------------- [15.11.19 06:15:58.385] * [ D3D ]: textures[0 K] [15.11.19 06:15:58.385] * [x-ray]: process heap[114854 K], render[0 K] [15.11.19 06:15:58.385] * [x-ray]: economy: strings[40592 K], smem[0 K] [15.11.19 06:15:58.385] SOUND: OpenAL: enumerate devices... [15.11.19 06:15:58.385] SOUND: OpenAL: EnumerationExtension Present [15.11.19 06:15:58.593] devices Generic Software [15.11.19 06:15:58.593] SOUND: OpenAL: system default SndDevice name is Generic Software [15.11.19 06:15:58.902] SOUND: OpenAL: All available devices: [15.11.19 06:15:58.902] 1. Generic Software, Spec Version 1.1 (default) eax[2] efx[no] xram[no] [15.11.19 06:15:58.902] 2. OpenAL Soft, Spec Version 1.1 eax[0] efx[no] xram[no] [15.11.19 06:15:58.915] Executing config-script "e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata\config\default_controls.ltx"... [15.11.19 06:15:58.976] [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata\config\default_controls.ltx] successfully loaded. [15.11.19 06:15:58.976] Executing config-script "user.ltx"... [15.11.19 06:15:58.976] Executing config-script "e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata\config\rspec_extreme.ltx"... [15.11.19 06:15:58.988] ! Unknown command: r__supersample [15.11.19 06:15:58.988] [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata\config\rspec_extreme.ltx] successfully loaded. [15.11.19 06:15:58.988] ! Unknown command: bemsg [15.11.19 06:15:58.988] Executing config-script "e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata\config\default_controls.ltx"... [15.11.19 06:15:58.989] [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata\config\default_controls.ltx] successfully loaded. [15.11.19 06:15:58.989] ! Unknown command: cam_fov [15.11.19 06:15:58.989] ! Unknown command: cl_cod_pickup_mode [15.11.19 06:15:58.989] ! Unknown command: g_autopickup [15.11.19 06:15:58.989] ! Unknown command: g_backrun [15.11.19 06:15:58.989] ! Unknown command: g_corpsenum [15.11.19 06:15:58.990] ! Unknown command: g_eventdelay [15.11.19 06:15:58.990] ! Unknown command: mm_mm_net_srv_dedicated [15.11.19 06:15:58.990] ! Unknown command: mm_net_con_publicserver [15.11.19 06:15:58.990] ! Unknown command: mm_net_con_spectator [15.11.19 06:15:58.990] ! Unknown command: mm_net_con_spectator_on [15.11.19 06:15:58.990] ! Unknown command: mm_net_filter_battleye [15.11.19 06:15:58.990] ! Unknown command: mm_net_filter_empty [15.11.19 06:15:58.990] ! Unknown command: mm_net_filter_full [15.11.19 06:15:58.990] ! Unknown command: mm_net_filter_listen [15.11.19 06:15:58.990] ! Unknown command: mm_net_filter_pass [15.11.19 06:15:58.990] ! Unknown command: mm_net_filter_wo_ff [15.11.19 06:15:58.990] ! Unknown command: mm_net_filter_wo_pass [15.11.19 06:15:58.990] ! Unknown command: mm_net_srv_gamemode [15.11.19 06:15:58.990] ! Unknown command: mm_net_srv_maxplayers [15.11.19 06:15:58.990] ! Unknown command: mm_net_srv_name [15.11.19 06:15:58.990] ! Unknown command: mm_net_srv_reinforcement_type [15.11.19 06:15:58.990] ! Unknown command: mm_net_use_battleye [15.11.19 06:15:58.990] ! Unknown command: mm_net_weather_rateofchange [15.11.19 06:15:58.990] ! Unknown command: mouse_ui_sens [15.11.19 06:15:58.990] ! Unknown command: mouse_wheel_slot_changing [15.11.19 06:15:58.990] ! Unknown command: net_cl_icurvesize [15.11.19 06:15:58.990] ! Unknown command: net_cl_icurvetype [15.11.19 06:15:58.990] ! Unknown command: net_cl_interpolation [15.11.19 06:15:58.990] ! Unknown command: net_cl_log_data [15.11.19 06:15:58.990] ! Unknown command: net_compressor_enabled [15.11.19 06:15:58.990] ! Unknown command: net_compressor_gather_stats [15.11.19 06:15:58.990] ! Unknown command: net_dbg_dump_update_read [15.11.19 06:15:58.990] ! Unknown command: net_dbg_dump_update_write [15.11.19 06:15:58.990] ! Unknown command: net_dedicated_sleep [15.11.19 06:15:58.990] ! Unknown command: net_sv_gpmode [15.11.19 06:15:58.990] ! Unknown command: net_sv_log_data [15.11.19 06:15:58.990] ! Unknown command: net_sv_pending_lim [15.11.19 06:15:58.990] ! Unknown command: net_sv_update_rate [15.11.19 06:15:59.005] ! Unknown command: r2_aa [15.11.19 06:15:59.005] ! Unknown command: r2_aa_mode [15.11.19 06:15:59.005] ! Unknown command: r2_ao [15.11.19 06:15:59.005] ! Unknown command: r2_ao_intensity [15.11.19 06:15:59.005] ! Unknown command: r2_blur_params [15.11.19 06:15:59.005] ! Unknown command: r2_color_grading [15.11.19 06:15:59.005] ! Unknown command: r2_details_opt [15.11.19 06:15:59.023] ~ Invalid syntax in call to 'r2_dof' [15.11.19 06:15:59.023] ~ Valid arguments: vector3 in range [-10000.000000,-10000.000000,0.000000]-[10000.000000,10000.000000,10000.000000] [15.11.19 06:15:59.023] ! Unknown command: r2_dof_control [15.11.19 06:15:59.023] ! Unknown command: r2_dof_quality [15.11.19 06:15:59.023] ! Unknown command: r2_dof_reload [15.11.19 06:15:59.023] ! Unknown command: r2_dof_zoom [15.11.19 06:15:59.023] ! Unknown command: r2_image_sharpening [15.11.19 06:15:59.023] ! Unknown command: r2_lens_dirt [15.11.19 06:15:59.023] ! Unknown command: r2_lens_dirt_control [15.11.19 06:15:59.023] ! Unknown command: r2_lens_flare [15.11.19 06:15:59.023] ! Unknown command: r2_lights_shadow_fade [15.11.19 06:15:59.023] ! Unknown command: r2_mblur_amount [15.11.19 06:15:59.023] ! Unknown command: r2_puddles [15.11.19 06:15:59.023] ! Unknown command: r2_rain_params [15.11.19 06:15:59.023] ! Unknown command: r2_reflections [15.11.19 06:15:59.023] ! Unknown command: r2_reflections_mode [15.11.19 06:15:59.023] ! Unknown command: r2_render_mode [15.11.19 06:15:59.023] ~ Invalid syntax in call to 'r2_slight_fade' [15.11.19 06:15:59.023] ~ Valid arguments: float value in range [0.200,1.000] [15.11.19 06:15:59.023] ! Unknown command: r2_soft_shadows [15.11.19 06:15:59.023] ~ Invalid syntax in call to 'r2_ssao' [15.11.19 06:15:59.023] ~ Valid arguments: st_opt_off/st_opt_low/st_opt_medium/st_opt_high [15.11.19 06:15:59.023] ~ Invalid syntax in call to 'r2_steep_parallax' [15.11.19 06:15:59.023] ~ Valid arguments: 'on/off' or '1/0' [15.11.19 06:15:59.023] ! Unknown command: r2_sunshafts [15.11.19 06:15:59.023] ! Unknown command: r2_sunshafts_mode [15.11.19 06:15:59.023] ! Unknown command: r2_tf_mipbias [15.11.19 06:15:59.023] ! Unknown command: r2_true_sun_shadows [15.11.19 06:15:59.023] ! Unknown command: r2_volumetric_fog [15.11.19 06:15:59.023] ! Unknown command: r2_wet_surfaces [15.11.19 06:15:59.023] ! Unknown command: r__bloodmarks [15.11.19 06:15:59.023] ~ Invalid syntax in call to 'r__geometry_lod' [15.11.19 06:15:59.023] ~ Valid arguments: float value in range [0.100,3.000] [15.11.19 06:15:59.024] ! Unknown command: r__supersample [15.11.19 06:15:59.024] --[CCC_r2::Execute] Executing renderer: [renderer_r2], renderer_value: [1] [15.11.19 06:15:59.024] ! Unknown command: rs_detail [15.11.19 06:15:59.024] ! Unknown command: snd_crossfeed [15.11.19 06:15:59.024] ! Unknown command: snd_hrtf [15.11.19 06:15:59.024] ! Unknown command: snd_phishing [15.11.19 06:15:59.024] ! Unknown command: snd_resampler [15.11.19 06:15:59.024] ! Unknown command: snd_stereo_mode [15.11.19 06:15:59.024] ! Unknown command: sv_anomalies_enabled [15.11.19 06:15:59.024] ! Unknown command: sv_anomalies_length [15.11.19 06:15:59.024] ! Unknown command: sv_artefact_respawn_delta [15.11.19 06:15:59.024] ! Unknown command: sv_artefact_spawn_force [15.11.19 06:15:59.024] ! Unknown command: sv_artefact_stay_time [15.11.19 06:15:59.024] ! Unknown command: sv_artefacts_count [15.11.19 06:15:59.024] ! Unknown command: sv_auto_team_balance [15.11.19 06:15:59.024] ! Unknown command: sv_auto_team_swap [15.11.19 06:15:59.024] ! Unknown command: sv_bearercantsprint [15.11.19 06:15:59.024] ! Unknown command: sv_client_reconnect_time [15.11.19 06:15:59.024] ! Unknown command: sv_console_update_rate [15.11.19 06:15:59.024] ! Unknown command: sv_dedicated_server_update_rate [15.11.19 06:15:59.024] ! Unknown command: sv_dmgblockindicator [15.11.19 06:15:59.024] ! Unknown command: sv_dmgblocktime [15.11.19 06:15:59.024] ! Unknown command: sv_dump_online_statistics_period [15.11.19 06:15:59.024] ! Unknown command: sv_forcerespawn [15.11.19 06:15:59.024] ! Unknown command: sv_fraglimit [15.11.19 06:15:59.024] ! Unknown command: sv_friendly_indicators [15.11.19 06:15:59.024] ! Unknown command: sv_friendly_names [15.11.19 06:15:59.024] ! Unknown command: sv_friendlyfire [15.11.19 06:15:59.024] ! Unknown command: sv_hail_to_winner_time [15.11.19 06:15:59.024] ! Unknown command: sv_max_ping_limit [15.11.19 06:15:59.024] ! Unknown command: sv_pda_hunt [15.11.19 06:15:59.024] ! Unknown command: sv_reinforcement_time [15.11.19 06:15:59.024] ! Unknown command: sv_remove_corpse [15.11.19 06:15:59.024] ! Unknown command: sv_remove_weapon [15.11.19 06:15:59.024] ! Unknown command: sv_returnplayers [15.11.19 06:15:59.024] ! Unknown command: sv_rpoint_freeze_time [15.11.19 06:15:59.024] ! Unknown command: sv_shieldedbases [15.11.19 06:15:59.024] ! Unknown command: sv_spectr_firsteye [15.11.19 06:15:59.024] ! Unknown command: sv_spectr_freefly [15.11.19 06:15:59.024] ! Unknown command: sv_spectr_freelook [15.11.19 06:15:59.024] ! Unknown command: sv_spectr_lookat [15.11.19 06:15:59.024] ! Unknown command: sv_spectr_teamcamera [15.11.19 06:15:59.024] ! Unknown command: sv_statistic_collect [15.11.19 06:15:59.024] ! Unknown command: sv_teamkill_limit [15.11.19 06:15:59.024] ! Unknown command: sv_teamkill_punish [15.11.19 06:15:59.024] ! Unknown command: sv_timelimit [15.11.19 06:15:59.024] ! Unknown command: sv_vote_enabled [15.11.19 06:15:59.024] ! Unknown command: sv_vote_participants [15.11.19 06:15:59.024] ! Unknown command: sv_vote_quota [15.11.19 06:15:59.024] ! Unknown command: sv_vote_time [15.11.19 06:15:59.024] ! Unknown command: sv_warm_up [15.11.19 06:15:59.024] [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\_appdata_\user.ltx] successfully loaded. [15.11.19 06:15:59.024] SOUND: Selected device is Generic Software [15.11.19 06:15:59.051] * sound: EAX 2.0 extension: present [15.11.19 06:15:59.051] * sound: EAX 2.0 deferred: present [15.11.19 06:15:59.051] * sound : cache: 65537 kb, 4856 lines, 13820 bpl [15.11.19 06:15:59.058] Starting RENDER device... [15.11.19 06:15:59.074] * GPU [vendor:1002]-[device:6939]: AMD Radeon (TM) R9 380 Series [15.11.19 06:15:59.074] * GPU driver: 22.19.171.257 [15.11.19 06:15:59.437] * CREATE: DeviceREF: 1 [15.11.19 06:15:59.437] * Vertex Processor: PURE HARDWARE [15.11.19 06:15:59.437] * Texture memory: 4072 M [15.11.19 06:15:59.437] * DDI-level: 9.0 [15.11.19 06:15:59.441] * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) [15.11.19 06:15:59.441] * GPU vertex cache: unrecognized, 16 [15.11.19 06:33:28.512] --[CHWCaps::Update] Detected GpuNum : [1] [15.11.19 06:33:28.523] * DVB created: 16384K [15.11.19 06:33:28.523] * DIB created: 512K [15.11.19 06:33:28.598] ! Version conflict in shader 'models\lightplanes_00' [15.11.19 06:33:28.598] ! Version conflict in shader 'models\lightplanesself' [15.11.19 06:33:28.598] ! Version conflict in shader 'models\model_puh' [15.11.19 06:33:28.598] ! Version conflict in shader 'models\model_refl' [15.11.19 06:33:28.599] ! Version conflict in shader 'models\xbrainglass' [15.11.19 06:33:28.599] ! Version conflict in shader 'models\xdistortcolorlinv' [15.11.19 06:33:28.599] ! Version conflict in shader 'models\xglass' [15.11.19 06:33:28.599] ! Version conflict in shader 'models\xglass2' [15.11.19 06:33:28.599] ! Version conflict in shader 'models\xlens' [15.11.19 06:33:28.599] ! Version conflict in shader 'selflight_static' [15.11.19 06:33:28.602] [CTextureDescrMngr::LoadLTX] count of *textures*.ltx files: [1] [15.11.19 06:33:29.019] * NULLRT supported [15.11.19 06:33:29.019] * ...and used [15.11.19 06:33:29.019] * HWDST/PCF supported and used [15.11.19 06:33:29.020] compiling shader dumb [15.11.19 06:33:29.233] compiling shader dumb [15.11.19 06:33:29.270] compiling shader accum_mask [15.11.19 06:33:29.273] compiling shader accum_sun_mask [15.11.19 06:33:29.276] compiling shader copy_p [15.11.19 06:33:29.320] compiling shader accum_volume [15.11.19 06:33:29.323] compiling shader copy [15.11.19 06:33:29.326] compiling shader accum_sun_near [15.11.19 06:33:29.445] compiling shader accum_sun [15.11.19 06:33:29.452] compiling shader accum_sun_cascade [15.11.19 06:33:29.461] compiling shader accum_sun_cascade_far [15.11.19 06:33:29.495] compiling shader accum_omni_unshadowed [15.11.19 06:33:29.499] compiling shader accum_omni_normal [15.11.19 06:33:29.508] compiling shader accum_omni_transluent [15.11.19 06:33:29.530] compiling shader accum_spot_unshadowed [15.11.19 06:33:29.538] compiling shader accum_spot_normal [15.11.19 06:33:29.547] compiling shader accum_spot_fullsize [15.11.19 06:33:29.557] compiling shader accum_volumetric [15.11.19 06:33:29.566] compiling shader accum_volumetric [15.11.19 06:33:29.571] compiling shader accum_indirect [15.11.19 06:33:29.576] compiling shader bloom_build [15.11.19 06:33:29.580] compiling shader bloom_filter [15.11.19 06:33:29.585] compiling shader bloom_filter_f [15.11.19 06:33:29.602] compiling shader bloom_luminance_1 [15.11.19 06:33:29.606] compiling shader bloom_luminance_2 [15.11.19 06:33:29.611] compiling shader bloom_luminance_3 [15.11.19 06:33:29.617] compiling shader combine_1 [15.11.19 06:33:29.628] compiling shader combine_1 [15.11.19 06:33:29.632] compiling shader combine_2_NAA [15.11.19 06:33:29.636] compiling shader combine_2_NAA_D [15.11.19 06:33:29.641] compiling shader combine_volumetric [15.11.19 06:33:29.653] compiling shader ogsr_rain_drops [15.11.19 06:33:30.193] compiling shader fxaa_main [15.11.19 06:33:34.529] compiling shader fxaa_main [15.11.19 06:33:34.589] compiling shader postprocess [15.11.19 06:33:34.600] compiling shader postprocess_CM [15.11.19 06:33:34.605] compiling shader distort [15.11.19 06:33:34.666] compiling shader particle [15.11.19 06:33:34.670] compiling shader particle [15.11.19 06:33:34.673] compiling shader particle_s-add [15.11.19 06:33:34.677] compiling shader particle-clip [15.11.19 06:33:34.680] compiling shader particle_distort [15.11.19 06:33:34.683] compiling shader particle_s-blend [15.11.19 06:33:34.687] compiling shader particle_s-aadd [15.11.19 06:33:34.775] compiling shader deffer_particle [15.11.19 06:33:34.780] compiling shader deffer_particle [15.11.19 06:33:35.805] compiling shader portal [15.11.19 06:33:35.808] compiling shader portal [15.11.19 06:33:35.815] compiling shader simple_color [15.11.19 06:33:35.817] compiling shader editor [15.11.19 06:33:36.144] ********************************************************************************* [15.11.19 06:33:36.144] [print_output(e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\gamedata\scripts\_g.script)] SCRIPT RUNTIME ERROR: ...publishing\s.t.a.l.k.e.r_ogsr\gamedata\scripts\_g.script:2: attempt to call global 'RvP' (a nil value) stack traceback: [15.11.19 06:33:36.144] ********************************************************************************* [15.11.19 06:33:36.144] FATAL ERROR [error]Expression : assertion failed [error]Function : CScriptStorage::do_file [error]File : e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\script_storage.cpp [error]Line : 332 [error]Description : false [15.11.19 06:33:36.144] ***************************[ScriptCrashHandler]********************************** [15.11.19 06:33:36.144] stack traceback: [15.11.19 06:33:36.144] ********************************************************************************* [15.11.19 06:33:36.144] ******************************************************************************** [15.11.19 06:33:45.553] !!stack trace: ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61AA3E78], Fun: [BuildStackTrace()] + [48 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\stacktrace_collector.cpp-->152] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACA74B], Fun: [LogStackTrace()] + [51 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->32] + [13 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACA5A2], Fun: [xrDebug::backend()] + [174 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->149] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACA2C3], Fun: [xrDebug::fail()] + [47 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->198] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB605EF65A], Fun: [CScriptStorage::do_file()] + [406 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\script_storage.cpp-->332] + [45 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB605EA38C], Fun: [CScriptEngine::process_file_if_exists()] + [184 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\script_engine.cpp-->309] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB605E9FF8], Fun: [CScriptEngine::init()] + [208 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\script_engine.cpp-->152] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB6072CF62], Fun: [CObjectFactory::register_script_classes()] + [34 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\object_factory_script.cpp-->58] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB6071C525], Fun: [xrFactory_Create()] + [45 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrgame\xrgame.cpp-->18] + [32 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7699EEE28], Fun: [Startup()] + [196 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xr_3da\x_ray.cpp-->201] + [19 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7699EF1F6], Fun: [WinMain_impl()] + [478 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xr_3da\x_ray.cpp-->414] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7699EC90D], Fun: [WinMain()] + [73 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xr_3da\x_ray.cpp-->449] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF769A4EF7A], Fun: [__scrt_common_main_seh()] + [262 byte(s)], File-->Line: [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl-->288] + [33 byte(s)] ! Module: [C:\Windows\system32\KERNEL32.DLL], AddrPC.Offset: [00007FFB821B1611], Fun: [BaseThreadInitThunk()] + [13 byte(s)] ! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00007FFB841564AD], Fun: [RtlUserThreadStart()] + [29 byte(s)] [15.11.19 06:33:45.554] ******************************************************************************** [15.11.19 06:34:23.388] FATAL ERROR [error]Expression : ExitFromWinMain [error]Function : xrDebug::_initialize::<lambda_08822b0990e05ebdfe55e73d1267a8a5>::operator () [error]File : e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp [error]Line : 518 [error]Description : Unexpected application exit! [15.11.19 06:34:23.389] ***************************[ScriptCrashHandler]********************************** [15.11.19 06:34:23.389] stack traceback: [15.11.19 06:34:23.389] ********************************************************************************* [15.11.19 06:34:23.389] ******************************************************************************** [15.11.19 06:34:23.715] !!stack trace: ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61AA3E78], Fun: [BuildStackTrace()] + [48 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\stacktrace_collector.cpp-->152] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACA74B], Fun: [LogStackTrace()] + [51 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->32] + [13 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACA5A2], Fun: [xrDebug::backend()] + [174 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->149] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACB320], Fun: [<lambda_08822b0990e05ebdfe55e73d1267a8a5>::<lambda_invoker_cdecl>()] + [80 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->518] + [80 byte(s)] ! Module: [C:\Windows\SYSTEM32\ucrtbase.DLL], AddrPC.Offset: [00007FFB619A4577], Fun: [time64()] + [359 byte(s)] ! Module: [C:\Windows\SYSTEM32\ucrtbase.DLL], AddrPC.Offset: [00007FFB6199A2E7], Fun: [register_onexit_function()] + [135 byte(s)] ! Module: [C:\Windows\SYSTEM32\ucrtbase.DLL], AddrPC.Offset: [00007FFB619954D1], Fun: [execute_onexit_table()] + [49 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACE70E], Fun: [dllmain_crt_process_detach()] + [82 byte(s)], File-->Line: [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp-->108] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACE834], Fun: [dllmain_dispatch()] + [232 byte(s)], File-->Line: [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\dll_dllmain.cpp-->212] + [13 byte(s)] ! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00007FFB840FA96D], Fun: [RtlActivateActivationContextUnsafeFast()] + [261 byte(s)] ! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00007FFB840F9DD2], Fun: [LdrShutdownProcess()] + [322 byte(s)] ! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00007FFB840F7828], Fun: [RtlExitUserProcess()] + [120 byte(s)] ! Module: [C:\Windows\system32\KERNEL32.DLL], AddrPC.Offset: [00007FFB821B4FF6], Fun: [FatalExit()] + [10 byte(s)] ! Module: [C:\Windows\SYSTEM32\ucrtbase.DLL], AddrPC.Offset: [00007FFB619FBBE6], Fun: [wassert()] + [854 byte(s)] ! Module: [C:\Windows\SYSTEM32\ucrtbase.DLL], AddrPC.Offset: [00007FFB619FBB3E], Fun: [wassert()] + [686 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACA627], Fun: [xrDebug::backend()] + [307 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->168] + [8 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrCore.dll], AddrPC.Offset: [00007FFB61ACA2C3], Fun: [xrDebug::fail()] + [47 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrcore\xrdebugnew.cpp-->198] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB605EF65A], Fun: [CScriptStorage::do_file()] + [406 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\script_storage.cpp-->332] + [45 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB605EA38C], Fun: [CScriptEngine::process_file_if_exists()] + [184 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\script_engine.cpp-->309] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB605E9FF8], Fun: [CScriptEngine::init()] + [208 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\script_engine.cpp-->152] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB6072CF62], Fun: [CObjectFactory::register_script_classes()] + [34 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\common_ai\object_factory_script.cpp-->58] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFB6071C525], Fun: [xrFactory_Create()] + [45 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xrgame\xrgame.cpp-->18] + [32 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7699EEE28], Fun: [Startup()] + [196 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xr_3da\x_ray.cpp-->201] + [19 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7699EF1F6], Fun: [WinMain_impl()] + [478 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xr_3da\x_ray.cpp-->414] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7699EC90D], Fun: [WinMain()] + [73 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr5\ogsr-engine-main\ogsr-engine-main\ogsr_engine\xr_3da\x_ray.cpp-->449] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF769A4EF7A], Fun: [__scrt_common_main_seh()] + [262 byte(s)], File-->Line: [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl-->288] + [33 byte(s)] ! Module: [C:\Windows\system32\KERNEL32.DLL], AddrPC.Offset: [00007FFB821B1611], Fun: [BaseThreadInitThunk()] + [13 byte(s)] ! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00007FFB841564AD], Fun: [RtlUserThreadStart()] + [29 byte(s)] [15.11.19 06:34:23.715] ******************************************************************************** Чем таким движок был занят 8 минут, не добравшись до главного меню, я из этого лога не понял. Хотя, время на строках лога проставлено. Подскажите, что я делаю не так, или в какую сторону копать, хотя бы. P.S. Все то, на что он ругается "Unknown command", из user.ltx я убрал, но результат это не изменило - висит 8 минут (время стабильное, причем), прежде чем давать какую-либо информацию. Edit: Ан нет. Время не стабильное. Убрал все лишнее из _g.script (На него больше вообще не ругается, вылетает от других скриптов дальше) - время зависания выросло до 22 минут. Как он это умудряется делать до начала чтения хотя-бы _g.script, я вообще не понимаю... чертовщина какая-то. Edit 2. Затык здесь. Скрытый текст #include "stdafx.h" #include "hwcaps.h" #include "hw.h" #include "../../xr_3da/AMDGPUTransferee.h" #include "../../xr_3da/NvGPUTransferee.h" u32 GetGpuNum() { try { if (!AMDData) AMDData = new CAMDReader(); if (!NvData) NvData = new CNvReader(); if (CAMDReader::bAMDSupportADL) return AMDData->GetGPUCount() > 0 ? AMDData->GetGPUCount() : 1; else if (CNvReader::bSupport) return NvData->GetGPUCount() > 0 ? NvData->GetGPUCount() : 1; else return 1; } catch (...) { return 1; } } #if !defined(USE_DX10) && !defined(USE_DX11) void CHWCaps::Update() { D3DCAPS9 caps; HW.pDevice->GetDeviceCaps (&caps); // ***************** GEOMETRY geometry_major = u16 ( (u32(caps.VertexShaderVersion)&(0xf << 8ul))>>8 ); geometry_minor = u16 ( (u32(caps.VertexShaderVersion)&0xf) ); geometry.bSoftware = (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)==0; geometry.bPointSprites = FALSE; geometry.bNPatches = (caps.DevCaps & D3DDEVCAPS_NPATCHES)!=0; DWORD cnt = (caps.MaxVertexShaderConst); clamp<DWORD>(cnt,0,256); geometry.dwRegisters = cnt; geometry.dwInstructions = 256; geometry.dwClipPlanes = _min(caps.MaxUserClipPlanes,15); geometry.bVTF = (geometry_major>=3) && HW.support(D3DFMT_R32F,D3DRTYPE_TEXTURE,D3DUSAGE_QUERY_VERTEXTEXTURE); // ***************** PIXEL processing raster_major = u16 ( u32(u32(caps.PixelShaderVersion)&u32(0xf << 8ul))>>8 ); raster_minor = u16 ( u32(u32(caps.PixelShaderVersion)&u32(0xf)) ); raster.dwStages = caps.MaxSimultaneousTextures; raster.bNonPow2 = ((caps.TextureCaps & D3DPTEXTURECAPS_NONPOW2CONDITIONAL)!=0) || ((caps.TextureCaps & D3DPTEXTURECAPS_POW2)==0); raster.bCubemap = (caps.TextureCaps & D3DPTEXTURECAPS_CUBEMAP)!=0; raster.dwMRT_count = (caps.NumSimultaneousRTs); raster.b_MRT_mixdepth = (caps.PrimitiveMiscCaps & D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS)!=0; raster.dwInstructions = (caps.PS20Caps.NumInstructionSlots); // ***************** Info Msg ("* GPU shading: vs(%x/%d.%d/%d), ps(%x/%d.%d/%d)", caps.VertexShaderVersion, geometry_major, geometry_minor, CAP_VERSION(geometry_major, geometry_minor), caps.PixelShaderVersion, raster_major, raster_minor, CAP_VERSION(raster_major, raster_minor) ); // *******1********** Vertex cache ID3DQuery* q_vc; D3DDEVINFO_VCACHE vc; HRESULT _hr = HW.pDevice->CreateQuery(D3DQUERYTYPE_VCACHE,&q_vc); if (FAILED(_hr)) { vc.OptMethod = 0; vc.CacheSize = 16; geometry.dwVertexCache = 16; } else { q_vc->Issue (D3DISSUE_END); q_vc->GetData (&vc,sizeof(vc),D3DGETDATA_FLUSH); _RELEASE (q_vc); if (1==vc.OptMethod ) geometry.dwVertexCache = vc.CacheSize; else geometry.dwVertexCache = 16; } Msg ("* GPU vertex cache: %s, %d",(1==vc.OptMethod)?"recognized":"unrecognized",u32(geometry.dwVertexCache)); // *******1********** Compatibility : vertex shader if (0==raster_major) geometry_major=0; // Disable VS if no PS #ifdef _EDITOR geometry_major = 0; #endif // bTableFog = FALSE; //BOOL (caps.RasterCaps&D3DPRASTERCAPS_FOGTABLE); // Detect if stencil available bStencil = FALSE; IDirect3DSurface9* surfZS=0; D3DSURFACE_DESC surfDESC; CHK_DX (HW.pDevice->GetDepthStencilSurface(&surfZS)); R_ASSERT (surfZS); CHK_DX (surfZS->GetDesc(&surfDESC)); _RELEASE (surfZS); switch (surfDESC.Format) { case D3DFMT_D15S1: bStencil = TRUE; break; case D3DFMT_D24S8: bStencil = TRUE; break; case D3DFMT_D24X4S4: bStencil = TRUE; break; } // Scissoring if (caps.RasterCaps & D3DPRASTERCAPS_SCISSORTEST) bScissor = TRUE; else bScissor = FALSE; // Stencil relative caps u32 dwStencilCaps = caps.StencilCaps; if( (!(dwStencilCaps & D3DSTENCILCAPS_INCR) && !(dwStencilCaps & D3DSTENCILCAPS_INCRSAT)) ||(!(dwStencilCaps & D3DSTENCILCAPS_DECR) && !(dwStencilCaps & D3DSTENCILCAPS_DECRSAT))) { soDec = soInc = D3DSTENCILOP_KEEP; dwMaxStencilValue = 0; } else { // Prefer sat ops that cap at 0/max, but can use other ones as long as enough stencil bits soInc=(dwStencilCaps & D3DSTENCILCAPS_INCRSAT)? D3DSTENCILOP_INCRSAT:D3DSTENCILOP_INCR; soDec=(dwStencilCaps & D3DSTENCILCAPS_DECRSAT)? D3DSTENCILOP_DECRSAT:D3DSTENCILOP_DECR; dwMaxStencilValue=(1<<8)-1; } // DEV INFO iGPUNum = GetGpuNum(); Msg("--[%s] Detected GpuNum : [%u]", __FUNCTION__, iGPUNum); } #else // USE_DX10 void CHWCaps::Update() { // ***************** GEOMETRY geometry_major = 4; geometry_minor = 0; geometry.bSoftware = FALSE; geometry.bPointSprites = FALSE; geometry.bNPatches = FALSE; DWORD cnt = 256; clamp<DWORD>(cnt,0,256); geometry.dwRegisters = cnt; geometry.dwInstructions = 256; geometry.dwClipPlanes = _min(6,15); geometry.bVTF = TRUE; // ***************** PIXEL processing raster_major = 4; raster_minor = 0; raster.dwStages = 15; raster.bNonPow2 = TRUE; raster.bCubemap = TRUE; raster.dwMRT_count = 4; //raster.b_MRT_mixdepth = FALSE; raster.b_MRT_mixdepth = TRUE; raster.dwInstructions = 256; // ***************** Info Msg ("* GPU shading: vs(%x/%d.%d/%d), ps(%x/%d.%d/%d)", 0, geometry_major, geometry_minor, CAP_VERSION(geometry_major, geometry_minor), 0, raster_major, raster_minor, CAP_VERSION(raster_major, raster_minor) ); // *******1********** Vertex cache // TODO: DX10: Find a way to detect cache size geometry.dwVertexCache = 24; Msg ("* GPU vertex cache: %s, %d","unrecognized",u32(geometry.dwVertexCache)); // *******1********** Compatibility : vertex shader if (0==raster_major) geometry_major=0; // Disable VS if no PS // bTableFog = FALSE; //BOOL (caps.RasterCaps&D3DPRASTERCAPS_FOGTABLE); // Detect if stencil available bStencil = TRUE; // Scissoring bScissor = TRUE; // Stencil relative caps soInc=D3DSTENCILOP_INCRSAT; soDec=D3DSTENCILOP_DECRSAT; dwMaxStencilValue=(1<<8)-1; // DEV INFO iGPUNum = GetGpuNum(); Msg("--[%s] Detected GpuNum : [%u]", __FUNCTION__, iGPUNum); } #endif // USE_DX10 #include "stdafx.h" #include "hwcaps.h" #include "hw.h" #include "../../xr_3da/AMDGPUTransferee.h" #include "../../xr_3da/NvGPUTransferee.h" u32 GetGpuNum() { try { if (!AMDData) AMDData = new CAMDReader(); if (!NvData) NvData = new CNvReader(); if (CAMDReader::bAMDSupportADL) return AMDData->GetGPUCount() > 0 ? AMDData->GetGPUCount() : 1; else if (CNvReader::bSupport) return NvData->GetGPUCount() > 0 ? NvData->GetGPUCount() : 1; else return 1; } catch (...) { return 1; } } #if !defined(USE_DX10) && !defined(USE_DX11) void CHWCaps::Update() { D3DCAPS9 caps; HW.pDevice->GetDeviceCaps (&caps); // ***************** GEOMETRY geometry_major = u16 ( (u32(caps.VertexShaderVersion)&(0xf << 8ul))>>8 ); geometry_minor = u16 ( (u32(caps.VertexShaderVersion)&0xf) ); geometry.bSoftware = (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)==0; geometry.bPointSprites = FALSE; geometry.bNPatches = (caps.DevCaps & D3DDEVCAPS_NPATCHES)!=0; DWORD cnt = (caps.MaxVertexShaderConst); clamp<DWORD>(cnt,0,256); geometry.dwRegisters = cnt; geometry.dwInstructions = 256; geometry.dwClipPlanes = _min(caps.MaxUserClipPlanes,15); geometry.bVTF = (geometry_major>=3) && HW.support(D3DFMT_R32F,D3DRTYPE_TEXTURE,D3DUSAGE_QUERY_VERTEXTEXTURE); // ***************** PIXEL processing raster_major = u16 ( u32(u32(caps.PixelShaderVersion)&u32(0xf << 8ul))>>8 ); raster_minor = u16 ( u32(u32(caps.PixelShaderVersion)&u32(0xf)) ); raster.dwStages = caps.MaxSimultaneousTextures; raster.bNonPow2 = ((caps.TextureCaps & D3DPTEXTURECAPS_NONPOW2CONDITIONAL)!=0) || ((caps.TextureCaps & D3DPTEXTURECAPS_POW2)==0); raster.bCubemap = (caps.TextureCaps & D3DPTEXTURECAPS_CUBEMAP)!=0; raster.dwMRT_count = (caps.NumSimultaneousRTs); raster.b_MRT_mixdepth = (caps.PrimitiveMiscCaps & D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS)!=0; raster.dwInstructions = (caps.PS20Caps.NumInstructionSlots); // ***************** Info Msg ("* GPU shading: vs(%x/%d.%d/%d), ps(%x/%d.%d/%d)", caps.VertexShaderVersion, geometry_major, geometry_minor, CAP_VERSION(geometry_major, geometry_minor), caps.PixelShaderVersion, raster_major, raster_minor, CAP_VERSION(raster_major, raster_minor) ); // *******1********** Vertex cache ID3DQuery* q_vc; D3DDEVINFO_VCACHE vc; HRESULT _hr = HW.pDevice->CreateQuery(D3DQUERYTYPE_VCACHE,&q_vc); if (FAILED(_hr)) { vc.OptMethod = 0; vc.CacheSize = 16; geometry.dwVertexCache = 16; } else { q_vc->Issue (D3DISSUE_END); q_vc->GetData (&vc,sizeof(vc),D3DGETDATA_FLUSH); _RELEASE (q_vc); if (1==vc.OptMethod ) geometry.dwVertexCache = vc.CacheSize; else geometry.dwVertexCache = 16; } Msg ("* GPU vertex cache: %s, %d",(1==vc.OptMethod)?"recognized":"unrecognized",u32(geometry.dwVertexCache)); // *******1********** Compatibility : vertex shader if (0==raster_major) geometry_major=0; // Disable VS if no PS #ifdef _EDITOR geometry_major = 0; #endif // bTableFog = FALSE; //BOOL (caps.RasterCaps&D3DPRASTERCAPS_FOGTABLE); // Detect if stencil available bStencil = FALSE; IDirect3DSurface9* surfZS=0; D3DSURFACE_DESC surfDESC; CHK_DX (HW.pDevice->GetDepthStencilSurface(&surfZS)); R_ASSERT (surfZS); CHK_DX (surfZS->GetDesc(&surfDESC)); _RELEASE (surfZS); switch (surfDESC.Format) { case D3DFMT_D15S1: bStencil = TRUE; break; case D3DFMT_D24S8: bStencil = TRUE; break; case D3DFMT_D24X4S4: bStencil = TRUE; break; } // Scissoring if (caps.RasterCaps & D3DPRASTERCAPS_SCISSORTEST) bScissor = TRUE; else bScissor = FALSE; // Stencil relative caps u32 dwStencilCaps = caps.StencilCaps; if( (!(dwStencilCaps & D3DSTENCILCAPS_INCR) && !(dwStencilCaps & D3DSTENCILCAPS_INCRSAT)) ||(!(dwStencilCaps & D3DSTENCILCAPS_DECR) && !(dwStencilCaps & D3DSTENCILCAPS_DECRSAT))) { soDec = soInc = D3DSTENCILOP_KEEP; dwMaxStencilValue = 0; } else { // Prefer sat ops that cap at 0/max, but can use other ones as long as enough stencil bits soInc=(dwStencilCaps & D3DSTENCILCAPS_INCRSAT)? D3DSTENCILOP_INCRSAT:D3DSTENCILOP_INCR; soDec=(dwStencilCaps & D3DSTENCILCAPS_DECRSAT)? D3DSTENCILOP_DECRSAT:D3DSTENCILOP_DECR; dwMaxStencilValue=(1<<8)-1; } // DEV INFO iGPUNum = GetGpuNum(); Msg("--[%s] Detected GpuNum : [%u]", __FUNCTION__, iGPUNum); } #else // USE_DX10 void CHWCaps::Update() { // ***************** GEOMETRY geometry_major = 4; geometry_minor = 0; geometry.bSoftware = FALSE; geometry.bPointSprites = FALSE; geometry.bNPatches = FALSE; DWORD cnt = 256; clamp<DWORD>(cnt,0,256); geometry.dwRegisters = cnt; geometry.dwInstructions = 256; geometry.dwClipPlanes = _min(6,15); geometry.bVTF = TRUE; // ***************** PIXEL processing raster_major = 4; raster_minor = 0; raster.dwStages = 15; raster.bNonPow2 = TRUE; raster.bCubemap = TRUE; raster.dwMRT_count = 4; //raster.b_MRT_mixdepth = FALSE; raster.b_MRT_mixdepth = TRUE; raster.dwInstructions = 256; // ***************** Info Msg ("* GPU shading: vs(%x/%d.%d/%d), ps(%x/%d.%d/%d)", 0, geometry_major, geometry_minor, CAP_VERSION(geometry_major, geometry_minor), 0, raster_major, raster_minor, CAP_VERSION(raster_major, raster_minor) ); // *******1********** Vertex cache // TODO: DX10: Find a way to detect cache size geometry.dwVertexCache = 24; Msg ("* GPU vertex cache: %s, %d","unrecognized",u32(geometry.dwVertexCache)); // *******1********** Compatibility : vertex shader if (0==raster_major) geometry_major=0; // Disable VS if no PS // bTableFog = FALSE; //BOOL (caps.RasterCaps&D3DPRASTERCAPS_FOGTABLE); // Detect if stencil available bStencil = TRUE; // Scissoring bScissor = TRUE; // Stencil relative caps soInc=D3DSTENCILOP_INCRSAT; soDec=D3DSTENCILOP_DECRSAT; dwMaxStencilValue=(1<<8)-1; // DEV INFO iGPUNum = GetGpuNum(); Msg("--[%s] Detected GpuNum : [%u]", __FUNCTION__, iGPUNum); } #endif // USE_DX10 Сообщения "GPU shading: ...", "GPU vertex cache: ... " - проходят еще нормально. Спустя считанные секунды после запуска. Сообщение "... Detected GpuNum : ... " - 22 минуты спустя. То, что отнимает 22 минуты времени, вызывается где-то между. Но тут уж я совсем не знаю, куда копать дальше. Добавить вызовы Msg() можно. Посмотреть какой конкретно вызов столько жрет. И... Это же рендер. Не конфиги, не скрипты. Занятно... Изменено 15 Ноября 2019 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 16 Ноября 2019 Подскажите людей, причастных к написанию рендера в OGSR. Буду в личку стучаться, раз на форуме никто помочь не может/не хочет. KRodin-а знаю... Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 19 Ноября 2019 (изменено) В 16.11.2019 в 15:25, abramcumner сказал: Токсичность она такая. Кто бы говорил По теме вышеозначенной проблемы. Добавил в проблемном файле выводов в лог, чтоб посмотреть, какой именно вызов ест столько времени. Нашел, посмотрел, что же именно делает этот вызов. К этому времени и KRodin в личке ответил, подтвердив мои предположения. Можно сказать, он и я к решению пришли одновременно и независимо. Исправление бага движка OGSR (сверхдолгий запуск) Скрытый текст iGPUNum = GetGpuNum(); iGPUNum = GetGpuNum(); заменить на // iGPUNum = GetGpuNum(); iGPUNum = 1; // iGPUNum = GetGpuNum(); iGPUNum = 1; В двух местах в файле HWCaps.cpp Для машин, обладающих одной видеокартой, скорее всего проблем быть не должно. Для агрегатов, у которых видеокарты две, наверное, проблемы будут. Понятия не имею, какие, вероятно будет использовать одну все равно. Изменено 19 Ноября 2019 пользователем Zander_driver 3 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 19 Ноября 2019 только что, ed_rez сказал: можно насильно заставить запускать нужную и только ее Можно то ладно. gpu_id нужной видеокарты, это меняет? Соль тут именно в этом. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 14 Декабря 2019 (изменено) Ну Эд, блин... я фанатам СЗ хотел видео работающего инвентаря как сюрприз преподнести под новый год. А ты тут все покровы срываешь, раньше времени. Праздник испортил Мне что теперь, игрокам показывать вот то кривое поделие, которое мы сейчас имеем? А оно ведь кривое несмотря на наличие высокополигональных качественных моделей в нем. Если по теме и кроме шуток. Класс CUI3dStatic я в своей разработке не использовал, так что вспоминать нынешнюю разработку в связи с попыткой реанимировать этот класс, не совсем уместно. У меня в инвентаре не используется второй вьюпорт. А этот класс насколько я могу судить, не доделан просто / не доведен до ума. Возможно, что и намеренно его не стали доводить - вторые вьюпорты, как известно, нагрузку на видеокарту повышают существенно. А если их много, и если на дворе еще 2007 год - не удивительно, что разрабам такая идея хорошей не казалась. Им не хотелось чтоб их игра тормозила на всем подряд. Изменено 14 Декабря 2019 пользователем Zander_driver 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 14 Декабря 2019 только что, ed_rez сказал: Не нравится, когда умные и рукастые ребята тратят время на то, что уже сделано. Ну тут, случай не тот. Статик-3D я не трогал, и те кто его пытаются вернуть к жизни, трудятся не зря. Технология полезная, если причесать) Я более простым путем пошел, через шаманства с камерой на основном вьюпорте. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 26 Декабря 2019 А меня с некоторых пор все больше интересует вопрос - почему почти никто не берется изменять серверные классы? Будто священная корова, которую нельзя изменять. Или табу какое... В OGSR поменяли чуть-чуть, но не очень много. GSC, сливая исходники, сопровождали их запретом на изменение определенного ряда вещей? Или в чем причина. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 26 Декабря 2019 18 минут назад, dsh сказал: Видимо потому, что Видимо да) Давно у меня вертелась на уме одна мысль. Озвучу пожалуй: К 2020 году уже для любой мыслимой фичи в модах на "Сталкер", на вопрос "почему ее еще не сделали?" Правильным ответом будет - потому что никому из тех, кто мог это сделать, оно было не нужно. Для любой и какой угодно, кем бы то ни было выдуманной. Просто пережеваны уже все идеи давно. Мне, надо было убедиться. В справедливости этой мысли. Спасибо И, пошел я делать свой мод дальше. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 28 Января 2020 Из-за чего может не срабатывать хит-каллбек в неизвестно каком движке, в коде которого делали неизвестно какие изменения. Даже не знаю. Возможно, неправильно настроена погода на Марсе. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 29 Марта 2020 (изменено) 16 минут назад, yurikteam сказал: убожество Для начала ненад так кричать. Во вторых, движок тут не причем. У вас в xml-конфиге (ui_talk), ширина текстового поля указана как 0, или около того. Cлишком мало, короче. Поставьте там в конфиге нормальную ширину, и будет все ок. Только что, yurikteam сказал: после сборки исходника Хм) Тогда я бы проверял, что теперь с чтением того конфига. В исходниках. Движок же может его и не читать. Если таковое в исходнике написано. Изменено 29 Марта 2020 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 1 Апреля 2020 (изменено) Только что, icetorch2001 сказал: вопрос А X-Ray с включенной поддержкой OpenMP вообще собирается? Надо проверить... так то вопрос интересный очень. Изменено 1 Апреля 2020 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 1 Апреля 2020 Только что, abramcumner сказал: OpenMP просто оставит код как есть. Так для этого директивы openmp есть, чтобы указывать ему как себя вести. Только что, abramcumner сказал: вместо кучки сложений/умножений будет передача данных в потоки, синхронизация и прочие радости многопоточности. Полагаю, это зависит от размера массива вычислений, куда приложить. В некоторых местах, выхлоп от многопоточности определенно должен быть... Хоть и не утверждаю что это обязательно матрицы. Только что, abramcumner сказал: лучше перевести сталкерскую математику на DirectXMath или glm А почему лучше? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 2 Апреля 2020 Может я чего не понял, но где тут OpenMP? Или уже про другое речь идет. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 15 Апреля 2020 В LuaJIT OGSR разбирается кто-нибудь? При ковыряниях движка OGSR, возникла непонятка. Что я, собственно, делаю. Новый класс для вывода всякой информации в описании итема, по образу и подобию CUIWpnParams и его аналогов. И, связи с Lua-функциями для него. Вот в этих связях и проблема... По порядку: Скрытый текст UIItemInfo.h, UIItemInfo.cpp: void TryAddVexelInfo(CInventoryItem* obj); CUIVexelParams* UIVexParams; void CUIItemInfo::TryAddVexelInfo(CInventoryItem* obj) { if (UIVexParams->Check(obj)) { UIVexParams->SetInfo(obj); UIDesc->AddWindow(UIVexParams, false); } } Вызов TryAddVexelInfo в InitItem добавил. класс CUIVexelParams целиком: uiwpnparams.h #pragma once #include "UIWindow.h" class CUIXml; #include "../script_export_space.h" class CUIVexelParams : public CUIWindow { public: CUIVexelParams (); virtual ~CUIVexelParams (); void InitFromXml (CUIXml& xml_doc); void SetInfo (CInventoryItem* item); bool Check (CInventoryItem* item); protected: CUIStatic main_Line0; CUIStatic main_Line1; }; uiwpnparams.cpp #include "StdAfx.h" #include "UIXmlInit.h" #include "../Level.h" #include "../ai_space.h" #include "../script_engine.h" #include "../PhysicsShellHolder.h" #include "../Inventory_Item.h" #include "../Vexel.h" #include "clsid_game.h" #include "script_game_object.h" #include "UITextureMaster.h" #include "../string_table.h" #include "../COMMON_AI/inventory_space.h" struct SLuaFFParams{ luabind::functor<const char*> m_functorVexelAutor; luabind::functor<int> m_functorFFitem; SLuaFFParams(); ~SLuaFFParams(); }; SLuaFFParams::SLuaFFParams() { bool functor_exists; functor_exists = ai().script_engine().functor("trade_assert.GetVexelAutor" , m_functorVexelAutor); VERIFY(functor_exists); functor_exists = ai().script_engine().functor("ui_wpn_params.GetFFitem" , m_functorFFitem); VERIFY(functor_exists); } SLuaFFParams::~SLuaFFParams() { } SLuaFFParams* g_lua_ff_params = NULL; void destroy_lua_ff_params() { if (g_lua_ff_params) xr_delete(g_lua_ff_params); } CUIVexelParams::CUIVexelParams(){ AttachChild(&main_Line0); AttachChild(&main_Line1); } CUIVexelParams::~CUIVexelParams() { destroy_lua_ff_params(); } void CUIVexelParams::InitFromXml(CUIXml& xml_doc) { if (!xml_doc.NavigateToNode("vexel_params", 0)) return; CUIXmlInit::InitWindow (xml_doc, "vexel_params", 0, this); CUIXmlInit::InitStatic (xml_doc, "vexel_params:cap_1", 0, &main_Line0); CUIXmlInit::InitStatic (xml_doc, "vexel_params:cap_2", 0, &main_Line1); } bool CUIVexelParams::Check(CInventoryItem* item) { return (item != nullptr && item->object().CLS_ID == CLSID_IITEM_VEXEL); } void CUIVexelParams::SetInfo(CInventoryItem* item) { if(!g_lua_ff_params) g_lua_ff_params = xr_new<SLuaFFParams>(); main_Line1.SetText(""); main_Line0.SetText(""); Vexel* vex = smart_cast<Vexel*>(item); if (vex == nullptr) return; u16 sid = vex->Author_StoryID(); u32 price = vex->GivedCost(); LPCSTR vexAuthor = shared_str(g_lua_ff_params->m_functorVexelAutor(sid)).c_str(); string256 str; sprintf_s(str, "%s: %s", CStringTable().translate("author_inv_st").c_str(), vexAuthor); main_Line0.SetText(str); sprintf_s(str, "%s: %i", CStringTable().translate("price_inv_st").c_str(), price); main_Line1.SetText(str); } Что в итоге, происходит: Запускаю игру, открываю инвентарь, кликаю мышой по итему соответствующего класса - все работает! Этот новый класс Показывает в описании то что ему положено. Но есть одно НО. Делаю сейв, тут же делаю лоад. И... тот же класс прекращает работать, а по клику мышой на тот же самый предмет, я получаю такой вылет: [15.04.20 13:50:33.933] ***************************[ScriptCrashHandler]********************************** [15.04.20 13:50:33.933] stack traceback: [15.04.20 13:50:33.933] ********************************************************************************* [15.04.20 13:50:33.933] ******************************************************************************** [15.04.20 13:50:33.933] !![LogStackTrace] ExceptionCode is [c0000005] [15.04.20 13:50:43.989] !!Unhandled exception stack trace: ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\LuaJIT.dll], AddrPC.Offset: [00007FFA4984D900], Fun: [lj_tab_getinth()] + [80 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\luajit\src\lj_tab.c-->409] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\LuaJIT.dll], AddrPC.Offset: [00007FFA497DF4F9], Fun: [lua_rawgeti()] + [57 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\luajit\src\lj_api.c-->824] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41754CFC], Fun: [luabind::detail::proxy_functor_caller<char const *,unsigned short const *>::operator char const *()] + [40 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\luabind\luabind\functor.hpp-->126] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA4175435D], Fun: [CUIVexelParams::SetInfo()] + [185 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiwpnparams.cpp-->476] + [32 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA417563C3], Fun: [CUIItemInfo::TryAddVexelInfo()] + [47 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiiteminfo.cpp-->275] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA417562A8], Fun: [CUIItemInfo::InitItem()] + [960 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiiteminfo.cpp-->224] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41724FA0], Fun: [CUIInventoryWnd::SetCurrentItem()] + [60 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiinventorywnd2.cpp-->38] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41724486], Fun: [CUIInventoryWnd::OnItemSelected()] + [34 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiinventorywnd2.cpp-->587] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA417A4AF2], Fun: [CUIDragDropListEx::OnItemSelected()] + [54 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uidragdroplistex.cpp-->259] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA4175A65F], Fun: [CUIWndCallback::OnEvent()] + [183 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiwndcallback.cpp-->40] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA417A305D], Fun: [CUICellItem::OnMouse()] + [49 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uicellitem.cpp-->65] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA417A0ABD], Fun: [CUIInventoryCellItem::OnMouse()] + [33 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uicellcustomitems.cpp-->109] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41773758], Fun: [CUIWindow::OnMouse()] + [744 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiwindow.cpp-->367] + [91 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41773758], Fun: [CUIWindow::OnMouse()] + [744 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiwindow.cpp-->367] + [91 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA417A5C58], Fun: [CUIDragDropListEx::OnMouse()] + [32 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uidragdroplistex.cpp-->368] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41773758], Fun: [CUIWindow::OnMouse()] + [744 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiwindow.cpp-->367] + [91 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41773758], Fun: [CUIWindow::OnMouse()] + [744 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiwindow.cpp-->367] + [91 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41721C98], Fun: [CUIInventoryWnd::OnMouse()] + [244 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uiinventorywnd.cpp-->427] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA41771738], Fun: [CUIDialogWnd::IR_OnKeyboardPress()] + [160 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui\uidialogwnd.cpp-->79] + [28 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA4171E4E8], Fun: [CUI::IR_OnKeyboardPress()] + [48 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\ui.cpp-->157] + [23 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrGame.dll], AddrPC.Offset: [00007FFA414B38C4], Fun: [CLevel::IR_OnKeyboardPress()] + [188 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xrgame\level_input.cpp-->151] + [27 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79A70CB], Fun: [CInput::MouseUpdate()] + [351 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\xr_input.cpp-->261] + [26 byte(s)] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79A7E94], Fun: [CInput::OnFrame()] + [84 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\xr_input.cpp-->428] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79DCBD4], Fun: [CRegistrator<pureAppStart>::Process()] + [84 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\pure.h-->86] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79DBCD8], Fun: [CRenderDevice::FrameMove()] + [292 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\device.cpp-->419] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79DBFEF], Fun: [CRenderDevice::on_idle()] + [267 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\device.cpp-->252] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79DC6AE], Fun: [CRenderDevice::message_loop()] + [98 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\device.cpp-->324] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79DBDC6], Fun: [CRenderDevice::Run()] + [182 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\device.cpp-->365] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E799E640], Fun: [Startup()] + [284 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\x_ray.cpp-->214] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E799E9B6], Fun: [WinMain_impl()] + [478 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\x_ray.cpp-->414] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E799C0CD], Fun: [WinMain()] + [73 byte(s)], File-->Line: [e:\storage\programming\cpp\xray\ogsr8\ogsr_engine\xr_3da\x_ray.cpp-->449] ! Module: [E:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R_OGSR\bin\xrEngine.exe], AddrPC.Offset: [00007FF7E79FF20A], Fun: [__scrt_common_main_seh()] + [262 byte(s)], File-->Line: [d:\agent\_work\2\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl-->288] + [33 byte(s)] ! Module: [C:\Windows\system32\KERNEL32.DLL], AddrPC.Offset: [00007FFA6F8C1611], Fun: [BaseThreadInitThunk()] + [13 byte(s)] ! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00007FFA6FA764AD], Fun: [RtlUserThreadStart()] + [29 byte(s)] [15.04.20 13:50:43.989] ******************************************************************************** [15.04.20 13:50:50.551] --Saved dump file to [e:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r_ogsr\_appdata_\logs\xray_user_04-15-20_13-50-50.mdmp] Т.е. При первом запуске все прекрасно, при втором - LuaJIT-у что-то не нравится. И я пока не понял что. В папках Luabind, LuaJIT, я не трогал ничего, там все так же как в исходниках OGSR. В деструкторе нового класса, удаление ссылок на функции есть, в SetInfo проверка наличия и создание, если не существуют - есть... что ему надо? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 331 Опубликовано 15 Апреля 2020 1 час назад, abramcumner сказал: залогировать вызовы конструкторов/деструкторов Ну это долгий метод копания) Который придется применить, если других вариантов не будет. Просто была надежда что может кто-то ловил подобное. Прекращение работы движковых методов после сейв-лоада, это все же довольно необычно. Если кому-то попадалось, то наверное эти кто-то, запомнили в чем причина таких странностей. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение