IPB

Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

 
 
>

Сложность: от новичка до мастера. На что влияет?

, Старые песни... о главном

 
 aka_sektor
сообщение 02.07.2019, 19:23
Сообщение #1


Заслуженный Мастер Игры
*************

Группа: Участник
Сообщений: 1556
Регистрация: 04.04.2013
Из: Беларусь
Пользователь №: 16432



А вот интересный вопрос. На что же всегда в серии S.T.A.L.K.E.R. влияла выбранная сложность?

Первое что приходит на ум, т.к. ковырял конфиги оружия: урон оружия.
А именно, параметр:
Код
hit_power = 1.58, 1.62, 1.65, 1.68
Цитата
Уровень сложности по убыванию, т.е. от мастера до новичка; можно установить и одно значение

Но работает ли это в обе стороны? Оружие у ГГ стреляет больнее, и неписи падают бодрее. Или только у неписей оружие стреляет больнее.


Кроме того, интересует, можно ли менять сложность "на лету"? Графа то такая есть в Опциях.

Судя по инфе из статьи: http://stalkerin.gameru.net/wiki/index.php...настройки(ч._2)
Цитата
Вы можете также менять уровень сложности налету
Можно.

Ещё там написано:
Цитата
Чем выше настройка, тем меньше полезных объектов может быть найдено в игровом мире
Цитата
и больше вероятность, что враг вас ранит при стрельбе
Непонятно, где это задается. Какие параметры, в каких файлах, знает кто?

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

Если кто знает на что ещё влияет сложность, пишите.

Сообщение отредактировал aka_sektor - 02.07.2019, 19:25
Перейти в начало страницы
 
 
 xrModder
сообщение 02.07.2019, 20:46
Сообщение #2


Почти Игроман
*********

Группа: Участник
Сообщений: 566
Регистрация: 08.08.2018
Из: Земля
Пользователь №: 29590



Например:
actor.ltx
Код
[actor_immunities_gd_novice]
burn_immunity              = 0.5       ;коэффициенты иммунитета
strike_immunity            = 0.5
shock_immunity             = 0.5
wound_immunity             = 0.5
radiation_immunity         = 0.5
telepatic_immunity         = 0.5
chemical_burn_immunity     = 0.5
explosion_immunity         = 0.1
fire_wound_immunity        = 0.5


[actor_immunities_gd_stalker]
burn_immunity              = 0.65       ;коэффициенты иммунитета
strike_immunity            = 0.65
shock_immunity             = 0.65
wound_immunity             = 0.65
radiation_immunity         = 0.65
telepatic_immunity         = 0.65
chemical_burn_immunity     = 0.65
explosion_immunity         = 0.3
fire_wound_immunity        = 0.65

[actor_immunities_gd_veteran]
burn_immunity              = 0.8       ;коэффициенты иммунитета
strike_immunity            = 0.8
shock_immunity             = 0.8
wound_immunity             = 0.8
radiation_immunity         = 0.8
telepatic_immunity         = 0.8
chemical_burn_immunity     = 0.8
explosion_immunity         = 0.6
fire_wound_immunity        = 0.8

[actor_immunities_gd_master]
burn_immunity              = 1.0       ;коэффициенты иммунитета
strike_immunity            = 1.0
shock_immunity             = 1.0
wound_immunity             = 1.0
radiation_immunity         = 1.0
telepatic_immunity         = 1.0
chemical_burn_immunity     = 1.0
explosion_immunity         = 1.0
fire_wound_immunity        = 1.0


А отсюда случайном образом выбирается для хита:
Код
hit_power = 1.58, 1.62, 1.65, 1.68

Перейти в начало страницы
 
 
 aka_sektor
сообщение 02.07.2019, 20:55
Сообщение #3


Заслуженный Мастер Игры
*************

Группа: Участник
Сообщений: 1556
Регистрация: 04.04.2013
Из: Беларусь
Пользователь №: 16432



Цитата(xrModder @ 02.07.2019, 20:46) *
actor.ltx

