|
|
Регистрация | Справка | Пользователи | Социальные группы | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Пытающийся полететь
|
![]()
Здравствуйте.
Ну из названия темы видно, что это не мод. Это описание возможного создания мода. А сделано это из соображений, что я то на версии 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. |
![]() |
![]() |
![]() |
#2 |
Пытающийся полететь
|
![]()
Так же внизу класса надо дописать код(красным), чтобы класс знал вообще новые параметры, выше и ниже для ориентира приведены дефолтные строки
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. |
![]() |
![]() |
![]() |
#3 |
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,461
|
![]()
А если попробовать проще?
Нельзя выложить эти файлы от того, что уже сделано, для пробы? Если это Як-3 - то вот выложить бы эти файлы с подробной инструкцией для пробы. И мы б смогли попробовать. А вот делать то, что расписано выше - нереально для простого пользователя игры. |
![]() |
![]() |
![]() |
#4 | ||
Пытающийся полететь
|
![]() Цитата:
Ничего личного. ![]() Просто моды в классическом виде я уже не делаю..... Цитата:
Тоесть "удочка" для "голодного человека", а вовсе не тарелка жаренной рыбы. ![]() |
||
![]() |
![]() |
![]() |
#5 | |
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,461
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Пытающийся полететь
|
![]()
Да , кстати, тут коллега на мысль навел, с помощью этой заготовки вполне себе можно и увеличивать чувствительность руля направления на разбеге.
Это я себе УМЕНЬШАЛ. Вдруг кого-то напрягает то ,что самолет прет в сторону слишком сильно и трудно удержать направление прямо. |
![]() |
![]() |
![]() |
#7 |
Местный
Регистрация: 31.12.2011
Адрес: Полтава, Україна
Сообщений: 107
|
![]()
Идея хорошая, особенно учитывая как в Иле смоделировано влияние бокового ветра на ЛА. Самая большая проблема вырисовывается при рулении, когда некоторые самолеты практически разворачивает на месте, с полным отсутствием возможности парировать это. Проблема лежит в том, что в ФМ Ила нет влияние площади фюзеляжа. Есть только площади поверхностей крыльев, киля, элеронов, РВ и РН и тд.
И я думаю, что можно успешно решить с помощью такого подхода проблему недостаточной управляемости некоторых самолетов с передней стойкой. Но я бы подошел к этому вопросу более индивидуально в плане конкретного ЛА с изменением значения чувствительности в классе самого ЛА, что бы не трогать основные аспекты игры и сохранить совместимость с другими версиями игры. И еще я бы советовал привязаться к иному параметру нежели "шасси на земле да/нет". Такой подход приводит к резкой смене чувствительности рулей, что может негативно сказаться на поведении самолета при отрыве на взлете или при подскоке на посадке. Лично на мой взгляд лучше привязаться к скорости ЛА. |
![]() |
![]() |
![]() |
#8 | ||
Пытающийся полететь
|
![]() Цитата:
Есть новый параметр в ФМ конкретного самолета и код в классе этого самолета , то работают два параметра чувствительности. Цитата:
|
||
![]() |
![]() |
![]() |
#9 |
Местный
Регистрация: 15.09.2008
Сообщений: 2,208
|
![]()
Не думаю, что надо менять чувствительность руля направления автоматически. Так мы можем получить большие проблемы при посадке с "козлением" В реале эта функция возложена на лётчика. То есть у лётчика есть переключатели, для того, чтобы в нужный момент(перед разбегом при взлёте или перед посадкой) либо полностью отключить управление носовым(хвостовым) колесом, либо изменить их предельные углы отклонения с большего на меньшее значение и наоборот. Для самолёта с хвостовым колесом в дефолте есть клавиша "застопорить/расстопорить хвостовое колесо" Неплохо было бы предусмотреть такую же клавишу для самолётов с передним управляемым колесом. Насчёт привязки к скорости мне кажется такая привязка уже сделана и в игре сейчас эффективность управляющих поверхностей уже привязана к скорости
|
![]() |
![]() |
![]() |
#10 | ||
Пытающийся полететь
|
![]() Цитата:
Цитата:
![]() Стопоря перднее колесо у Аэрокобры мы получает "корову". ![]() Этой привязки недостаточно, по моему опыту, ее влияние весьма слабо на низких скоростях. Последний раз редактировалось carsmaster; 02.04.2019 в 13:06. |
||
![]() |
![]() |
![]() |
#11 | |
Местный
Регистрация: 15.09.2008
Сообщений: 2,208
|
![]() Цитата:
Так и должно быть. На скоростях руления аэродинамические поверхности вообще неэффективны. Поэтому и делают управляемое переднее колесо или дифференциальные тормоза основных колёс |
|
![]() |
![]() |
![]() |
#12 | |
Пытающийся полететь
|
![]() Цитата:
И скажу Вам по секрету ИЛ-2 глубоко пофиг правильно это или нет в реальной жизни на земле во время руления. ![]() |
|
![]() |
![]() |
![]() |
#13 |
Пытающийся полететь
|
![]()
Доработанный код вставки в класс самолета,
плавное нарастание если изначально в ФМ 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. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|