WIP by Flogger-K.Создание аркады в БГЕ.

Список разделов Склады работ и W.I.P Ход создания работ (W.I.P)

Описание: Делитесь с другими процессом создания в Blender Вашего шедевра
Модератор: exooman

  • 4

Сообщение #281 Flogger-K » 12.10.2016, 20:20

В этом посте не будет скринов, заранее предупреждаю. но будет много кода и пояснения к нему. Те, кто качал и смотрел мою первую версию, знают, что для обеспечения прицеливания и наведения самолета на цель в ней применяется скрипт радара. Этот скрипт в свое время разработал denis8424, я же, как обычно "творчески2 его доработал, всячески извращаясь и изгаляясь, подгоняя под себя, объединяя под 2одной крышей" скажем так, не совсем похожие друг на друга функции. все это "творение" худо-бедно работало (сколько раз я его сам и ломал и героически чинил, не помню, много....), однако во второй версии встал во весь рост проблема большого количества сенсоров. Точнее, их типов. Это - РЛС, теплопеленгатор, лазерный дальномер, радиодальномер, ТВ-прицел и в переспективе - сонар, эхолот и магнитометр (это уже чисто для морской авиации и кораблей). В сущности задача всех этих сенсоров - отсеивать "невидимые" объекты и "видеть" только те, что отвечают неким параметрам. В итоге мною был написан новый текст скрипта:
Спойлер
Код: Выделить всё
import bge
import mathutils

#Скрипт необходим для работы сенсоров различного типа, подлежит доработке, при необходимости в классы сенсоров

##############################################
#СенсорЫ обнаружения и сопровождения цели
##############################################

#Радилокатор
def SensorDef():
    cont = bge.logic.getCurrentController()
    own = cont.owner
    scene = bge.logic.getCurrentScene()
   
    #Проперти, задействованные в этой функции
    #['sensRLscanTarget']         #Типы распознаваемых целей(0 - только небо, 01 - небо и земля, 1  - только земля, проперти строчное)
    #['sensRLscanDistMax']        #Максимальная дистанция обзора
    #['sensRLscanAngle']          #Угол обзора
    #['sensRLscanTimer']          #Время сканирования
    #['sensRLscanCanal']          #Количество одновременно сопровождаемых целей
    #['sensRLscanDeadZone']       #"Мертвая зона"
   
    ownTargetList = []
    sceneObjList = bge.logic.globalDict['unitListScene'][own['targetType']][own['target']]
                       
    if len(sceneObjList) > 0:
        for target in sceneObjList:
             #Идет проверка на наличие объекта в поле зрения радара
             if inConeOfSensor(own, target):
                 #Добавление в текуший список целей проверяемого объекта
                 ownTargetList.append(target)
                 if len(ownTargetList) - 1 == own['enemy']:
                     own['idTarget'] = str(id(target))
                     #print(target['unitName'], own['localDict']['sensList'][own['typeSensor']])
                                 
    #Это - сопровождение цели
    try:
        ob = scene.objects.from_id(int(own['idTarget']))
       
        if ob in ownTargetList:
           
            vect = own.getVectTo(ob)[1]
            own.alignAxisToVect(vect, 1, 0.5)
            vectX = own.getVectTo(ob)[2][0]
            vectY = own.getVectTo(ob)[2][1]
            vectZ = own.getVectTo(ob)[2][2]
                   
            if abs(vectX) < 0.2 and abs(vectZ) < 0.2:
                own['PR'] = 1
            else:
                own['PR'] = 0       
        else:
            own['PR'] = 0
                       
    except:
        own['PR'] = 0


#Этот   блок - конус сенсора
def inConeOfSensor(own, target):
    #Приставка, какой сенсор работает в данный момент
    sensorUnit = own['localDict']['sensList'][own['typeSensor']]
       
    #Здесь формируется имя нужного проперти "уголСканирования"
    scanAngle = 'sens' + sensorUnit + 'scanAngle'      #Угол обзора
       
    axisVect = mathutils.Vector((0.0, 1.0, 0.0))
    targetData = own.getVectTo(target)
    targetVect = targetData[2]
    dist = targetData[0]
       
    #Если сенсор - не глаз человека, а некое электронное устройство
    if sensorUnit != 'Eyes':
        angle = own[scanAngle]
    #временная "заглушка" для работы сенсора
    else:
        angle = 1.0
       
    #Если объект попадает в конус действия сенсора
    if angle > axisVect.angle(targetVect, None): 
        #И вот тут следует еще проверка - на "мертвую зону", различные препятствия - для каждого типа сенсора
        #учитываются его особенности
       
        g = globals()
       
        if g[sensorUnit](own, target):
            return True
       
    #Или не попадает
    else:
        return False
    return False       
       

#Радиолокатор
def RL(own, target):
    #Некоторые радары плохо видят цель на фоне земли, поэтому не способны засекать низколетящие цели
    #Высота "мертвой зоны радара" - по высоте цели над землей
    deadZoneRadar = own.worldPosition[2]/own['sensRLscanDeadZone']
    #Введение поправки на мертвую зону
    targetDeadZone = [target.worldPosition[0], target.worldPosition[1], target.worldPosition[2] - deadZoneRadar]
    targetPosition = target.worldPosition
    ownPosition = own.worldPosition
         
    if own['sensRLscanDistMax']*target['stealth'] > own.getDistanceTo(target):
        #Мертвая зона радара
        hitEarth = target.rayCast(targetPosition ,targetDeadZone, deadZoneRadar, 'objScene', 0)               
        if hitEarth == (None, None, None):
            #Проверка на отсутствие препятствия
            hitRay = target.rayCast(ownPosition, targetPosition, own.getDistanceTo(target), 'objScene', 0)
            if hitRay != (None, None, None):   
                return True
           
    else:
        return False
                   

