суббота, 2 мая 2015 г.

Исправление ошибок

после доведения до конца рабочей модели повреждений, которую обкатывал на МиГ-23 и Ф-15, пришлось подгонять под новые стандарты МиГ-27 и Ф-16. К сожалению, не обошлось без досадных накладок и ошибок. сила Букв не прощает ни малейшей ошибки в произносимом заклинании, и если хотя бы одна буква не та, или лишняя или таковой вообще нет), то моментально вылезает ошибка. так вот и пришлось "чистить" названия объектов и мешей. Заодно пришлось возвращаться к старой схеме со стрельбой из пушек и блоков НАР. Старый код для снарядов использовал функцию applyForce и поправку mathutilsVector, в дополнение к координатам появления снарядов. Эта схема хорошо показала себя на неподвижных зенитках, и, надеюсь, нормально заработает на малоскоростных (по сравнению с реактивными самолетами) наземных объектах. Как бы то ни было, теперь процесс появления снаряда выглядит так - указывается, какой объект добавляется, добавленный объект сразу парентится к источнику и получает локальные начальные координаты. Сам же снаряд, имея свойство-таймер, теперь ведет себя согласно коду:

    if own['timeStart'] < 0.05:
        own.removeParent()
    if own['timeStart'] < 0.15:
        own.localLinearVelocity = [random.randrange(-5,5), own['speed'], random.randrange(-5,5)]
    if own['timeStart'] > 0.15:
        own['speed'] = 0
        if own.worldLinearVelocity != mathutils.Vector((0.0, 0.0, 0.0)):
            own.alignAxisToVect(own.worldLinearVelocity, 1, 1.0)

На чрезвычайно короткое время он получает некую постоянную скорость, по истечении этого времени происходит "снятие" скорости и дальше снаряд летит по инерции, попутно "ориентируясь" по ходу движения. Аналогично, хотя и чуть-чуть по другому я поступил с отстреливаемыми ловушками (они еще дополнительно "уходят" в стороны, причем опять же, в момент появления ловушке присваивается свойство coordX, 1 и -1 означают, что ловушка уходит вверх и в сторону - минус - влево, плюс- вправо, 2 и -2 - аналогично, но ЛТЦ выстреливается не вверх, а вниз, и тоже в стороны, 0 - зарезервирован - костыль, конечно, но выглядит получше).
В общем, процесс переформатирования и выстраивания  так и не прекращается... 

четверг, 30 апреля 2015 г.

Вроде бы и дал себе слово писать в блог почаще, но опять - задержка вышла. Долго пилил модель повреждений для самолетов. Опять задействована функция childrenRecursive и "СилаБукв". Сначала удалось создать схему "уничтожения" отдельных частей самолета. А именно - при сбитии сносится часть крыла и стабилизатор. И вот тут встал вопрос - что делать с пилонами на крыльях? Дело в том, что иерархия моих юнитов имеет две ветви. одна - это сами пилоны и оружие, парентящиеся к центру самолета (его роль выполняет объект с именем "семейство"CntAircraft), вторая ветка - "отделяемая". Она тоже парентится к центру самолета и вызывается только при высоком уровне детализации. Но именно огна и создает красивую картинку. Пилоны же и оружие с ней не связаны. Поэтому, пришлось принять меры. Проблем для МиГ-23/27 и F-15 не было - потому как у них подкрыльевые пилоны очень близки к фюзеляжу. Но вот F-5 и F-16, да и будущие МиГ-21/29, Су-27 и его клоны, имеют крылья, буквально "обвешанные" пилонами подвески вооружения. Самое же пакостное заключалось в том, что пилоны имеют разный облик, так что просто объединить их с "отрезаемой" частью крыла не получится. Поэтому пришлось пойти на компромисс. сделать не объединенный пилон из двух объектов, а два отдельных - правый и левый. При сносе крыла проводится проверка, какое крыло сносится и соответственно, убираются объекты, с этим крылом связанные (не парент). И движки оружия парентятся теперь не к центру юнита, а к этим правым и левым пилонам.
Сам же процесс появления поврежденных частей самолета таков - циклом проверяются объекты в списке типа листДамагед, если у них нет в имени сочетания букв DMG, то вызывается их двойник с текстурой повреждения и парентится к ним же (это важно, поскольку поврежденные самолеты могут иметь вполне работающую механизацию). Сами же "породители" "поврежденных" остаются на месте, но становятся невидимыми. Да, это приводит к увеличению объектов, я это прекрасно понимаю. Но полностью подчинить себе процесс замены мешей не удалось, а любоваться на истерику консоли, сообщающей о некорректном поведении только что созданных новых мешей (Откуда??!!) не хочется. Про "снос" деталей я уже писал выше. Высокий уровень детализации держится недолго в игре, а при сбитии горящий самолет обычно живет недолго. Далеко не все успевают взорваться от столкновения с землей. Поврежденные же самолеты, если они выходят из боя и не находятся в поле зрения камеры внешнего обзора, через некоторое время убираются, поскольку тратить на их просчет время и ресурсы - нет смысла. Это не наземка, скорости там куда как выше.
Кстати, о наземке. Начал писать скрипт движения для наземной техники. поскольку схема ЛОДов и повреждений уже более-менее отработана, надеюсь применить ее и в этом случае. Поработать, конечно, придется... а теперь скрин с картинкой - сбитый Ф-15 с пробоинами в уцелевшем крыле...



понедельник, 13 апреля 2015 г.

Сила Букв или маленькие хитрости в БГЕ

В некотором роде - этот пост - документация на уже сделанное, создан в том числе, чтобы самому помнить о своих приемах работы и хитростях, потому как при отвлечении на другие разделы, уже сделанное может забываться.
Анимированные объекты юнита, как правио являются его потомками. В моем случае - это детали шасси, крыльев, оперения. Как правило я даю им имена уже по устоявшейся системе. К примеру - правый  закрылок МиГ-29 имеет следующее название - FulcrumZakrP - обозначает следующее - "имя семейства" (Fulcrum) + "название детали" (закрылок - Zakr, стабилизатор - Stab, руль направления - Rul и так далее) +"расположение"(правая - P, левая - L).
но тут следует отметить еще одно обстоятельство - при использовании скрипта для проигрывания анимации в БГЕ, если использовать для начального и конечного кадра цифры из "середины" анимации, происходит "подергивание" объекта - такое впечатление, что перед проигрыванием анимации он встает в "нулевое положение". подозреваю, что это происходит из-за того, что подгружаемые мною из другого файла объекты обычно стоят на кадре анимации 1 или 0. Самое неприятное в этом случае - поведение деталей шасси, поскольку при вызове деталей они появляются в "разложенном" виде на долю секунды. Не столь критично это для остальных деталей, но имеет место быть. Поэтому я отказался от варианта одной очень большой анимации, в которую в виде отдельных участков включены анимации ВСЕХ деталей сцены. Хотя эта схема и работала, но... (см выше).
К тому же есть еще одно обстоятельство. Анимации стабилизаторов для тангажа и крена к примеру, различаются. Тогда были созданы анимации для тангажа вверх и вниз (синхронное поднимание-опускание) и крена - отклонение типа "ножницы". Причем названия анимаций выглядело так FulcrumTangazhW (поднимание носа), FulcrumStabLL (крен для левого стабилизатора влево), аналогично - FulcrumTangazhN и FulcrumStabLP, плюс для правого стабилизатора FulcrumStabPP и FulcrumStabPL. На данный момент все это выглядит именно так. аналогично для закрылков были созданы анимации - с названиями по типу - "имя детали"+"положение" (взлет - W, посадка - P). Таким же образом создавались анимации для рулей направления, элеронов, последние буквы в них обозначали направление анимации.
Чуть позже попробую здесь же в этом посте написать типа справочник обозначений (это скорее для себя). с числом кадров, отведенных на анимацию, объяснением, что делает та или иная деталь. Короче "социализм - это учет"...