Стало быть урон получаемый ГГ от огнестрела задается в этом конфиге.

А что эти секции:
Код
actor_immunities_gd_novice
actor_immunities_gd_stalker
actor_immunities_gd_veteran
actor_immunities_gd_master

Они в движке, как я понимаю? Убрать, добавить не выйдет.

Цитата(xrModder @ 02.07.2019, 20:46) *
случайном образом

Хм... странно. Одно время обсуждали в скайпе параметры оружия, проверяли по движку. Вроде пришли к тому, что не случайно.
Сам уверен, что случайно?

UPD:
Насчёт:
Цитата(aka_sektor @ 02.07.2019, 19:23) *
Чем выше настройка, тем меньше полезных объектов может быть найдено в игровом мире

Вот вспомнил, натыкался здесь: http://stalkerin.gameru.net/wiki/index.php...дметов_в_трупах
Код
[item_count_0]        -новичок
[item_count_1]        -опытный
[item_count_2]        -ветеран
[item_count_3]        -мастер


UPD2:
Как удалось понять, файл gamedata\config\misc\death_generic.ltx вызывается из death_manager.script
Код
local death_ini = ini_file("misc\\death_generic.ltx")


UPD3:
Как скрипт понимает какая цифра какой сложности соответствует, видимо можно по строчке:
Код
    local item_count_section = "item_count_" .. level.get_game_difficulty()


UPD4:
Ааа... ну понятно, bind_stalker.script
Код
local game_difficulty_by_num = {
    [0] = "gd_novice",
    [1] = "gd_stalker",
    [2] = "gd_veteran",
    [3] = "gd_master"
    }


UPD5:
А они в свою очередь в движке: xr_3da\xrGame\game_cl_single.cpp
Код
xr_token    difficulty_type_token                        [ ]={
    { "gd_novice",                        egdNovice                                    },
    { "gd_stalker",                        egdStalker                                    },
    { "gd_veteran",                        egdVeteran                                    },
    { "gd_master",                        egdMaster                                    },
    { 0,                            0                                            }
};


Сообщение отредактировал aka_sektor - 02.07.2019, 21:19
Перейти в начало страницы
 
 
 Cossack-HD
сообщение 03.07.2019, 01:12
Сообщение #4


TECHNOSLAV 80 уровня
******************

Группа: Участник
Сообщений: 3446
Регистрация: 26.01.2014
Из: Стокгольм
Пользователь №: 19142



hit_power = 1.1, 1.2, 1.3, 1.4
На новичке ГГ будет наносить 1.4 урона, а NPC будут наносить 1.1. На "мастере" всё наоборот - ГГ наносит низкий урон, NPC высокий. Проверял опытным путём (ставил ноль то в конец, то в начало). Можно оставить просто одну цифру чместо четырёх и на всех урочнях сложности будет одинаковый исходный урон (дальше играют роль иммунитеты)

Вероятность засчёта попадания пуль по ГГ в параметрах типа hit_probability_gd_xxx. Я предпочитаю ставить 1.0, в противном случае ГГ "уворачивается" от слишком большой части пуль.

В каком-то конфиге указано, с какого расстояния начинает работать hit_probability. То есть с расстояния ниже 20 (вроде) метров, ГГ не сможет "уворачиваться". Поэтому перестрелки с NPC в закрытых помещениях часто намного хардкорнее, чем в "чистом поле".

Это всё касается ТЧ. В ЧН грят чем выше сложность, тем легче убить NPC. Не проверял.

Сообщение отредактировал Cossack-HD - 03.07.2019, 01:16
Перейти в начало страницы
 
 
 NanoBot-AMK
сообщение 08.07.2019, 22:51
Сообщение #5


Почти Игроман
*********

Группа: Участник
Сообщений: 588
Регистрация: 10.11.2015
Пользователь №: 22739



Ещё сложность игры, влияет на максимальную дальность броска гранаты НПС для ЧН и ЗП.
Перейти в начало страницы
 
 
 AndreySol