#Теплопеленгатор
def TP(own, target):
    targetPosition = target.worldPosition
    ownPosition = own.worldPosition
   
    if own['sensTPscanDistMax']*target['stealth'] > own.getDistanceTo(target):
        #Сквозь облака теплопеленгатор не видит
        hitEarth = target.rayCast(own, target, own.getDistanceTo(target), 'objClouds', 0)               
        if hitEarth == (None, None, None):
            #Проверка на отсутствие препятствия
            hitRay = target.rayCast(ownPosition, targetPosition, own.getDistanceTo(target), 'objScene', 0)
            if hitRay != (None, None, None):   
                return True
    else:
        return False

#Глаза летчика
def Eyes(own, target):
    print('Eyes')

Если кратко, то ключевой здесь является функция SensorDef. Она проверяет список, который передается ей из глобального словаря. в глобальном словаре же есть 2 списка - условно "синие2 и "красные", в свою очередь они делятся на "небо2 и "землю". Далее следует перебор объектов из этого списка, в зависимости от типа прицеливания (земля или небо) и "лагеря"(свой-чужой). Перебираемый объект направляется на проверку функцию ifConeSensor, в котором идет проверка на попадание-непопадание в конус сенсора. прикол в том, что у меня для каждого сенсора есть своя группа проперти - вы можете прочесть их названия в начале скрипта - они закомменчены # и к ним даны пояснения. Названия проперти содержит две ключевые буквы типа RL, TP и тд. Это - название выбранного сенсора, и значение еще одного проперти typeSensor. Названия проперти формируются из того, какой сенсор выбран, соответственно и характеристики конуса те, которые нужны. после проверки на предмет попадания в поле зрения конуса вызывается еще одна ыункция - строчка g['typeSensor'](own, target) позвоялет вызвать нужную функцию по названию сенсора (значению проперти typeSensor, что здорово сокращает количество строчек кода). В функциях типа RL, TP, LD проводится проверка на соответствие цели некоторым условиям, например, цель находится не за препятствием, не в мертвой зоне, на достаточном расстоянии - туда можно вписать что угодно. если цель "досягаема", то обратно по цепочке идет подтверждение от RL к inConeOfSensor, а от нее в ключевую функцию SensorDef. И цель добавляется в список доступных для атаки ownTargetList. Основная идея этого скрипта в том, что операция по проверке нахождения цели в конусе ЕДИНА для всех. Вызываются лишь те функции, которые нужны, а не все подряд (пусть и с проверкой). Это позволяет гораздо легче ориентироваться в дополнении скрипта новыми строками. Скрипт в сущности, пока черновик, но основную идею, думаю, поймете.
Планируется сделать реакцию на помехи, влияние положения атакующего относительно цели (пуски ракет в заднюю полусферу возможны с вдвое-втрое уменьшенной дситанции, и никак иначе), влияние ракурса цели (пуски старых ракет с ТГСН возможны только в заднюю полусферу), сообщение противнику об облучении (для активных сенсоров типа РЛС) и возможность незаметно подбираться к противнику с использованием пассивных средств обнаружения вроде теплопеленгатора. В общем, много чего. Облик скрипта еще будет меняться и весьма сильно, хотя структура должна остаться прежней. Просто будут добавлены новые сенсоры. Если бы я оставил старый способ написания скрипта, то он бы 2раздулся2 до очень больших размеров. а так - более-менее понятно, а некоторые строчки можно уже и вообще не трогать...
Скрипт я тестил, мишень типа Ла-17 он фиксирует четко и особенности вроде "мертвой зоны2 выдает, как и требуется. Так что сенсоры боевых машин уже начали "видеть".
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 4

Сообщение #282 Flogger-K » 17.10.2016, 11:13