Индексация для создания имен анимаций
PKren - правый крен              prefixKren - дополнительное проперти для имени анимации крена
LKren- левый крен                 prefixRysk - дополнительное проперти для имени анимации рыска
PRysk- правый разворот       prefixTang - дополнительное проперти для имени анимации тангаж
LRysk - левый разворот
WTang - тангаж вверх
NTang - тангаж вниз
flapsW - положение механизации крыла - "взлет"
flapsN - положение механизации крыла - "посадка"

#Перечисление частей имен деталей ЛА  
flaperon = 'Flaperon'                                                       #Флапероны
zakr = 'Zakr'                                                                   #Закрылки
eleron = 'Eleron'                                                              #Элероны
 stab = 'Stab'                                                                   #Стабилизаторы
 torm = 'Torm'                                                                 #Тормоза
 predkr = 'Predkr'                                                            #Предкрылки
 interz = 'Int'                                                                     #Интерцепторы
 rul = 'Rul'                                                                        #Рули направления
 ruheight = 'RuW'                                                             #Рули высоты
 pilot = 'Pilot'                                                                   #Фигура летчика в кабине
 fonar = 'Fonar'                                                                #Рули высоты
 krylo = 'Kr'                                                                     #Консоли крыльев
 chassy = 'ChD'                                                                #Детали шасси
 wheel = 'Koleso'                                                              #Детали шасси - колеса
 fonarGlass = 'Cabina'                                                       #Стекло фонаря кабины
 indexWing = str(own['krylo'])+str(own['sdvigkrylo'])        #Индекс анимации консолей крыльев

воскресенье, 12 апреля 2015 г.

Frogfoot

Работа над проектом идет своим чередом. Вчера был дописан код генерации и расположения оружия на точках подвески для Су-25. Сам Су-25  был начат довольно давно, потом последовал перерыв, вызванный очередной переделкой в коде проекта, и экспериментами с облаками. В конце концов штурмовик был доделан, анимированы его подвижные части и изготовлен камуфляж, но без "расшивки" пока что. также довольно долгое время создавался и переделывался кокпит, пока, наконец, не осталась лишь "заклепочная часть" работы - а именно - имитация стыков, лючков, швов и прочей мелочи на текстуре подключаемого юнита.
Что касаемо облаков, то эксперимент прошел вполне удачно - на основе урока Джона Гамильтона, по которому denis8424 сделал четкий и понятный урок на b3d и у себя в ВИПе, было создано облако с нодовым материалом, который ведет себя при приближении к нему весьма реалистично. Помимо этого велись работы по созданию что-то вроде "эмиттера" частиц, конкретно, огня, на дым пока не замахивался. И для эмиттера и для облаков необходимо провести серию доработок, чтобы они прочно заняли свое место в "арсенале" проекта, но не факт, что это будет быстро...
Ниже приведен скрин с экрана - кокпит для Су-25. Работоспособность и вылов багов для него начнутся после завершения работы над основной текстурой. Кстати, непонятно почему, но браузер у меня вылетает нафиг при попытке загрузить фото с компа, используя вид "Эскизы страниц". При режиме "список"  все загружается...




 

воскресенье, 29 марта 2015 г.

Пожалуй, denis8424, мой коллега, единомышленник и, прямо скажем, незаменимый помощник, прав. Блог я свой подзабросил. Тому было несколько причин. Первая, и самая главная - это, разумеется лень. Вторая - "зашился" я с доработкой своего проекта. Долгое время нечего было предъявить - постоянно что-то пилил, строгал, завинчивал или вообще заколачивал нафиг.
Для тех, кто не знает, чем конкретно я занимаюсь, а особенно тем, кто заходит на мою страницу в первый раз (надеюсь, будут и такие), скажу следующее:

С 2011 года занялся я плотным освоением БГЕ Blender Game Engine, то бишь, а конкретно - созданием аркадного авиасимулятора. Пути господни неисповедимы, сначала я хотел заниматься созданием фильмов в 3D, но в тот момент так получилось, что осваивал серию симуляторов от Thirdwire, и сильно обижался, что нет среди самолетов, доступных игроку - советских машин. Про аддоны к играм я узнал несколько позднее, когда уже плотно увяз в освоении Блендера, так что было уже поздно.
Вообще-то - это была (да и остается) авантюра чистой воды. Моделирую я довольно средне, текстурирую - тоже, что такое программирование на Питоне узнал так года через два... Процесс медленно, но неостановимо катится вперед, временами отпрыгивая в сторону, и затормаживаясь, когда мне удается изучить какой-то новый хитрый прием и начать с ним всяческие извращения, используя его везде, где только можно.
Задача тем временем росла и ширилась... Постепенно авиасимулятор (или уж честнее - аркада, не гонюсь я за максимальной реалистичностью, наподобие ИЛ- 2 или Lock On - если честно - не потяну, да и все-таки, как мне кажется, надо соблюдать какую-то границу, отделяющую игровой мир от реального) начал превращаться в своего рода конструктор. В принципе, в него можно встроить вертолет, ЗРК, танк, БМП или БТР - "все, что имеет кокпит". Пока мыслей о коммерции у меня особо нет - проект надо элементарно довести до конца. Готовность его я оцениваю процентов 80... В "пилотном варианте", который сейчас и создается, планируется использовать следующие юниты - МиГ-21бис (пока идет моделлинг), МиГ-23МЛД (готов, работает), МиГ-27К (готов, работает), МиГ-29А (идет моделлинг), Су-25 (начата работа над кокпитом, моделлинг завершен, текстуринг еще не начат), Су-27 - пока в проекте, заготовки есть. Оппонентами выступают - F-15C и F-16C, также имеется F-5E, ног пока для него еще не готовы исправленные текстуры, плюс юнит не доведен под стандарт двух вышеперечисленных. Все американские самолеты пока выступают в качестве ботов, управление ими недоступно. Планирую добавить в "комплект" F-4E, F-14A и F/A-18C, плюс "Мираж" F1C. Планы-то обширные, только делается все это не сразу. Наземная техника пока представлена довольно скудно- ЗПУ-1, Oerlicon GDF 35 mm, Т-72, М-60(танк, а не пулемет), плюс СЗРК малой дальности "Стрела-1". И пока к тому же незатекстуренная - как-то я больше упирал на кодинг, особенно в последнее время. В принципе, сначала планируется "обучить" наземную технику воевать, создав по одному-два образца - ЗРК стационарный (идет работа над С-75), СЗРК - смотрим чуть выше (воевать уже умеет),  БТТ - там же, МЗА - опять же выше (воевать уже умеет), артиллерия и РСЗО (в процессе "Град").
Ну, и в качестве демонстрации. Сверху вниз - МиГ-27К в полете, кокпит МиГ-27К, кокпит МиГ-23МЛД, МиГ-23МЛД в полете.






суббота, 5 июля 2014 г.

Война становится рутиной...



Первые недели войны оказались для Ирана неудачными на земле. Хотя в воздухе иранская авиация постепенно возвращала себе преимущество. Козырями иранцев были F-14A «Томкэт», обладавшие в то время почти запредельными возможностями. Да и «Фантомы» показали себя, как очень мощные ударные машины, которые могли выполнять и истребительные функции. Да и подготовка персидских летчиков была не хуже, а  в некоторых случаях, лучше, чем у иракских. Но и иракцы тоже быстро учились. То, что вполне подходило для парадов или боевой учебы в мирное время, не годилось на войне.
На земле же иракские войска вполне успешно продвигались вперед, преодолевая становящимся все более упорным сопротивление иранских военных и ополченцев. Обе армии действовали шаблонно, « в лоб», что приводило к большим потерям с обеих сторон. В частности, иракские танкисты, входя в иранские приграничные города, часто несли потери от иранских гранатометчиков, активно применявших РПГ-7 советского производства. Надо заметить, что иранцы, вопреки расхожему мнению, покупали у СССР оружие в довольно значительных количествах. Разумеется, о поставках  танков или самолетов с вертолетами речь не шла. Этот рынок «застолбили за собой» Великобритания (танки «Чифтен») и США (вертолеты и самолеты, а также танки М60 разных модификаций). Но вот грузовики, упомянутые выше гранатометы, а также БМП Иран у СССР покупал и не в маленьких количествах.
Если посмотреть на данные по потерям в конце сентября, то можно отметить резко возросшую активность иракских истребителей-бомбардировшиков. По-видимому, это связано именно с наступлением иракских войск. Самолеты регулярно вылетали на штурмовку и нанесение ударов по иранским позициям. На перехват поднимались иранские истребители. Иракские МиГ-23БН, которые на тот момент были наиболее многочисленными в иракской ИБА, несли серьезные потери.
Так 27 сентября иранские F-4E сбивают ракетами AIM-9P пару МиГ-23БН, иранцы теряют один F-4E, сбитый иракской зенитной ракетой близ Бушера. Летчики - капитан Ахмад Сохейли и лейтенант Ахмад Вазири сумели катапультироваться и были взяты в плен.
 
 Капитан Ахмад Сохейли
 






 Лейтенант Ахмад Вазири

28 сентября F-4E был сбит ракетой Р-13М, пущенной с борта МиГ-23. Первоначально сообщалось, что это был МиГ-23МЛА, однако совершенно точно можно сказать, что самолеты этой модификации на вооружении ВВС Ирака на тот момент не состояли, да и в ВВС СССР тогда их было не слишком много. Скорее всего, это был пропагандистский трюк иракцев, имевший целью ввести иранцев в заблуждение относительно новейшей техники в своих ВВС. Забегая вперед, следует отметить, что иранцы тоже не остались в долгу, объявив некоторое время спустя об уничтожении сразу четырех МиГ-23МЛА ракетами "Феникс" с борта "Томкэтов" (интересно, как они смогли установить тип пораженных самолетов на загоризонтной дальности?).
В действительности все оказалось проще и трагичнее - "Фантом" был по ошибке сбит малокалиберной зенитной артиллерией военно-морского флота Ирана. "Дружественный" огонь продолжился по катапультировавшимся летчикам - подполковнику Мохаммаду Карами и майору Хасану Кадходайи. Шансов на спасение у них не было. Поэтому на время войны иранцы поддержали иракскую версию, уж очень неприглядной получилась эта история.


 Майор Хасан Кадходайи
 
 Подполковник Мохаммад Карами

В тот же, 28 сентября еще один "Фантом" был поражен ЗРК иракцев при нанесении удара по мостам близ Басры, имевшим очень важное значение - через них шло снабжение группировок иракской армии на севере страны. Оператор Мохаммад Реза Карами катапультировался, но у него не раскрылся парашют. Летчик же сумел довести подбитый самолет до базы и посадить.


 Мохаммад Реза Карами, еще до войны ему уже приходилось катапультироваться из терпящего бедствие "Фантома". Во второй раз его парашют не раскрылся.

29 сентября отличился уже упоминавшийся выше капитан Аббас Доуран. Ракетами AIM-7E-2 со своего "Фантома" он сбил пару иракских МиГ-23МС (но точного подтверждения этому нет), один МиГ-21МФ вступил в ближний бой с другим "Фантомом" - F-4D и был сбит огнем из пушки в подвесном контейнере SUU-23. В свое время считалось, что исход воздушного боя решат ракеты и от установки пушек отказались, как на МиГ-21ПФ/ПФМ, так и на F-4D. Опыт боев во Вьетнаме внес свои коррективы и к пушке вернулись, но на этих самолетах ее пришлось устанавливать в подвесных контейнерах.
При нанесении удара по позициям иракских войск близ Бушера в этот же день был сбит один F-4E, летчик Али Али-Акбари погиб. На следующий день близ Басры  севернее Дехлорана, был сбит "Тайгер" F-5E, майор Амир  Асаади Ясаагхи пленен.
 
 Майор Амир  Асаади Ясаагхи
 
 Летчик Али Али-Акбари, погиб в боевом вылете на F-4E

http://forums.airforce.ru/attachments/holodnaya-voina/20611d1256826654-30.09.80_1.jpg/
На этой фотографии известного журналиста Джихангира Разми запечатлены обломки одного из ударных МиГ-23БН, сбитого 30 сентября 1980 года.
http://forums.airforce.ru/attachments/holodnaya-voina/20612d1256826671-30.09.80_2.jpg/
Это обломки того же самолета.

Первый день октября 1980 года обошелся без потерь с обеих сторон,  а 2-го числа еще один "Фантом" F-4E был подбит близ Бушера и упал в воды Персидского Залива, летчик сумел катапультироваться, а оператор - Масуд Мохаммади погиб. В свою очередь, F-4E сумел пуском ракеты AIM-9P  уничтожить иракский МиГ-23МС. 3 октября удача вновь сопутствовала иранцам, по их заявлениям, они сбили над Персидским Заливом сразу три иракских МиГ-21МФ, все три победы одержаны с помощью AIM-9P с F-4D.
5 октября при нанесении удара по позициям вражеских войск был сбит F-5E западнее Дизфуля.
Очередной F-4E был сбит при нанесении удара близ Басры огнем с земли 6 октября, экипаж - полковник Мохаммад Сабз Абади и лейтенант Масуд Амири Дорбан - погиб.




Чангиз Сепехр, летчик F-5E, сбитого 5 октября 1980. Погиб.
 
 Полковник Мохаммад Сабз Абади, погиб в боевом вылете на F-4E близ Басры 6 октября 1980 года.

8 октября иранские F-5E выступили в непривычной для себя роли перехватчиков. Они сумели ракетами AIM-9J уничтожить пару иракских истребителей-бомбардировщиков Су-20. 9 октября один из F-4D был сбит иракским МиГ-21МФ, экипаж погиб. На следующий день обе стороны потеряли еще по одному самолету - F-4E был сбит предположительно огнем с земли над дорогой Кут Абдолах при нанесении удара, майор Биджан Хаджи и оператор Гхорат Киянджу - погибли. Но и "Фантомы" тоже не остались в долгу - один МиГ-21МФ был сбит огнем 20-мм пушки F-4E в ближнем бою.


 
Майор Биджан Хаджи, погиб в боевом вылете на F-4E 10 октября 1980.
  
Гхорат Киянджу, погиб вместе со своим командиром в том же вылете.

суббота, 14 июня 2014 г.

вот и до трехмерной графики добрался...

С о страшным скрипом, вспоминая уже подзабытые навыки обращения с Гуглом (почтой и блогом), все-таки решил продолжить. На сей раз запись не об ирано-иракской войне, а об игростроении. для тех, кто видит все это в первый раз - уже довольно давно я работаю надпроектом создания игры - жанр - э-э, а черт его знает. Что-то среднее между аркадой и симулятором. Соперничать с Лок Он, Strike Fighters, Ил-2 и другими симуляторами не собираюсь и вообще неясно, что из этой затеи вообще выйдет. Задумка - создать свободно распространяемый файл с подробной документацией, с возможностью быстрого добавления своих дополнений. Основной упор делается на реактивные боевые самолеты, но, в принципе, можно будет добавить и ЗРК, вертолеты и даже бронетехнику (имеется в виду под управление игрока). Сейчас идет разработка ИИ для ботов, в воздушном бою они действуют уже более-менее вменяемо, учатся стрелять по наземным целям. Там свои особенности - когда будет заметный успех, отпишусь, с объяснениями по коду и этим особенностям. Приборы и индикация уже давно отработаны, большая часть эффектов создана, но часть нуждается в доработке - все-таки БГЕ строг к расходованию ресурсов (зато и научит большему).
Пока же выкладываю ссылку на файл - заодно и резервная копия. В файле находится пакет из советских и американских ракет "воздух-воздух" -  среди них даже затесалась одна английская, которая все равно является копией американской "Спэрроу". Пакет состоит из ракет семейства Sparrow, Sidewinder, Р-23/24, Р-27, Р-40, Р-98, Р-3/13, Р-77, Р33/37, AMRAAM. Ракеты затекстурены. Изготовление новых текстур, равно, как и модификация объектов не возбраняется. Использование не ограничивается. Короче, что хотите - то и делайте.
Ссылка на файл - 
https://drive.google.com/file/d/0B1b7rKfV80h9YUFEQUtXRUJxb0E/edit?usp=sharing
Скрин по файлу - что там есть: