PG Cold War - официальный форум

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: Pheonix, KeNNy, Haseo  
Форум » Игры серии "В тылу врага" » Cold War мод » Теория "правильных" вертолетов в штурме
Теория "правильных" вертолетов в штурме
vitmercДата: Понедельник, 11.03.2013, 17:04 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 105
Репутация: 11 []
Статус: Offline
Итак, по теме.
Как многие из вас уже знают, без костылей вертолетам на штурме не бывать.
А с костылями - вопрос встает другой. "Как?"
Правильная посадка возможна даже без них.
max_speed 1 --> air_state land
И вертолет красиво садится.
Со взлетом все несколько сложнее:

Изображение 800х600 71КБ

Сейчас в игре "физический" вертолет совпадает с "логическим"
и мы видим то, что представлено на изобр. 1
Но, если "Физический" вертолет будет каким-либо образом подвижен относительно "логического", получаем изобр. 2
Зеленая линия - траектория центра вертолета, полупрозрачный силуэт на изобр. 2 - "логический" вертолет, положение которого не совпадает с "физическим"

Т.е. Вертолет представляет из себя небольшой невидимый bone (как вариант) далее - просто "центр", в центре вертолета - и все остальное, способное менять направление относительно центра.

Таким образом через анимацию, подогнанную под взлет-посадку на макс. скорости 1 - можно осуществить приближенное к реальному поведение вертолетов в штурме.

А теперь вопрос к гуру - все кажется слишком просто, в чем я ошибся, чего я не учел?

PS просьба не придираться к качеству\аккуратности иллюстрации - она сделана на скорую руку исключительно для демонстрации идеи.


Сообщение отредактировал vitmerc - Понедельник, 11.03.2013, 17:06
 
TimoshДата: Понедельник, 11.03.2013, 21:10 | Сообщение # 2
Генералиссимус
Группа: Разработчик
Сообщений: 4078
Репутация: 234 []
Статус: Offline
vitmerc, механика разработана правильно. Для одиночного вертолета в сингле (если сделать анимацию вашим способом) все должно работать именно так. Но для массового применения это не пойдет:
1)нужны скрипты. Причем как для снижения скорости, так и для возвращения максимальной. Значит, для каждого вертолета на каждой карте отдельный скрипт, возвращающий его личное значение скорости. Значит, если ввели новый вертолет или исправили скорость старого - скрипты переделываем на всех картах.
2) Это решит задачу посадки и взлета, но не висения. А садиться и взлетать места хватает и так.
В общем, идея здравая, но к системе висения вертолета я предъявляю (разумеется, для себя) следующие требования:
1)Возможность зависания на месте с последующим возобновлением движения.
2)Возможность поворота на месте (опционально - полеты боком)
3) После поворота на месте направление движения вертолета должно измениться на новое.
4)Посадка вертолета (если она самолетная) при этом должна осуществляться внешне разумно.
Если первые два пункта я умею реализовать, то 3 и 4 пока не даются. Но я над этим работаю.
 
vorabatДата: Понедельник, 11.03.2013, 21:17 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 166
Репутация: 28 []
Статус: Offline
Timosh, А вы пробовали делать маленькую скорость через смену этой самом скорости кнопкой на панели управления? Таким образом можно попробовать добиться минимального эффекта зависания. Только в этом случае нужно что бы после нажатия на кнопку смены скорости производился ещё один клик на местность, иначе вертолёт будет продолжать двигаться в обычной скорости до следующего клика.
В Resource\set\panel_control\right_main.set
Код
{gc_cp_state_speed
        {position 2 2}
     }
     {gc_cp_state_speed
        {position 2 2}
        {condition "vehicle"}
     }
     {gc_cp_state_speed
        {position 2 2}
        {condition "multiple"}
     }

И в def вертолётов
Код
{speed
         {Slow  нужная скорость}
        }


сайт Modern Pack
http://pot.at.ua/


Сообщение отредактировал vorabat - Понедельник, 11.03.2013, 21:22
 
MaksilinДата: Понедельник, 11.03.2013, 21:53 | Сообщение # 4
Подполковник
Группа: Разработчик
Сообщений: 447
Репутация: 23 []
Статус: Offline
Цитата
1)Возможность зависания на месте с последующим возобновлением движения.
2)Возможность поворота на месте (опционально - полеты боком)
Это только для одиночной кампании? Или в мультиплеере тоже можно это реализовать?
 
TimoshДата: Понедельник, 11.03.2013, 22:47 | Сообщение # 5
Генералиссимус
Группа: Разработчик
Сообщений: 4078
Репутация: 234 []
Статус: Offline
vorabat, пробовал. Увы, не помогает ни кнопка, ни ограничение при помощи inc (speed_limit или что-то такое, используется для замедления грузовиков со сломанными колесами). И сдвиг базиса тоже в воздухе не работает. Авиашасси такое просто игнорирует. Да и вообще, шасси весьма различаются набором параметров и доступных команд, даже колесное и гусеничное (колесное не понимает on turn).
Maksilin, это везде - без 3 и 4 пункта. 1 - отключаем шасси - вертолет зависает в воздухе в том положении, в котором был. Включаем - летим дальше. 2 - банально даем возможность ограниченного вращения кости корпуса. Но 3 и 4 пункты так не реализуются.
 
vitmercДата: Вторник, 12.03.2013, 13:51 | Сообщение # 6
Сержант
Группа: Пользователи
Сообщений: 105
Репутация: 11 []
Статус: Offline
А не проще ли все-таки запилить на все cw-карты функцию, к которой будет обращаться вертолет со своим mid в контексте?
т.е. "я mid ***, и я вертолет который переключил шасси" (например, виднее тем кто запилил в 5 миссии управляемые су-50)
далее функция обрабатывает тип техники, запросившей посадку (например, по тегу)
Да. скорости надо будет менять если внесены коррективы в конфиг вертолета,
Да. надо будет вносить новые разделы с новыми вертолетами по мере их появления,
НО - 1) как часто у нас появляются новые вертолеты?
2) обновить скрипт не так уж и трудно, просто копипаст секции скрипта, с последующим редактированием скоростей\тега

Я бы и сам сделал, но тут встает вопрос - как правильно детектить смену шасси ЛА, как в 5 миссии у су-50?
 
TimoshДата: Вторник, 12.03.2013, 17:51 | Сообщение # 7
Генералиссимус
Группа: Разработчик
Сообщений: 4078
Репутация: 234 []
Статус: Offline
vitmerc, я еще один способ проверю, и если не выйдет, то можно будет попробовать сделать подобным образом. Не очень красиво, но может сработать. Вот только анимацию выравнивания корпуса при взлете делать, скорее всего, не буду - если взлетать не под действием скрипта, а самому игроку (т. е. в прямом управлении), то вертолет не накренится больше положенных 10-20 градусов, т. к. будет находиться под действием стрелок.
 
vitmercДата: Вторник, 12.03.2013, 20:46 | Сообщение # 8
Сержант
Группа: Пользователи
Сообщений: 105
Репутация: 11 []
Статус: Offline
Цитата (Timosh)
а самому игроку (т. е. в прямом управлении)
А что мешает это задетектить и врубить скрипт взлета?
 
TimoshДата: Среда, 13.03.2013, 18:43 | Сообщение # 9
Генералиссимус
Группа: Разработчик
Сообщений: 4078
Репутация: 234 []
Статус: Offline
vitmerc, лень  happy . Ну и еще, я могу детектировать только сам факт взлета. Например, я парирую отклонение корпуса, возникающее при нажатии клавиши "вверх" в течение 2 секунд. А если игрок будет жать 3 секунды? или одну? Момент отпускания кнопки через inc (или как-то еще известным мне способом) не отлавливается.
Но вообще-то это я как раз к тому написал, что отклонением корпуса на 10-20 градусов можно пренебречь, у нас же не авиасим, реального поведения все равно не добиться. А большее отклонение будет образовываться только в тех случаях, когда автор сингл-миссии заставит вертолет взлетать вертикально своими скриптами. Без такого можно часто обойтись, взлет по-самолетному (или с небольшим пробегом) могут делать все вертолеты на колесах.
 
vitmercДата: Четверг, 14.03.2013, 13:14 | Сообщение # 10
Сержант
Группа: Пользователи
Сообщений: 105
Репутация: 11 []
Статус: Offline
Да, я понял о чем вы. А как вам вариант просто не поддерживать взлет в прямом управлении? можно же задетектить смену шасси и задать вертолету target altitude + парировать отклонение на время взлета?
 
TimoshДата: Четверг, 14.03.2013, 19:08 | Сообщение # 11
Генералиссимус
Группа: Разработчик
Сообщений: 4078
Репутация: 234 []
Статус: Offline
vitmerc, как раз в прямом управлении взлет совершенно необходим. Да я еще раз говорю, такое же отклонение, как при взлете по-самолетному, вполне приемлемо. Между тем, после некоторого размышления я снимаю свои возражения из поста №2. Пока не уверен, но и зависание без посадки с минимальными телодвижениями игрока может получиться, и с заменой скриптов при каждом новом вертолете я поспешил. Я не учел, что максимальная скорость всех или почти всех военных вертолетов лежит в узком диапазоне от 200 до 350 км/ч, в игре это где-то 35-55 единиц. Вполне возможно сделать 5 дискретных скоростей (думаю, разницей между 310 у Ми-24 и 330 у Ка-50 можно пренебречь) и работать с ними не для конкретной марки вертолета, а по props "вертолет_со_скоростью_45". Тогда скрипты менять не потребуется.
 
vitmercДата: Пятница, 15.03.2013, 03:46 | Сообщение # 12
Сержант
Группа: Пользователи
Сообщений: 105
Репутация: 11 []
Статус: Offline
Мысль интересная. А, кстати, не скажешь как через скрипт в миссии задетектить смену шасси самолета а-ля "Расплата" (Су-50) ?
 
TimoshДата: Пятница, 15.03.2013, 21:00 | Сообщение # 13
Генералиссимус
Группа: Разработчик
Сообщений: 4078
Репутация: 234 []
Статус: Offline
А у меня для самолетов специальный таг повешен - plane_in_flight ЕМНИП. Если он есть - самолет летит, нет - садится или на земле. И для вертолетов то же самое. Если зачем-то надо - проверьте в редакторе. Ну, и как только у Су-50 он появляется (а их не более 1 на карте, так таймеры настроены) - значит, игрок пытается его посадить. Тут я убираю able select (сбрасывается выбор юнита), даю его player 2 и следующей командой заставляю набрать определенную высоту и улетать в тыл.

Добавлено (15.03.2013, 21:00)
---------------------------------------------
vitmerc, попробовал я реализовать такую схему - оказалось, что тангаж вертолетов не ограничен и при скорости 1 под прямым управлением вертолет отклоняется не на 15-20 градусов, а на 90, и парировать это не выходит. Ну, и вдобавок радиус поворота остается прежним - порядка 20м, и при малой скорости вертолет поворачивает очень медленно. Так что и этот способ, увы, не подходит.

 
vitmercДата: Суббота, 16.03.2013, 12:33 | Сообщение # 14
Сержант
Группа: Пользователи
Сообщений: 105
Репутация: 11 []
Статус: Offline
Я знаю что отклоняется на 90, я об этом писал в первом посте. А почему парировать такое через модель невозможно?
 
TimoshДата: Суббота, 16.03.2013, 13:08 | Сообщение # 15
Генералиссимус
Группа: Разработчик
Сообщений: 4078
Репутация: 234 []
Статус: Offline
Ну вот завис я, скажем, и хочу набрать высоту. Нажимаю стрелку, вертолет наклоняется носом вверх. И я не могу с помощью inc (и другими способами) этот момент обнаружить.
 
Форум » Игры серии "В тылу врага" » Cold War мод » Теория "правильных" вертолетов в штурме
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Топ пользователей