И снова пока не будет красивых картинок, ибо идет отладка того, что есть.
Был создан и выверен блок условий для "сверки" текущей ситуации и выбранного вида оружия. Сосбственно, здесь и приводится только один этот блок (функция).
Спойлер
Код: Выделить всё
#Это - блок сверки условий   
def SensorWeapon(own, target):   
   
    try:
       
        #Введение поправки на мертвую зону
        DeadZone = [target.worldPosition[0], target.worldPosition[1], target.worldPosition[2] - own['weaponLimitHeightMin']]
   
        #Координаты цели и собственные
        targetPosition = target.worldPosition
        ownPosition = own.worldPosition
        targetDist = own.getDistanceTo(target)
   
        #Сосбственная высот а и высота цели
        ownHeight = own.worldPosition[2]
        targetHeight = target.worldPosition[2]
   
        #Поправка на ракурс цели - стрельба на догонном курсе возможна с втрое меньшей дистанции
        racursX = (2 - abs(target.getVectTo(own)[2][0]))/2
        racursY = (2 + target.getVectTo(own)[2][1])/2
        racursZ = (2 - abs(target.getVectTo(own)[2][2]))/2
       
        #Еще одна переменная, влияющая на дальность пуска - общий ракурс цели
        RACURS = (racursX + racursY + racursZ)/3
       
        #print(RACURS)
       
        #Ближняя и дальняя границы разрешения пуска по дистанции
        distLimitMin = own['weaponPRdistMin']
        distLimitMax = own['weaponPRdistMax'] * target['stealth'] * RACURS
                                         
        #Введение поправки на дальность ниже 3 км дальность составляет 30 процентов
        if targetHeight < 3000:
            distLimitMax = own['weaponPRdistMax'] * target['stealth'] * RACURS * 0.3
       
        #Введение поправки на дальность от 3 до  10 км дальность изменяется в сторону уменьшения с уменьшением высоты
        if 3000 < targetHeight < 10000:
            distLimitMax = own['weaponPRdistMax'] * target['stealth'] * RACURS * targetHeight/10000
   
        if own['weaponSpeed'] > own.localLinearVelocity[1]:
            #print(own['typeSensor'])
            if distLimitMin < targetDist < distLimitMax:                                  #Минимальная дистанция пуска
                #print(distLimitMax)
                if own['weaponLimitHeightMax'] > targetHeight:                            #Максимальная высота цели для пуска
                    #print('weaponLimitHeightMax')
                    if own['weaponLimitHeight'] > abs(ownHeight - targetHeight):          #Границы превышения-принижения цели
                        #print('weaponLimitHeight')
                        #Проверка на лимит по минимальной высоте пуска по цели
                        hitEarth = target.rayCast(targetPosition, DeadZone, own['weaponLimitHeightMin'], 'objScene', 0)               
                        #print(hitEarth)
                        if hitEarth == (None, None, None):
                            #Проверка по ракурсам
                           
                            #Но сперва - проверка на соотвтетсвие типа сенсора типу ГСН и типу атакуемой цели
                            if own['typeSensorPR'] in own['typeSensorPR']:
                                if str(own['targetType']) in own['typeTargetPR']:
                                    #И обязательно - наличие боекомплекта
                                    if own['BK'] > 0:
                               

                                        if own['racurs'] == 0.0:
                                            #print('True')
                                            return True
                                        else:
                                            if abs(target.getVectTo(own)[2][0]) < own['racurs']:
                                                if abs(target.getVectTo(own)[2][2]) < own['racurs']:
                                                    if target.getVectTo(own)[2][1] < own['racurs']-1:
                                                        return True
                           
               
        else:
            return False
    except:
        return False

Теперь разрешение на пуск ракеты "воздух-воздух" можно получить лишь при выполении ряда условий:
1. Скорость носителя должна быть меньше скорости полета ракеты (иначе есть риск взорваться на собственном оружии).
2. Цель должна находиться в диапазоне минимальной-максимальной дистанции разрешения пуска. Минимальная дистанция постоянна, максимальная изменяется в зависимости от ракурса цели (на догонном курсе меньше, чем на встречном, причем в разы), высоте цели над уровнем моря (нулевой высотой), показателем заметности цели.
3. Цель должна находиться в диапазоне высот минимальной-максимальной для данной ракеты ("мертвая зона" на фоне земли и предельно максимальной высоты - для очень больших высот, как правило 20-25 км).
4. Цель не должна иметь превышение-принижение относительно перехватчика больше некоей величины (все, халява с атаками Ф-15 с МиГ-23 с разницей по высоте в 10 км отменяется).
5. Выбранное оружие должно соответствовать типу цели (чтобы не пускать УРВВ по танкам, к примеру).
6. Выбранный тип оружия допжен соответствовать типу сенсора 9к примеру ракеты с РГСН неыозможно применить без включенной РЛС).
7. Оружие вообще должно присутствовать на подвеске (не расстрелян полностью БК).

Все сие я постралася отразить в блоке кода выше. Окончательный ответ на правильность его работы даст только стрельба. пока ПР послушно загорается примерно в тех случаях, когда нужно, пора строить систему самонаведения для ракет "воздух-воздух". А там, глядишь и всего остального...
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 5

Сообщение #283 Flogger-K » 26.10.2016, 12:29

Дело быдлокодинга живет и побеждает. Есть такая шутка: "Если у вас паранойя, это не значит, что за вами не следят". По сложившейся уже традиции, после очередного "прорыва" на ниве нагромождения строчек Питона Высокое Небо намекнуло мен "Верной дорогой идешь, товарищ" - после вчерашнего успешного теста скрипта самнаведения энергетики вырубили свет... :rofl: На 20 минут и почему-то только на нашей улице. Хотелось бы на них самонаведение попробовать... ПТУРом... ]:-> Кроме шуток, подобное имеет место быть - стоит мен особенно удачно продвинуться вперед, как бац! - свет вырубают. На минуты или полдня (графики у нас что ли совпадают? :-~ )...
В общем, получилось создать более-менее вменяемую систему наведения для ракет и управляемых бомб. Точнее, заложить ее фундамент. Сам скрипт, такой, какой он есть в данный момент, я привел в последнем посте своего блога (я, по совету drona обзавелся собственным доменом, так что несколько изменился вид блога - не удивляйтесь). Здесь я простыню из 300 строчек ставить не стал - уж больно растянутым пост получится - если кто хочет подробностей - в блоге смотрите.
Пока что скажу, что создается довольно большой скрипт из множества мелких узкоспециализированных функций, чтобы не плодить лишних строчек. Типов ГСН пока 7 штук - но будет больше, не менее десятка. Каждая функция для каждого типа самонаведения будет иметь свой набор условий, свои "тараканы" (влияние помех то есть), что позволит охватить очень широкий диапазон современного оружия (или же потом добавить совсем уж фантастическое - в проекте я закладываюи такое, его можно превратить во что угодно более-менее близкое по теме к симудятору или аркаде).
пока нетути красивых скринов, потому как не взрываются еще ракеты - троько наводятся. Ног наводятся вполне исправно (надеюсь, свое собственное творение при доработке и дописывании я не сломаю).
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 7

Сообщение #284 Flogger-K » 31.10.2016, 17:29

В ентот раз картинко таки будет. Одна, правда.
Недавно вернул функцию изменения цвета элементов прицела на лобовом стекле. Теперь цветов шесть - белый, черный, красный, зеленый, синий и желтый. Картика как раз это и показывает. Отремонтировал звуки при перекладке крыла и работе тормозов, шасси, закрылков и фонаря кабины. Прежний вариант вел себя неадекватно, причины установить не удалось (видимо, где-то я накосячил), но второй вариант оказался "универсальнее2 и гибче. Мне даже не пришлось переделывать скрипты самих машин - добавление носителя звука и его проигрывание стало стандартной операций в скрипте ControlUnit, так что все перед носом и не надо лихорадочно открывать другие бленды, чтобы туда что-нибудь добавить. Заодно добрался до псевдоанимации фюзеляжа (давно надо было сделать) - угол при выпущенном шасси на земле у многих машин отличается от нуля.
Пока идет возня с доводкой самонаведения - ракета-то цель видит, распознает, но строчка ориентации на цель не срабатывает отчего-то. Видимо, чего-то сломал при переносе из первой версии. Ну да ладно, не в первый раз идти путем дятла...
Ну и картинко...
Вложения
colorILS.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 3

Сообщение #285 Flogger-K » 02.11.2016, 18:24

Возвращаясь к позавчерашнему посту.
Вчера я долго и нудно чистил скрипт кокпита, вводя индикацию отворота, подгоняя размеры цифр, сегодня же ввел возможность выбора дистанции работы радара, дочистил скрипт сенсора, добивщись вменяемой работы индикации разрешения пуска - надо было вставить кое-где обнуление, плюс изменить последовательность строчек скрипта.
И только что заработала ориентация ракеты на цель. в скрипте оружия по-видимому, была ошибка с написанием локальной скорости, я изменил строчку на более мне привычный вид из первой версии и все заработало.
Кроме того, введено нанесение ущерба ракетой в зависимости от дистанции подрыва. Каждая ракета имеет свой радиус поражения. Подрыв происходит случайным образом на дистанции от 1 до скажем так, двойного радиуса поражения. Если цель оказывается на дистанции меньше радиуса поражения с вероятностью в 75 процентов ей сразу конец - "здоровье" обнуляется. в оставшихся 25 процентах - тяжелые повреждения - не менее половины живучести.
На дистанции от одного до полутора радиусов поражения - либо средний ущерб - меньше половины, либо очень малый или малый ушерб. На дистанции свыше полуторного радиуса - никаких повреждений (но ракета, тем не менее, истрачена).
Этот процесс пока описан для ракет "воздух-воздух", видимо, для остальных классов оружия все же надо написать отдельные функции типа ЭксплозионБомбс или эксплозионБуллетс.
Необходимо было внести элементр случайности, потому что порой в реале самолеты, получившиек тяжелые повреждения 9а отдельные везунчики и пару попаданий УРВВ), умудрядись вернуться на базу и сесть. Или же дотягивали, но сесть не могли, как это случилось с южноафриканским "Миражом", получившим попадание Р-23Р с ангольского МиГ-23 (хотя там, скорее был просто близкий разрыв) - "Мираж" при посадке потерпел аварию и восстановлению не подлежал, летчик успел катапультироваться. В то же время ангольский МиГ-23 угодил под взрыв ракеты "Питон-3" (израильская), которая рванула в 15 метрах, но повреждения если и были, то малозначительные (фотографии обоих эпизодов есть в Сети - разбившийся "Мираж" и МиГ-23 в прицеле юаровского летчика со взрывом рядом).
Примерно по такому же принципу, наверное, напишу и воздействие бомб. как-то мне удалось отыскать таблицу радиусов сплошного разрушения для советских ФАБ. Кстати, не такие уж они и большие даже для мощных бомб. В таблице учитывалось воздействие на здания, но какая-то опорная точка все же есть, это лучше, чем ничего...
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 3

Сообщение #286 Flogger-K » 06.11.2016, 17:11

Ну,спервымсбитымштоле...
Ниже скрин падения сбитой мишени Ла-17. Картинка эффектов пока не устраивает, но лиха беда начало. Попробую аккуратно перенести из первой версии работающие картинки частиц огня и дыма, тем более, чтио там система отработана. По какой-то причине (видимо, опять мой косяк), в нынешнем скрипте частицы огня не являются видимыми, хотя судя по распечатке консоли, со всеми параметрами там порядок. Ладно, потом ыеернусь и доведу до совершенства. Пока лучше вставить то, что работает.
В модель полета введен эффект пробития звукового барьера - резкое снижение звука движка, как бы отстающего от самолета. А вот самого звука пробития пока нет - пока думаю, как сделать облако воздуха, на нем же этот удар и будет установлен.
Частично опять же написана функция штопора, точнее, коммутатор и четыре его подвида (по направлению вращения). Также в модель полета введена еще одна фишка - чем больше тангаж (задран или опущен нос самолета), тем медленнее он кренится. Эта фишка тоже будет играть важную роль при выводе из штопора - вращение по крену будет плавно замедляться, как только оно достигнет некоей величины, можно начинать тянуть ручку на себя.
Модель нанесения урона ракетой в первом приближении отработана, примерно ясно, как должна срабатывать модель повреждений. Пока вот уперся в частицы огня и дыма.
Вложения
1stShotDown.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 2

Сообщение #287 exooman » 06.11.2016, 18:51

на скрине мерещится будто бы частицы ты сделал по принципу травы - плэйны крест на крест. Если так, то это не правильно для полупрозрачных объектов. Тут нужно использовать один плейн с билбордом, для того чтобы частицы постоянно ориентировались "в камеру". В этом случае ты и мягкость настроишь и объем придашь.

Добавлено спустя 8 минут 59 секунд:
вообще стоит покопать в сторону добавления не объектов, а именно мешей в один объект. Я в своё время уперся в дикие тормоза изза того, что частицы реализовывал добавляя каждую из них в виде нового объекта через актуатор "edit object". Это очень неправильно. Нужно работать с сеткой, создавать некий класс с самим мешем и с переменными скорости и времени жизни для него. Затем в один единственный объект добавлять экземпляры этого класса и удалять их по истечении указанного времени. В итоге, прирост ФПС должен быть огромным.
exooman M
Аватара
Сообщения: 1237


  • 1

Сообщение #288 Flogger-K » 06.11.2016, 19:09

Не мерещится. Так и есть. Это так называемый "длинный" дым. Сделан для ракет и ловушек - для объектов имеющих ну очень большую скорость и сам дым по форме - вытянутые плейны, объединенные в "звезду" по главной оси. Временная затычка. я просто знаю об ограничениях БГЕ и вынужден искать компромисс. Тем более, что и система частиц будет меняться и есть еще одна хитрость, которую пока еще не пробовал применить (посчитать надо). А так - то что хорошо работало для ловушек и ракет - не работало для огня совсем, а для дыма - коряво работает (смотрим выше). Ну, оногь-то сделать удастся более-менее нормально, дым для наземки - тоже. А вот воздух, с его-то скоростями...
Пока картинка такая - физика ЛА заметно лучше, а вот визуальные эффекты сильно хромают. Остается только постепенног "подтягивать" слабые места.
Добавлен6ие мешей, говоришь? Так-так, спасибо за подсказк, надо покопать и взять на вооружение. Одни обюлака чего стоят.
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 2

Сообщение #289 exooman » 06.11.2016, 19:27

да, объекты для игровых движков - это плохо. А геометрия - хорошо. Потестируй shape key анимацию - там просто дикий прирост производительности именно по этой самой причине.
На счет "длинного" дыма. Он делается комбинированием двух видов частиц - одни добавляются локально объекта, другие уже в мировых координатах. В итоге вся "густота" тянется строго за хвостом самолёта, локально. А частицы в мировых координатах служат для завуалирования локальных частиц, ибо при резких сменах направления или скорости самолёта, очень будет заметно что частицы добавляются локально. В итоге, балансируя между этими видами частиц, делаешь оптимизированную систему. И да, всё билбордами, никаких крест-накрест. Иначе будет некрасиво и в три-четыре раза ресурсозатратнее.
З.Ы. Хотя, если накопаешь как добавлять частицы мешами, возможно прирост фпс будет таким, что можно будет сделать как в современных играх - тупо куча частиц в мировых координатах.
exooman M
Аватара
Сообщения: 1237


  • 2

Сообщение #290 Mihanik » 07.11.2016, 08:16

Согласен с exooman, по поводу частиц и shape key-ев, denis8424, пытался написать аддон для запекания работы частиц в ключи формы. /viewtopic.php?f=9&t=1348
Я пока не тестил некогда, но чувствую перспективу, когда частица не одна плоскость, а набор плоскостей или более сложная геометрия с анимацией на ключах.
Mihanik M
Аватара
Сообщения: 856

  • 3

Сообщение #291 Flogger-K » 20.11.2016, 13:37

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

0. Нулевой уровень. Шесть функций. Правые и левые крен и рысканье, тангаж вверх или вниз. Элементарные операции по совершению разворотов по нужным осям. На них, в конечном итоге, выходят практически все остальные функции.
1. Первый уровень. Операции выравнивания. Их шесть. Выравнивание в глобальной системе координат, дабы лететь строго по горизонтали и не впечататься нсом в землю. Плюс выравнивание по тангажу-крену-рыску на цель. Это для наведения на цель и применения оружия. все эти функции могут применяться по отдельности или в сочетаниях, например для атаки наземной цели с применением бомб лучше выровнять самолет по крену и тангажу, переведя в горизонтальный полет а потом довернуть в сторону цели, чтобы пройти над ней. Применены функции глобального выравнивания по крену и тангажу и функция выравнивания по рысканью на цель. Тут можно изощряться, причем по-всякому. Но в итоге все сводится к применению функций нулевого уровня.
2. Второй уровень. Эти функции работают с первым уровнем, нулевой уровень не их забота (вассал моего вассала не мой вассал). Это, грубо говоря, модели поведения бота в той или иной ситуации. Какие-то функции "главнее", хотя форамльно и равны. Это - взлет, посадка, маршевый режим, боевой режим, набор энергии после потери ее, руление на земле, реакция на угрозы. Вот тут и выполняются вызовы всевозможных "выравнивателей", помимо прочего сбрасывается или увелчивается тяга двигателя, работает тормоз, закрылки, шасси...
3. Третий уровень. Главный коммутатор. Он выбирает режимы рботы бота из набора второго уровня. Причем есть некоторые приоритеты - навпример набор энергии после маневра, чтобы не свалиться в штопор может вынудить бота прекратить вираж в погоне за противником, а угроза столкновения с землей вообще перкроет любой другой режим. Если угодно, это "сознание", вызывающее рефлексы, обращающиеся к "подсознанию" ( о завернул! :rofl: )

Отработаны первые два уровня, как бы не самые важные, потому что вектора, точнее, их сочетнаия и правильное направление движения - это наше все...
Очевидно, следующий этап - это доделка наиболее продвинувшегося вперед F-15 и создание для него кабины. После создания кабины можно проверить работу механизации и всех деталей и можно моделировать поведение бота - как самой "пятнашки", так и "двадцать третьего". БПЛА для отработки ИИ не годятся. Мишень - она и есть мишень.
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 4

