AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Моды для Ил-2 > Первым делом, первым делом - самолеты

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2019, 01:24   #1
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию Заготовка мода регулировки SensYaw(управляемость) на земле.

Здравствуйте.
Ну из названия темы видно, что это не мод. Это описание возможного создания мода.
А сделано это из соображений, что я то на версии 4_09 развлекаюсь..
Другие же наверное ушли вперед в версия ИЛ-2.
Но все, что будет написано ниже применимо я думаю к любой версии и любой желающий или
сделает мод под разные версии игры или соберет для себя мод и будет ЕДИНОЛИЧНО летать
на своей версии выше чем 4_09.

В первую очередь хочу поблагодарить коллег по цеху "Авиаскинс" Дмитрия(Asura) и Романа(yt2) за
помощь в решении этой проблеммы. Некоторыми подсказками они существенно помогли !!!
О чем же будет речь ? А вот о чем.

Озадачился я как-то излишней управляемостью самолетов при движении по земле во время рулежек
и самое главное во время разбега на взлете и пробега на посадке. Исследования меня привели к необходимости
введения разной чувствительности руля направления на земле и в воздухе.
В итоге родилось мое видение проблеммы и мое решение. Возможно более квалифицированные
программисты решили бы все по другому.
Ну тут прошу принять это как : "Я художник, я так вижу..."

Начнем:

Во всех версия ИЛ-2 имеется класс FlightModelMain он немного отличается от версии к версии,
но те места куда будем вмешиваться я думаю одинаковы у всех версий.
Естественно, если используется класс FlightModelMain из мода DiffFM определенной версии игры,
то и вмешиваться надо именно в него !! Для дефолтных версий игры не использующих мод DiffFM
править надо дефолтный класс FlightModelMain.

В класс FlightModelMain надо добавить код выделенный красным, выше и ниже для ориентира приведены дефолтные строки

VmaxFLAPS = sectfile.get(s2, "VmaxFLAPS", 1.0F);
VminFLAPS = sectfile.get(s2, "VminFLAPS", 1.0F);
SensYaw = sectfile.get(s2, "SensYaw", 1.0F);

SensYawAir = sectfile.get(s2, "SensYaw", 1.0F);
SensYawGround = sectfile.get(s2, "SensYawGround", 0.0F);
if(SensYawGround == 0.0F)
SensYawGround = SensYawAir;


SensPitch = sectfile.get(s2, "SensPitch", 1.0F);
SensRoll = sectfile.get(s2, "SensRoll", 1.0F);

Общая расшифровка и описание кода нового:

SensYawAir = sectfile.get(s2, "SensYaw", 1.0F);
Это фиксация параметра SensYaw из баттонса(или внешней ФМ) для случая самолет поднялся в воздух.

SensYawGround
Это новый параметр добавляемый в баттонс(или внешней ФМ) флайтмодели КОНКРЕТНОГО самолета для случая самолет
находится на земле на взлете или коснулся земли на посадке.

if(SensYawGround == 0.0F)
SensYawGround = SensYawAir;
Это если нет параметра SensYawGround нового во флайтмодели в баттонсе(или внешней ФМ),
то используется ВСЕГДА И ВЕЗДЕ обычный параметр чувствительности руля направления имеющийся в баттонсе(или внешней ФМ).
И управляемость одинакова для земли и воздуха.
Тоесть данный код по идеи не должен никак влиять ни на какие самолеты, у которых нету этого нового параметра SensYawGround и нового в кода в классе КОНКРЕТНОГО самолеты .

Последний раз редактировалось carsmaster; 31.03.2019 в 01:32.
carsmaster вне форума   Ответить с цитированием
Старый 31.03.2019, 01:25   #2
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Так же внизу класса надо дописать код(красным), чтобы класс знал вообще новые параметры, выше и ниже для ориентира приведены дефолтные строки


public Autopilotage AP;
public Controls CT;
public float SensYaw;

public float SensYawGround;
public float SensYawAir;


public float SensPitch;
public float SensRoll;

В баттонс во флайтмодель конкретного самолета(или внешней ФМ) надо добавить новый параметр вот так (выделено красным):

[Params]
CriticalAOA 16.00
CriticalCy 01.52
CxCurvature 00.70
CxStraightness 00.08
CriticalAOAFlap 20.00
CriticalCyFlap 01.70
SpinTailAlpha 17.00
SpinCxLoss 0.07
SpinCyLoss 0.03
Vyfac 1.0
Tfac 1.1
Vmin 170.0
Vmax 567.0
VmaxAllowed 780.0
VmaxH 656.0
HofVmax 4100.0
VminFLAPS 130.0
VmaxFLAPS 260.0
Vz_climb 23.0
V_climb 250.0
T_turn 17.5
V_turn 340.0
K_max 15.0
Cy0_max 0.15
FlapsMult 1.0
FlapsAngSh 6.0
Range 648.0
CruiseSpeed 420.0
SensYaw 0.48
SensPitch 0.65
SensRoll 0.25
SensYawGround 0.24 // ПОДБИРАЙТЕ значение сами
[Polares]


Теперь о коде в классе самого самолета, без которго ничего не будет работать
и останется по прежнему чувствительной одинаковой для всех случаев.

В классе многих самолетов есть код вида(для примера взят дефолт Yak_3):

public void update(float f)
{
hierMesh().chunkSetAngles("OilRad_D0", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 25F, 0.0F);
hierMesh().chunkSetAngles("Water_luk", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 12F, 0.0F);
super.update(f);
}


Надо его дополнить по образцу:
public void update(float f)
{
if(FM.Gears.onGround())
FM.SensYaw = FM.SensYawGround;
else
if(!FM.Gears.onGround())
FM.SensYaw = FM.SensYawAir;


hierMesh().chunkSetAngles("OilRad_D0", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 25F, 0.0F);
hierMesh().chunkSetAngles("Water_luk", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 12F, 0.0F);
super.update(f);
}

Описание:
if(FM.Gears.onGround())
FM.SensYaw = FM.SensYawGround;
Если шасси самолета находятся на земле то работает новый параметр SensYawGround
else
if(!FM.Gears.onGround())
FM.SensYaw = FM.SensYawAir;

Если шасси оторвались земли, то переключается на SensYawAir , тоест дефолтный обычный параметр
SensYaw чувствительности руля направления.
Аналогично и на посадке, шасси коснулись земли и включается "наземная" чувствительность.

Если похожего кода нету в классе самолета, то просто добавляем его полностью в класс

public void update(float f)
{
if(FM.Gears.onGround())
FM.SensYaw = FM.SensYawGround;
else
if(!FM.Gears.onGround())
FM.SensYaw = FM.SensYawAir;
super.update(f);
}


Ну и конечно не забываем сотворить новый баттонс с измененой флайтмоделью КОНКРЕТНОГО самолеты,
путем добавления нового параметра.

Само значение нового параметра SensYawGround подбирайте сами, я для тестов брал половину от существующего параметра.

Тоесть было в баттонсе(файлефлайтмодели) для Yak_3 SensYaw 0.48

Я для тестов назначал новому параметру SensYawGround 0.24.

Извините за много букфффф.... Но по другому никак...

Последний раз редактировалось carsmaster; 31.03.2019 в 01:45.
carsmaster вне форума   Ответить с цитированием
Старый 31.03.2019, 05:03   #3
andrey65
Модератор
 
Аватар для andrey65
 
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,001
Отправить сообщение для andrey65 с помощью ICQ
По умолчанию

А если попробовать проще?
Нельзя выложить эти файлы от того, что уже сделано, для пробы?
Если это Як-3 - то вот выложить бы эти файлы с подробной инструкцией для пробы. И мы б смогли попробовать. А вот делать то, что расписано выше - нереально для простого пользователя игры.
andrey65 вне форума   Ответить с цитированием
Старый 31.03.2019, 07:58   #4
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Цитата:
Сообщение от andrey65 Посмотреть сообщение
А если попробовать проще?
Нельзя выложить эти файлы от того, что уже сделано, для пробы?
Если это Як-3 - то вот выложить бы эти файлы с подробной инструкцией для пробы. И мы б смогли попробовать..
Понимаю Вас, как простого пользователя игры, но если честно ну вот совсем неохота ввязываться в эти "качели" с пользователями в виде сделай под эту версию, сделай под эту версию, сделай под мою сборку, у меня не работает(конфликты в сборке).
Ничего личного.
Просто моды в классическом виде я уже не делаю.....

Цитата:
Сообщение от andrey65 Посмотреть сообщение
А вот делать то, что расписано выше - нереально для простого пользователя игры.
Так я и написал, что это все "заготовка".
Тоесть "удочка" для "голодного человека", а вовсе не тарелка жаренной рыбы.
carsmaster вне форума   Ответить с цитированием
Старый 31.03.2019, 07:59   #5
andrey65
Модератор
 
Аватар для andrey65
 
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,001
Отправить сообщение для andrey65 с помощью ICQ
По умолчанию

Цитата:
Сообщение от carsmaster Посмотреть сообщение
Понимаю Вас, как простого пользователя игры, но если честно ну вот совсем неохота ввязываться в эти "качели" с пользователями в виде сделай под эту версию, сделай под эту версию, сделай под мою сборку, у меня не работает(конфликты в сборке).
Ничего личного.
Просто моды в классическом виде я уже не делаю.....



Так я и написал, что это все "заготовка".
Тоесть "удочка" для "голодного человека", а вовсе не тарелка жаренной рыбы.
Понятно, претензий нет!)
andrey65 вне форума   Ответить с цитированием
Старый 31.03.2019, 10:19   #6
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Да , кстати, тут коллега на мысль навел, с помощью этой заготовки вполне себе можно и увеличивать чувствительность руля направления на разбеге.
Это я себе УМЕНЬШАЛ.
Вдруг кого-то напрягает то ,что самолет прет в сторону слишком сильно и трудно удержать направление прямо.
carsmaster вне форума   Ответить с цитированием
Старый 02.04.2019, 12:06   #7
wasted
Местный
 
Аватар для wasted
 
Регистрация: 31.12.2011
Адрес: Полтава, Україна
Сообщений: 107
По умолчанию

Идея хорошая, особенно учитывая как в Иле смоделировано влияние бокового ветра на ЛА. Самая большая проблема вырисовывается при рулении, когда некоторые самолеты практически разворачивает на месте, с полным отсутствием возможности парировать это. Проблема лежит в том, что в ФМ Ила нет влияние площади фюзеляжа. Есть только площади поверхностей крыльев, киля, элеронов, РВ и РН и тд.

И я думаю, что можно успешно решить с помощью такого подхода проблему недостаточной управляемости некоторых самолетов с передней стойкой.

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

И еще я бы советовал привязаться к иному параметру нежели "шасси на земле да/нет". Такой подход приводит к резкой смене чувствительности рулей, что может негативно сказаться на поведении самолета при отрыве на взлете или при подскоке на посадке.

Лично на мой взгляд лучше привязаться к скорости ЛА.
wasted вне форума   Ответить с цитированием
Старый 02.04.2019, 12:47   #8
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Цитата:
Сообщение от wasted Посмотреть сообщение
Но я бы подошел к этому вопросу более индивидуально в плане конкретного ЛА с изменением значения чувствительности в классе самого ЛА, что бы не трогать основные аспекты игры и сохранить совместимость с другими версиями игры.
Так вроде бы все так и решено, индивидуально. Нет нового параметра в ФМ самолета и нового кода в классе конкретного самолета, все работает по дефолту с одним параметром.

Есть новый параметр в ФМ конкретного самолета и код в классе этого самолета , то работают два параметра чувствительности.

Цитата:
Сообщение от wasted Посмотреть сообщение
И еще я бы советовал привязаться к иному параметру нежели "шасси на земле да/нет". Такой подход приводит к резкой смене чувствительности рулей, что может негативно сказаться на поведении самолета при отрыве на взлете или при подскоке на посадке.
Лично на мой взгляд лучше привязаться к скорости ЛА.
Размышлял я на эту тему тоже, пока так реализовано, привязка к скорости тоже требует грамотного подхода. В планах есть, но не в приоритете по отношению к другим задачам.
carsmaster вне форума   Ответить с цитированием
Старый 02.04.2019, 12:53   #9
tarakan67
Местный
 
Регистрация: 15.09.2008
Сообщений: 2,178
По умолчанию

Не думаю, что надо менять чувствительность руля направления автоматически. Так мы можем получить большие проблемы при посадке с "козлением" В реале эта функция возложена на лётчика. То есть у лётчика есть переключатели, для того, чтобы в нужный момент(перед разбегом при взлёте или перед посадкой) либо полностью отключить управление носовым(хвостовым) колесом, либо изменить их предельные углы отклонения с большего на меньшее значение и наоборот. Для самолёта с хвостовым колесом в дефолте есть клавиша "застопорить/расстопорить хвостовое колесо" Неплохо было бы предусмотреть такую же клавишу для самолётов с передним управляемым колесом. Насчёт привязки к скорости мне кажется такая привязка уже сделана и в игре сейчас эффективность управляющих поверхностей уже привязана к скорости
tarakan67 вне форума   Ответить с цитированием
Старый 02.04.2019, 12:57   #10
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Цитата:
Сообщение от tarakan67 Посмотреть сообщение
Не думаю, что надо менять чувствительность руля направления автоматически. Так мы можем получить большие проблемы при посадке с "козлением"
Не попробуешь-не узнаешь.

Цитата:
Сообщение от tarakan67 Посмотреть сообщение
Для самолёта с хвостовым колесом в дефолте есть клавиша "застопорить/расстопорить хвостовое колесо" Неплохо было бы предусмотреть такую же клавишу для самолётов с передним управляемым колесом.
Поверьте, самолет с передним колесом, с застопоренным передним колесом ведет себя как корова на льду, это ад и треш.... Проверено. Все дело в том ,что тут работает простая геометрия(как с задне и переднеприводными автомобилями) ,например на ЯК-3 заднее колесо ВЕДОМОЕ, а например у Аэрокобры уже ВЕДУЩЕЕ.
Стопоря перднее колесо у Аэрокобры мы получает "корову".

Цитата:
Сообщение от tarakan67 Посмотреть сообщение
Насчёт привязки к скорости мне кажется такая привязка уже сделана и в игре сейчас эффективность управляющих поверхностей уже привязана к скорости
Этой привязки недостаточно, по моему опыту, ее влияние весьма слабо на низких скоростях.

Последний раз редактировалось carsmaster; 02.04.2019 в 13:06.
carsmaster вне форума   Ответить с цитированием
Старый 02.04.2019, 20:21   #11
tarakan67
Местный
 
Регистрация: 15.09.2008
Сообщений: 2,178
По умолчанию

Цитата:
Сообщение от carsmaster Посмотреть сообщение
Поверьте, самолет с передним колесом, с застопоренным передним колесом ведет себя как корова на льду, это ад и треш.... Проверено. Все дело в том ,что тут работает простая геометрия(как с задне и переднеприводными автомобилями) ,например на ЯК-3 заднее колесо ВЕДОМОЕ, а например у Аэрокобры уже ВЕДУЩЕЕ.
Стопоря перднее колесо у Аэрокобры мы получает "корову".
Сейчас да, но переработав код и сделав переднее колесо "ведомым" может получиться. Например а SAS engine mod можно прописать в FM предельные углы поворота колеса. Может можно будет сделать так,, что на рулении носовое колесо поворачивается плюс-минус 30-50 градусов а перед разбегом и перед посадкой нажатием соответсвующей клавиши сделать углы отклонения плюс-минус 5 градусов
Цитата:
Сообщение от carsmaster Посмотреть сообщение
Этой привязки недостаточно, по моему опыту, ее влияние весьма слабо на низких скоростях.
Так и должно быть. На скоростях руления аэродинамические поверхности вообще неэффективны. Поэтому и делают управляемое переднее колесо или дифференциальные тормоза основных колёс
tarakan67 вне форума   Ответить с цитированием
Старый 02.04.2019, 20:37   #12
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Цитата:
Сообщение от tarakan67 Посмотреть сообщение
Сейчас да, но переработав код и сделав переднее колесо "ведомым" может получиться. Например а SAS engine mod можно прописать в FM предельные углы поворота колеса. Может можно будет сделать так,, что на рулении носовое колесо поворачивается плюс-минус 30-50 градусов а перед разбегом и перед посадкой нажатием соответсвующей клавиши сделать углы отклонения плюс-минус 5 градусов
Я Вам свои наблюдения выскажу, в ИЛ-2 вообще по барабану как вы там крутите колесо управляемое, лишь бы оно не было заблокированным совсем, игрался я углами поворота колеса и зависимостью от угла поворота руля направления. Эффект неоднозначный и корявый совсем. А все от того, что рулит то не колесо(лишь бы не было заблокированно и все), рулит Руль направления.
И скажу Вам по секрету ИЛ-2 глубоко пофиг правильно это или нет в реальной жизни на земле во время руления.
carsmaster вне форума   Ответить с цитированием
Старый 18.01.2021, 20:43   #13
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,408
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Доработанный код вставки в класс самолета,
плавное нарастание
если изначально в ФМ SensYawGround < SensYawAir

убывание
если изначально в ФМ SensYawGround > SensYawAir
в зависимости от скорости , работает примерно до 100 кмч(взлет)
и после 100 кмч (посадка)

public void update(float f)
{
if(super.FM.Gears.onGround() && super.FM.SensYawGround < super.FM.SensYawAir)
{
super.FM.SensYaw = super.FM.SensYawGround + FM.getSpeedKMH() / 1000F;
if(super.FM.SensYaw > super.FM.SensYawAir)
super.FM.SensYaw = super.FM.SensYawAir;
} else
{
if(super.FM.Gears.onGround() && super.FM.SensYawGround > super.FM.SensYawAir)
super.FM.SensYaw = super.FM.SensYawGround - FM.getSpeedKMH() / 1000F;
if(super.FM.SensYaw < super.FM.SensYawAir)
super.FM.SensYaw = super.FM.SensYawAir;
}
if(!super.FM.Gears.onGround())
super.FM.SensYaw = super.FM.SensYawAir;

super.update(f);
}
__________________
Даёшь защищенный онлайн и Свободный оффлайн.

Теперь я и в телеграмме: https://t.me/il_2_1946

Последний раз редактировалось carsmaster; 18.01.2021 в 21:22.
carsmaster вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:07. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Рейтинг@Mail.ru