сообщение 12.07.2019, 21:01
Сообщение #6


Геймер
******

Группа: Участник
Сообщений: 129
Регистрация: 16.02.2014
Пользователь №: 19339



Цитата
;-- params when silencer is attached, similar to corresponding params without prefix silencer_
silencer_hit_power = 0.38
silencer_hit_impulse = 120
silencer_fire_distance = 250
silencer_bullet_speed = 600

Мусор по ходу? Поиском по исходникам нигде не найдено, в скриптах то же.
Перейти в начало страницы
 
 
 Cossack-HD
сообщение 13.07.2019, 01:11
Сообщение #7


TECHNOSLAV 80 уровня
******************

Группа: Участник
Сообщений: 3446
Регистрация: 26.01.2014
Из: Стокгольм
Пользователь №: 19142



Цитата(AndreySol @ 12.07.2019, 23:01) *
Цитата
;-- params when silencer is attached, similar to corresponding params without prefix silencer_
silencer_hit_power = 0.38
silencer_hit_impulse = 120
silencer_fire_distance = 250
silencer_bullet_speed = 600

Мусор по ходу? Поиском по исходникам нигде не найдено, в скриптах то же.

Т.е. урон и импульс с конфига глушителя не юзается? Интересная находка. 12 лет эффекта Плацебо (IMG:style_emoticons/default/totstalkir.gif)
Перейти в начало страницы
 
 
 AndreySol
сообщение 13.07.2019, 11:02
Сообщение #8


Геймер
******

Группа: Участник
Сообщений: 129
Регистрация: 16.02.2014
Пользователь №: 19339



Цитата
Т.е. урон и импульс с конфига глушителя не юзается?

Да нет, все юзается, просто конфиги глушителя читаются из его секции. А эти параметры оказались просто мусор, который забыли\поленились удалить.
Перейти в начало страницы
 
 
 RayTwitty
сообщение 13.07.2019, 18:24
Сообщение #9


Доктор Игровых Наук
*******************

Группа: Участник
Сообщений: 3630
Регистрация: 24.09.2010
Пользователь №: 14086



Цитата(AndreySol @ 13.07.2019, 11:02) *
А эти параметры оказались просто мусор, который забыли\поленились удалить.

А ты точно уверен? Нигде там не доклеивается случаем "silencer_" к обычным ТТХ при чтении? Насколько я помню, это работало. Под рукой в данный момент нет сырцов чтобы проверить.
Перейти в начало страницы
 
 
 buffy
сообщение 13.07.2019, 19:54
Сообщение #10


Почти Игроман
*********

Группа: Участник
Сообщений: 732
Регистрация: 05.11.2017
Пользователь №: 28310



Судя по всему правы обе стороны=D
Т.к. по сути загрузка этих параметров происходит здесь:
Код
void CShootingObject::LoadFireParams    (LPCSTR section, LPCSTR prefix)
{
    string256    full_name;
    string32    buffer;
    shared_str    s_sHitPower;
    //базовая дисперсия оружия
    fireDispersionBase    = pSettings->r_float    (section,"fire_dispersion_base"    );
    fireDispersionBase    = deg2rad                (fireDispersionBase);
    //сила выстрела и его мощьность
    s_sHitPower            = pSettings->r_string_wb(section,strconcat(sizeof(full_name),full_name, prefix, "hit_power"));//читаем строку силы хита пули оружия
    fvHitPower[egdMaster]    = (float)atof(_GetItem(*s_sHitPower,0,buffer));//первый параметр - это хит для уровня игры мастер

    fvHitPower[egdVeteran]    = fvHitPower[egdMaster];//изначально параметры для других уровней
    fvHitPower[egdStalker]    = fvHitPower[egdMaster];//сложности
    fvHitPower[egdNovice]    = fvHitPower[egdMaster];//такие же
    
    int num_game_diff_param=_GetItemCount(*s_sHitPower);//узнаём колличество параметров для хитов
    if (num_game_diff_param>1)//если задан второй параметр хита
    {
        fvHitPower[egdVeteran]    = (float)atof(_GetItem(*s_sHitPower,1,buffer));//то вычитываем его для уровня ветерана
    }
    if (num_game_diff_param>2)//если задан третий параметр хита
    {
        fvHitPower[egdStalker]    = (float)atof(_GetItem(*s_sHitPower,2,buffer));//то вычитываем его для уровня сталкера
    }
    if (num_game_diff_param>3)//если задан четвёртый параметр хита
    {
        fvHitPower[egdNovice]    = (float)atof(_GetItem(*s_sHitPower,3,buffer));//то вычитываем его для уровня новичка
    }
    
    //fHitPower            = pSettings->r_float    (section,strconcat(full_name, prefix, "hit_power"));
    fHitImpulse            = pSettings->r_float    (section,strconcat(sizeof(full_name),full_name, prefix, "hit_impulse"));
    //максимальное расстояние полета пули
    fireDistance        = pSettings->r_float    (section,strconcat(sizeof(full_name),full_name, prefix, "fire_distance"));
    //начальная скорость пули
    m_fStartBulletSpeed = pSettings->r_float    (section,strconcat(sizeof(full_name),full_name, prefix, "bullet_speed"));
    m_bUseAimBullet        = pSettings->r_bool        (section,strconcat(sizeof(full_name),full_name, prefix, "use_aim_bullet"));
    if (m_bUseAimBullet)
    {
        m_fTimeToAim        = pSettings->r_float    (section,strconcat(sizeof(full_name),full_name, prefix, "time_to_aim"));
    }
}


Но вызывается функция только так
Код
if(IsSilencerAttached() && SilencerAttachable())
    {        
        m_sFlameParticlesCurrent = m_sSilencerFlameParticles;
        m_sSmokeParticlesCurrent = m_sSilencerSmokeParticles;
        m_pSndShotCurrent = &sndSilencerShot;


        //сила выстрела
        LoadFireParams    (*cNameSect(), "");

        //подсветка от выстрела
        LoadLights        (*cNameSect(), "silencer_");
        ApplySilencerKoeffs();
    }
    else
    {
        m_sFlameParticlesCurrent = m_sFlameParticles;
        m_sSmokeParticlesCurrent = m_sSmokeParticles;
        m_pSndShotCurrent = &sndShot;

        //сила выстрела
        LoadFireParams    (*cNameSect(), "");
        //подсветка от выстрела
        LoadLights        (*cNameSect(), "");
    }


Из чего мы можем сделать вывод, что либо этот код deprecated, либо явно недоработка связанная с копипастом кода
Перейти в начало страницы
 
 
 mortan
сообщение 14.07.2019, 13:53
Сообщение #11


Геймер
******

Группа: Участник
Сообщений: 120
Регистрация: 28.06.2016
Из: Воронеж
Пользователь №: 24726



buffy, а дальше вот так:
CODE

float l_fHitPower = 0.0f;
if (ParentIsActor())//если из оружия стреляет актёр(игрок)
{
if (GameID() == eGameIDSingle)
{
l_fHitPower = fvHitPower[g_SingleGameDifficulty];
}
else
{
l_fHitPower = fvHitPower[egdMaster];
}
}
else
{
l_fHitPower = fvHitPower[egdMaster];
}
Перейти в начало страницы
 
 
 aka_sektor
сообщение 14.07.2019, 15:17
Сообщение #12


Заслуженный Мастер Игры
*************

Группа: Участник
Сообщений: 1556
Регистрация: 04.04.2013
Из: Беларусь
Пользователь №: 16432



Цитата(AndreySol @ 12.07.2019, 21:01) *
Мусор по ходу?

Может пояснишь, каким образом параметры глушителя относятся к обсуждению темы сложности в игре?

Похоже это оффтоп.
Перейти в начало страницы
 
 
 buffy
сообщение 14.07.2019, 15:59
Сообщение #13


Почти Игроман
*********

Группа: Участник
Сообщений: 732
Регистрация: 05.11.2017
Пользователь №: 28310



mortan, ну вроде всё демократично=) у неписей и в мульте у актёра фул урон, иначе по уровню сложности выбирается
ЗЫ: я далеко не копал, на то у меня нет времени

Цитата(aka_sektor @ 14.07.2019, 15:17) *
каким образом параметры глушителя относятся к обсуждению

В заглавии темы: "На что влияет?"
Перейти в начало страницы
 
 
 Cossack-HD
сообщение 14.07.2019, 16:04
Сообщение #14


TECHNOSLAV 80 уровня
******************

Группа: Участник
Сообщений: 3446
Регистрация: 26.01.2014
Из: Стокгольм
Пользователь №: 19142



Цитата(buffy @ 14.07.2019, 17:59) *
mortan, ну вроде всё демократично=) у неписей и в мульте у актёра фул урон, иначе по уровню сложности выбирается
ЗЫ: я далеко не копал, на то у меня нет времени

Цитата(aka_sektor @ 14.07.2019, 15:17) *
каким образом параметры глушителя относятся к обсуждению

В заглавии темы: "На что влияет?"

У глушителя вроде всегда только один параметр урона (уникальный для каждого оружия). Так что в контексте сложности это оффтоп.
Но вот неожиданный поворот: если играем на высокой сложности, где для актёр будет стрелять самым слабым hit_power, то silencer_hit_power может быть выше и глушитель будет помогать наносить больше урона по врагам (IMG:style_emoticons/default/laugh.gif)

Сообщение отредактировал Cossack-HD - 14.07.2019, 16:05
Перейти в начало страницы
 
 
 aka_sektor
сообщение 14.07.2019, 19:48
Сообщение #15


Заслуженный Мастер Игры
*************

Группа: Участник
Сообщений: 1556
Регистрация: 04.04.2013
Из: Беларусь
Пользователь №: 16432



Цитата(buffy @ 14.07.2019, 15:59) *
В заглавии

Цитата(Cossack-HD @ 14.07.2019, 16:04) *
У глушителя вроде всегда только один параметр урона

Мы как-то выясняли вопрос по указанным параметрам, для статьи: https://modders.pro/Параметры_оружия
Цитата(AndreySol @ 12.07.2019, 21:01) *
silencer_hit_power = 0.38
silencer_hit_impulse = 120
silencer_fire_distance = 250
silencer_bullet_speed = 600


Так вот, это устаревшие параметры из Oblivion Lost. В финалке не используются.
Перейти в начало страницы
 
 
 buffy
сообщение 14.07.2019, 22:59
Сообщение #16


Почти Игроман
*********

Группа: Участник
Сообщений: 732
Регистрация: 05.11.2017
Пользователь №: 28310



Цитата(aka_sektor @ 14.07.2019, 19:48) *
устаревшие параметры из Oblivion Lost

Мой пост, судя по сему, опять не поняли.
Я клонил к тому, что, во-первых, глушители появились позже "Oblivion Lost'a", а во-вторых код в строках 908-918 явная копипаста кода из строк 922-929

(IMG:https://images.gameru.net/thumb/2db0a74665700ac.png)
Т.е. вместо
Код
914:> LoadFireParams (*cNameSect(), "");

логически предполагалось
Код
LoadFireParams    (*cNameSect(), "silencer_");


И выглядело это так(далее П-программист, Д-дизайнер):
-Д: Нужно сделать разные параметры урона у пушки с и без глушителя. В качестве параметра использовать префикс "silencer_" к основным "hit_power", "hit_impulse" ...
-П: Пфф, да ща... готово
-Д: Параметры прописал, эээ а у нас есть утилита для отладки параметров
-П: ээ, нет. Эээ, ну партикл то меняется - значит работает
Как-то так =D
Перейти в начало страницы
 
 
 
 

 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 21.07.2019, 20:39