Сообщение #292 Flogger-K » 28.11.2016, 08:46

Могу подтвердить на собственном опыте, что поговорка :"Утро вечера мудренее" родилась не на пустом месте. В течение пары дней я методично "раздавал слонов" - выписывал ТТХ для ракет "воздух-воздух", коих набралось много. Советские и российские, американские и израильские, английские и итальянские, плюс французские... Нет пока китайских, шведских и юаровских - но это дело поправимое, тем более, что их немного и они представляют собой копии вышеперечисленных (кстати, недавно саудиты получили ПКР от хуситов в свой корабль и на форуме, где это событие обсуждалось, посоветовали называть вещи своими именами: "Это была лицензионная иранская копия китайского клона французской противокорабельной ракеты "Экзосет" :) Правда, у меня пока речь идет об УР "воздух-воздух").
Далее, как и планировалось, я взялся за Ф-15. Сначала покопался в Сети, в поисках рисунков, могущих стать заготовками приборных панелей "Игла". И тут меня ждал облом. Если центральную панель еще как-то можно сделать вменяемо, то боковые - увы. Пока во всяком случае. Видимо, придется делать, как выйдет, а потом уже "шлифовать", меняя версии кабин...
Ну и последние два дня, плюс сегодняшнее утро я занимался самой моделью Ф-15. Сначала юнит люто, бешено летал назад и вниз с головокружительной скоростью - причиной стала деталь внутри динамического куба типа "статик", чего БГЕ не любит. Перед этим пришлось спешно дописывать характеристики баков и пилонов, как отдельных загружаемых частей.
Затем, уогда бот соизволил лететь прямо и вперед, при просмотре модели вдруг выяснилось, что она "сдвинута" назад - баки, ракеты и пилоны с летчиком висят в воздухе впереди самолета... Сначала думал, что напортачил с размерами. потом проверил все - с размерами норма. Весьма недовольный отложил наутро. Сегодня утром опять стал проверять модель и нашел ошибку почти сразу - родитель модели был сдвинут назад - пришлось менять ему центр командой центр модели-положение курсора, выставив того на нуль по всем осям. Результат - скрин ниже:
Вложения
testEagle.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 4

Сообщение #293 Flogger-K » 01.12.2016, 12:49

Методом "ствхвновское движение" был подключен F-16C с сопутствующими объектами - пилонами, баками и вариантами подвески. пока процесс написания json-ов еще идет -осталось для бомб и "Мейвериков" еаписать, на скрине ниже - вариант подвеси с тремя ПТБ, парой AIM-9X и двумя парами AGM-88E HARM (противорадиолокационные "воздух-земля". "Фалкон2 подключился довольно быстро, по сравнению с ф-15 и тем более, по сравнению с первой версией, где подключение нового юнита вело к перелопачиванию большого количества кода. Пока Ф-16 имеет враианты подвески только УРВВ и УРВЗ (выше), но их просто очень много и возня с ними отняла много времени, поэтому к вариантам с АБ и другими УРВЗ приступлю только сегодня. Да и написание джейсонов для пилонов и баков тоже отняло времени - с их массами, объемом топлива и мешами для замен. Плюс пора поменять некоторые строчки в скрипте Ф-16 - который изначально был взят от Ф-15. Поскольку скрипты в общем-то очень похожи друг на друга, все обычно сводится к переименованию части потомков и проставлению других цифр в нужных местах, что сильно экономит время...
Вложения
testFalcon.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 2

Сообщение #294 Flogger-K » 08.12.2016, 09:06

Пока идет работа над искусственным интеллектом бота. Одиночного. Сначала с помощью кода бот получил указание в режиме "маршевый" набирать высоту не менее 65 процентов от своего потолка и затем переходить в строго горизонтальный полет. Как я писал выше, использовались "кирпичики" из элементарных функций (не брики!) - тангаж, крен, рысксо слежением за своей ориентацией по мировым осям. После некоторых заморочек и подгонок наблюдал, как Ф-16 увеличивает тягу и полавно поднимает нос до 45 градусов примерно и быстро идет вверх. Затем самолет плавно опускал нос, пробивая звуковой барьер (вертикальная скорость снижалась до нуля, зато г7оризонтальная резко росла). После чего плавно снижал тягу до крейсерской - в 40 процентов и спокойно летел по прямой.
Прежде чем приступить к отработке воздушногог боя, занялся алгоритмом выбора оружия на подвеске и алгоритмом работы прицела с выбором сенсора. в перовм приближении это выглядело так:
1. Все миссии делятся на воздушные и наземные (условно - по типу атакуемых целей). прицел в зависимости от этого получает режим 0 - воздух или 1 - земля.
2. Идет перебор оружия на подвесках. Оно условно делится на три категории:
а) управляемое - оно добавляется в нулевой элемент текущего многомерно списка.
б) неуправляемое ракетное - одиночные тяжелые НАР и блоки с НАР.
в) все неуправляемые боеприпасы свободного падения - бомбы, зажигательные баки, кассеты.
Очередность идет как раз по этим элементам - а-б-в. Выбирается наиболее дальнобойное.
3. Далее предполагаю сделать выбор сенсора для этого оружия. У меня в проперти оружия "вшиты" типы сенсоров, которые соответствуют типу (если это - управляемое). Например ракета Р-24Р может использоваться только при включенной БРЛС, а вот Р-24Т - как БРЛС, так и теплопеленгатор. собственно, в этой части мне осталось дописать выбор из имеющегося "арсенала сенсоров2 бота.
Полсе выполнения всех этих операций бот получает возможность отслеживания противника и возможность по достижении ряда условий применить против него оружие.

А затем пойдет шлифовка мелочей. Это использование режима скрытности (по возможности не светить своей РЛС, если есть возможность подсвета с самолета ДРЛО или использовать теплопеленгатор.). Работа СПО для самолета игрока - это отдельный блок, не сказать чтоб сложный, но там параметров много. Это отработка противодействия угрозе - уклонение, РЭБ, ловушки... Наконец, в скрипте сенсора необходимо как-то обеспечить взавимодействие между ботами. Имеется в виду, что, скажем истребитель, облучающий пространство перед собой, сообщает о своих намерениях ВСЕМ оппонентам, даже против своей воли. Кому-то эта информация станет сигналом к бегству или подготовке к атаке, а кому-то, если режим облучения - "захват" - командой включения РЭБ и так далее. все это опять же пойдет через многомерные списки. В первой версии был а одна не слишком приятная особенность у СПО - она не могла селектировать угрозы по дистанции и из-за этого часто создавалась искаженная кртина - СПО отслеживала дальнюю угрозу, в то время как другой противник работал с ближней дистанции...
Но кроем СПО, реагирующей ТОЛЬКО на т ьучение, надо иметь в виду, что за последнее время прогресс пошел вперед. Еще лет пять назад упоминалось, что на некоторых наших Су-27 стоит аппаратура "Филин". Она способна засечь пуск любой ракеты, в том числе и с ИКГСН и предупредить летчика, так что поэтому списки угроз будут сложнее, чем предполагалось. плюс к тому же эти списки надо обновлять - убирая из них ненужные элементы. В общем, программирование, практически в чистом незамутненном виде, чтение распечаток и тесты, тесты, тесты - наше все...
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 3

Сообщение #295 Flogger-K » 13.12.2016, 16:44

Вчера доделал СПО. система предупреждения об облучении - вещь, вызывавшая у меня некоторый мандраж. Хотя в первой версии были работающие СПО-10 и СПО-15, но был у них недостаток - они не были способны селектировать угрозы. Кто последний из ботов принимался облучать самолет игрока, того СПО и отражала в своей информации. А то, что облучавший ранее бот уже мог пустить и наводить ракету, СПО не мошло обнаружить. Так что пришлось попотеть, обеспечивая более вменяемую работу СПО. Кроме световых сигналов, выдаются еще и звуковые, так что кабина наполнилась звуками.
По поводу принципа работы СПО в БГЕ я сегодня накатал длинный и подробный пост в своем блоге на блогспоте - желающие могут там ознакомиться. Сюда я эту простыню тащить не стал. скажу только, что СПО реагирует только на РЛ-облучение, бот, облучивший самолет игрока , пишет в глобальный словарь список параметров - дистанцию, направление, тип совей готовности к ведению огня, список этот время от времени обнудяется весь, чтобы не захламлять память. На оверлейной сцене кабины просматривается многомерный список всеъ этих данных и происходит его разборка на списки по приоритетам. Далее список приоритетной угрозы сортируется по дальности угрозы и выбирается ближняя - небольшой блок одного из ботов, ради чего все и затевалось. из него как раз дистанция, направление и тип угрозы читается скриптом и выдается команда на работу индикации. так сказать, "матрешка".
Ниже - скрин СПО-10. Облучение спереди справа (жельая лампа), дистанция 20-30 км - четыре красные.Теперь можно далее пилить ИИ ботов, разрешая им открывать огонь и маневрировать. Единственно, что надо обеспечить обмен данными, кто кому и чем угрожает. Чтобы обеспечить включение систем противодейсвия (это и наземки тоже касается). Но сегодня, кажется, придкмал, как и это сдклать...
Вложения
testSPO.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 3

Re: WIP by Flogger-K.Создание аркады в БГЕ.

Сообщение #296 wan-man » 13.12.2016, 17:42

какой вы настойчивый, целеустремленный, мне хотя бы половину ваших качеств) уважаю таких людей

Отправлено с моего Philips S308 через Tapatalk
wan-man M
Аватара
Откуда: Волгоград
Сообщения: 219


  • 2

Сообщение #297 Flogger-K » 14.12.2016, 17:11

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

Вдогонку к вчерашнесу посту.Сегодня реализовал метод обмена данными между юнитами. По-видимому, в блоге придется гнать на этот счет отдельную статью, но скорее, это будет после окончательной проверки работы систем РЭБ. Процесс примерно такой:
1. у каждого юнита есть словарь локальных свойств (так я его обзываю). Типа own['localdict']. В нем имеется список сенсоров (набора сенсоров) для данного юнита типа own['localDict']['listSensor']. В нем содержится список разного рода "органов зрения" - РЛС, лазерный дальномер и так далее.
2. Также имеется многомерный список типа own['localDict']['threatUnitList']=[[],[],[],[]]. Прикол в том, что когда юнит "видит" своего оппонента своей РЛС, он пишет самого себя в первый вложенный список. Если облучает лазером - то во второй и так далее.
3. Таким образом каждый юнит "знает", кто его обнаружил и главное, ЧЕМ обнаружил. И вот тут-то большой простор для работы систем РЭБ, оптических помех и так далее.
4. Допустим, мы имеем самолет с подвешенной станцией постановки помех. Юнит обнаружил, что противник облучает его своей РЛС. Следует команда на включение станции. Та быстренько просматривает список в начале own['localDict']['threatUnitList'], выбирает там оппонента и глушит ему наведение. аналогично. Танк, обстрелянный ПТУРом с вертушки, выстреливает в ее сторону дымовую завесу, чтобы ослепить лазер вертолета. Я специально делаю с запасом, чтобы потом можно было применить скрипт где угодно (хоть в космосе, хоть на земле, в воде или воздухе). Во второй версии намечается весьма эпичная система действий и противодействий, пренебрегать РЭБ и прочими защитными системами не стоит.
Ну для наземки, понятное дело, можно извратиться насчет бронирования - динамическая броня, активные системы защиты типа "Арена" и "Штора". Потихоньку, шаг за шагом... Пока что идет отладка "воздуха".
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 4

Сообщение #298 Flogger-K » 18.12.2016, 18:45

Идет работа уже над ИИ ботов. Вчера и сегодня утром, запасшись терпением, занялся функциями стрельбы и сброса в скрипте. Это был единственный до сего момента скрипт, в котором я еще на разбил операции на множество элементарных функций. Не с первого раза получилась только стрельба ракетами - они упорно срывались залпами, а не поодиночке - желание прихлопнуть проперти типа "сброс" оказалось невыполнимым. причем прикол в том, что оно нужно именно в случае применения одиночных пусков. Тем не менее, удалось работу проперти сильно упростить и избавиться от путнаицы с его состояниями.
Затем я вновь занялся ботами, точнее, одним ботом. Результаты первых тестов меня и обнадежили и... сконфузили. Как выяснилось, не зря я так много и упорно вводил всяческие ограничения типа проперти стелс, влияния высоты, превышения-принижения и прочего. В итоге я оказался в положении "видит око, да зуб неймет" - радар не хочет брать на сопрвождение цель, не укладывающуюся в его рамки параметров и все тут. Необходимо продумать систему подсказок и меток. в том числе можно сымитировать работу системы "Лазурь" (такой вот побочный эффект). Суть этой системы - автоматизированное наведение на цель перехватчика - летчик оставлял управление в покое и система брала над самолетом контроль, наводя его на цель. Летчику оставалось только дождаться команды с земли и снова взять на себя управление, атаковать цель и возвращаться на свой аэродром.
В свое время, в июне 1982 года ВВС Сирии потерпели поражение от изральских во многом из-за уничтожения израильтянами центра управления сирийской истребительной авиации в Ливане.
Сегодня я наглядно смоделировал ситуацию, когда встречаются самолеты разных поколений. МиГ-23МФ, конечно, может достать Ф-16, если тот не несет УР средней дистанции, но для этого МиГ должен своего противника увидеть радаром. А как его взять на сопровождение стареньким "Сапфир-23", который макимум на 60 км добивает и то в идеальных условиях. Зато, судя по писку СПО-10, Ф-16 МиГ очень даже хлолшл видит. Ради эксперимента поставил на Ф-16 АИМ-120. Ну тут все, полярный зверек, однако...
По идее, бой с "Фантомами" МиГ-23 или поединок Су-27 и Ф-15 (ранних и для Су и для Ф-15) должен стать интереснее, чем стычка Ф-22 и Т-50. причина - для того чтобы применить оружие, в этом случае надо сближаться и оппонента можно увидеть и посоревноваться, кто кого перемудрит на маневре. В случае с уберсовременными машинами - пальнул из-за горизонта и смотришь на метки на прицеле. Правда, тут большой простор для извращенной фантазии РЭБ или даже ПРО в виде Р-73 по пущенному в тебя АИМ-120...
Ракеты придется также дорабатывать в сторону ухудшения скорости слежения - потому что уклониться от них с такими показателями, как сейчас - почти невозможно.
Сам бот послушно меняет тягу двигателя, следит за противником (мной то есть), облучает и стреляет. Удалось добиться того, чтобы он не выстреливал весь БК одним залпом. Несколько раз я его таки подловил (надо еще модель полета доработать - трудновато наводиться на цель). Ну и он меня тоже... ловил.
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 2

Сообщение #299 Flogger-K » 22.12.2016, 17:24

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

Ввел ограничения на снос самолета по горизонтали и вертикали (локальным), наивно думая, что это исправит некорректную работу метки. Одако не помогло и чуть позже я понял причину. В первой версии метка цели у меня расположена на второй оверлейной сцене и заточена она под ортгональную камеру. А во второй версии ортогонадбная камера расположена на втором слое, вместе с обычной перспоективной камерой. Нку и она начинает закономерно "беситься" при разворотах. Причем если цель точно ы центре экрана - все нормально, но стоит ей чуть уйти в сторону - все. придется с этим что-то делать. А вот текстовый маркер работает четко - с подсказки dron-a досаточно быстро ее настроил. Даже успешно выполнил прицеливание и поразил противника.
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

  • 3

Сообщение #300 Flogger-K » 24.12.2016, 14:07

Метку на ИЛС отладил. По этому поводу надо будет написать в блоге, вместе с коррекцией мелких ошибок по отрисовке теста и комментариями (там ошибка в одной строчке - координаты появления тектса должны быть со знаком минус).
Временно присобачил старую систему огня и дыма. На скрине - первые мгновения после поражения Ф-16 ракетой - на сей раз и текстовый маркер и метка не разбегались по разные стороны и четко показывали положение цели. Надо отрабатывать катапультирование летчика, приводить в порядок наклепанный код и дорабатывать ИИ - уже для атаки наземки, уклонения от ракет и набор высоты, дабы не столкнуться с землей. Код для взлета я написал, но его надо опять же тестить, а чтобы тестить, надо чужой аэродром и вообще оживлять пейзаж...
Вложения
shotDownTestF16.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/ http://blogs.privet.ru/user/alexander-wings
Мой ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 401

Пред.След.

Вернуться в Ход создания работ (W.I.P)

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость