Это популярное сообщение. Kirag 39 Опубликовано 15 Августа 2009 Это популярное сообщение. Поделиться Опубликовано 15 Августа 2009 AI вертолетов Нормальная боевая схема вертолетов. Наверняка не идеальная, но всяко лучше того безобразия, что было изначально. Все, халява закончилась. Вертолет уже не бесполезная безобидная декорация, как было в оригинале. Теперь это ОЧЕНЬ опасный противник, которого из ПМ не завалишь, сколько ни бей. Версия игры: Сталкер ТЧ 1.004Автор мода: @Kirag ============== Тактика. Теперь вертолеты летают парами. Армия все-таки, приказы, уставы, дисциплина и прочая подобная ересь. Одиночный вертолет (или самолет) - явление достаточно редкое, обычно летают парами или более крупными группами, тем более что Зону сложно назвать спокойным местом даже при очень богатой фантазии. Эскадрилье здесь, конечно, делать нечего, а вот пара - самое оно. Особенность конструкции Ми-24 - то, что его крылья создают до четверти подъемной силы, но при этом экранируют поток воздуха от несущего винта. Это положительно сказывается на скорости вертолета, но длительное зависание в воздухе очень сильно сажает ресурс двигателя и строго не приветствуется. Поэтому из режимов атаки осталась только атака с заходами на цель. Как и положено, есть ведущий, который решает, куда лететь и кого метелить, и есть ведомый, чья задача - держаться за ведущим вне боя и помогать ему в бою, не слишком отдаляясь. Пара вертолетов действует как единое целое, а не как две отдельности. Цели имеют разный приоритет, в зависимости от потенциальной опасности. Пара ни в коем случае не будет гоняться за какой-то несчастной собакой, которая способна нанести вертолету разве что моральный ущерб, обгадив его на стоянке, если в поле зрения есть серьезно вооруженный противник, за которым и сбить не заржавеет. Цели атакуются в порядке убывания номера приоритета. Кроме того, пилоты не полные придурки, и могут понять, кто в прицеле - друг, враг или просто покурить вышел. Сейчас атакуют только врагов. Если по одному из вертолетов попали, реагируют оба вертолета, входящие в пару. Если у вертолета в момент попадания цели нет, или есть, но менее опасная - реакция однозначная, атаковать. Если существующая цель вертолета опасней, чем та, что по вертолету попала - попадание игнорируется. Если цели одинаково опасны, вертолет переключится на новую цель только в том случае, если не видит старую. Точно так же оценивает ситуацию и второй вертолет в паре. Если один из вертолетов оказывается сильно поврежден, он пытается выйти из боя, второй вертолет прикрывает отход, атакуя того, кто подбил напарника. Как только поврежденный вертолет вышел из боя или его обидчик уничтожен, второй вертолет сопровождает поврежденного напарника и тоже покидает поле боя. Если серьезно повреждены оба вертолета, они выходят из боя каждый сам по себе. Если один из вертолетов сбит, а второй не сильно поврежден, он продолжает бой в одиночку. Вертолет стреляет по цели, только если она видима. От него можно спрятаться в кустах, но вертолет с небольшой вероятностью может шарахнуть ракетой наугад, даже если цели не видит, так что вечно отсиживаться по ненадежным укрытиям не получится, надо искать укрытие посущественней. Пулемет используется всегда. Ракеты - по БТР обязательно, по пулеметчикам/гранатометчикам очень часто, по автоматчикам/снайперам иногда, по остальным целям не используются. Попадаться вертушкам на открытом месте не рекомендуется. Из-за переработанной модели повреждений и усиленного до реалистичных параметров оружия открытый бой с вертолетом, а тем более с парой - чистой воды самоубийство. Для того, чтобы если не сбить, так хотя бы отогнать вертолеты, нужно мощное оружие, много патронов и укрытие понадежней. ============== Вооружение. Изменения коснулись в основном пулемета, потому что та дрянь, что стояла изначально, не имела ничего общего с реально устанавливаемым на Ми-24 4-хствольным пулеметом ЯкБЮ-12,7 (а, судя по 3D модели, установлен именно он). Эффективная скорострельность доведена до 4800 выс/мин, увеличена точность и мощность, попасть под очередь - практически 100% смерть (4500 - 5000 выс/мин в реале, известен факт, когда очередь разрезала пополам машину). ============== Модель повреждений. Модель повреждения для пулевых повреждений была полностью переработана. Ми-24 - боевой ударный вертолет, а не воздушный шарик. В него мало прсто попасть, надо еще и пробить броню. Но даже факт пробития брони не гарантирует нанесение урона - нужно еще и попасть в какой-то важный узел, а не просто улучшить вентиляцию. Поэтому в крылья стрелять абсолютно бесполезно, ничего важного в них нет. Бесполезно стрелять и в оружие - детонации боезапаса на практике не происходит. Практически бессмысленно стрелять в хвостовую балку. Там из ценного только тяги управления да привод хвостового винта - не самые хрупкие детали, да и места занимают мало. Поподание в переднюю часть кабины уже серьезнее, там сосредоточены приборы и органы управления. Кроме того при удаче можно задеть пилота, что уже очень серьезно. Задняя часть кабины - десантный отсек, над которым расположен движок. Это одна область, спасибо разрабам Но шанс повреждения все равно достаточно высокий. Самая уязвимая часть - несущий и хвостовой винты. Шанс повреждения равен 100% - это открытые детали, если попал, то попал. И особой прочностью они тоже не отличаются. Повреждения взрывами гранат работают по старой схеме, повреждения осколками считаются так же, как и пулями. + Переработана тактика вертолетов + Усилено вооружение + Переработана модель повреждений + Вертолеты отличают своих от чужих + В качестве цели, кроме актора и объекта по story_id можно задавать конкретный гулаг или область + Возможно задавать несколько целей в одной секции логики + Пути следования вертолетов можно задавать не только в all.spawn, но и во внешних файлах. Сохранена поддержка всех возможностей путей из all.spawn. При задании пути из внешнего файла вертолеты реагируют на связи между точками Совместимость и возможные проблемы: Мод делался на чистой игре, но схема поведения работать должна, по идее, на любой сборке, не затрагивающей схемы поведения вертолетов. В bind_stalker.script - только спавн патруля над железной дорогой на кордоне. В _g.script добавлены новые функции, старые не менялись. Вся адаптация сводится к копипасту. Модель повреждений делалась на основе моих конфигов оружия, они прилагаются (только для оружия из оригинала). С другими конфигами могут быть проблемы с расчетом повреждений. Добавлены самонаводящиеся ракеты и новая модель вертолета Ми-2. ============== Ми-2. Добавлена еще одна модель вертолета - Ми-2. Та зараза, что атаковала ГГ в госпитале в "Чистом Небе". Пока что просто поддерживается, нигде не задействована. Оружие у вертолета послабее 24-ки, и отогнать его проще. Тем не менее, нарываться все равно смертельно опасно. В связи с тем, что модель вертолета в игре больше не единственная, изменилась функция спавна. Теперь первый аргумент - секция вертушки, а уже потом все то, что было раньше. ========================================== ============== Управляемые ракеты. ========================================== ============== Ракеты на вертолетах. Теперь вертолеты, встретив в воздухе вертолет противника, могут атаковать его управляемой ракетой с дальней дистанции. Если не попали - добить в ближнем бою. На эффективность атаки ОЧЕНЬ сильно влияет солнце - поскольку ракета с тепловой головкой самонаведения, солнце серьезно мешает захвату и сопровождению цели, вплоть до срыва наведения. Поэтому вертолет, заходящий на противника со стороны солнца имеет серьезное преимущество. Если один из вертолетов пары атакован самонаводящейся ракетой, он знает, кто его атаковал, и вся пара попытается ответить на атаку. Успешно или нет - как повезет. ============== ПЗРК "Игла". Поскольку вертолеты стали крайне опасными противниками, у ГГ появилось достойное средство против них - ПЗРК. Работает только по вертолетам, против наземных целей абсолютно бесполезна. Все сказанное про влияние солнца остается в силе - выпущенная по вертолету ракета может захватить солнце и уйти в никуда. Стрелять с очень близкого расстояния бесполезно - ракета с большой вероятностью не успеет довернуть на вертолет. Сразу после пуска СТРОГО рекомендуется спрятаться как можно быстрее и надежнее - как только пуск заметят с вертолетов, реакция будет однозначной - ПЗРК куда опасней нескольких пулеметов, вместе взятых. Использование. Первый раз нажать кнопку "выстрел" - начинается подготовка к пуску ракеты. Срабатывает всегда, независимо от наличия захвата цели. В течении 5 секунд ракета приводится в пусковую готовность - активируется источник питания и охлаждается ГСН до рабочей температуры. В это время пуск невозможен. По истечении 5 секунд ракета готова к пуску. Как только ГСН захватит цель (начинать вести цель можно еще на этапе подготовки к пуску), раздастся звуковой сигнал. Пока он звучит, возможен пуск ракеты - нажимаем "выстрел" еще раз. Ракета уходит в цель (или на солнце, если в момент пуска угол между целью и солнцем был меньше 20 градусов, следим за этим во избежание пустого расхода штучных боеприпасов). Срыв наведения. Делать ракете 100% эффективность - явный перебор. Поэтому смоделирована такая вполне реальная вещь, как срыв наведения. Возможен при таких ситуациях: Цель выходит из поля зрения ГСН. Обычно такое происходит, если стрелять в упор по пролетающему почти прямо над головой вертолету. Если верт метров за 200, шансы уцелеть у него на порядок ниже. Ракета перезахватывает другую цель. Такое бывает, если на линию огня влезает другой вертолет, и сигнал от него более четкий. Ракета дура, ей все равно, "свой" влез или "чужой". Может захватить даже другую ракету. Ракета захватывает солнце. Если угол между целью и солнцем (уже относительно ракеты) становится меньше 20 градусов. Наведение сорвано системой постановки помех. На Ми-24 стоит система постановки помех "Липа". Если ракета ловится на сигнал "Липы", она уходит на ложный сигнал, отворачивая от вертолета. Это иногда видно явно - прямо летящая на вертолет, который даже не маневрирует, ракета вдруг вблизи вертолета резко меняет траекторию и уходит в молоко. Эффективность данной системы - около 20% Противоракетные устройства. На Ми-24 их пока два - Экранно-выхлопное устройство и "Липа". Тепловые ловушки, будем считать, пропили или извели на фейрверк в честь днюхи командира. ЭВУ снижает тепловую заметность вертолета, срыв наведения происходит гораздо чаще и проще. "Липа" при удаче может увести ракету в сторону. Ми-2 не оборудован противоракетными системами, и с точки зрения ПЗРК в разы более легкая мишень, по сравнению с Ми-24. Технические заморочки. Без них не получилось Для создания красивого следа от ракеты пришлось менять particles.xr (исходный вариант от пака локаций от Кости для чистой игры). Новые партиклы прописаны в 2 файлах: config\creatures\igla_missile.ltx, параметр smoke_particle = ...; и scripts\spwan.script, функция missile, объявление local particle = ... в самом начале. Если кому-то по какой-либо причине не подходит этот вариант particles.xr, рядом с этими строками закомменченные значения со стандартными партиклами. Смотрится, конечно, совсем не так, но как совмещать эти чертовы партиклы, понятия не имею. Звук перезарядки - совершенно левый, сделать нормальный слабО. Если кто сможет - я первый скажу спасибо. Текстура ПЗРК - относительно пристойная, но я прекрасно понимаю, что оставляет желать. Опять таки, если кто сможет улучшить - буду только рад. AI вертолетов v1.1: Ссылка Забытые текстуры Ми-2: Тынц ! Ми-6 - транспортный без оружия: Жми В комплекте все конфиги, подключать по аналогии с Ми-2 и Ми-24... 1 6 2 Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Kirag 39 Опубликовано 29 Сентября 2009 Автор Поделиться Опубликовано 29 Сентября 2009 (изменено) Monnoroch, а нужно ли удерживать нескольких неписей одной схемой? Ведь бойцы одного отряда в реале тоже не управляются одним мозгом. Каждый действует под управлением собственного мозга - собственной схемы, и решения в конечном итоге принимают самостоятельно. Это (и только это, причем в ущербном виде, ведь новичок с ПМом попрет на толпу экзоскелетчиков только потому, что они враждебной группировки, соотношение сил никак не учитывается) уже есть в игре и сейчас. Но в реальном бою каждый боец действует все таки не сам по себе, а с оглядкой на действия своих товарищей. Но именно с оглядкой, а не товарищи решают за него. Ну и кроме этого учитывается ситуация, приказ командира, поставленная задача. Именно это и есть координация действий в том понимании, которое вкладываю в это я. И именно поэтому я считаю важным ВНЕШНИЙ источник информации, опираясь на который каждый отдельно взятый непись будет сам принимать решение. Вот на том же примере боя в тройке снайпер-пулеметчик-штурмовик. Есть три схемы - снайпера, пулеметчика и штурмовика. Под какую схему попадет НПС, зависит от его оружия. Есть список целей. Если схема снайпера, то отстреливает в первую очередь тех, кто находится далеко, во вторую очередь средние дистанции. Не может отходить дальше определенного от остальных. Пулеметчик стреляет по средней и короткой дистанциям. Опять таки, далеко от товарищей не отходит. Штурмовик прикрытия - самое интересное. Стрелять начинает тогда, когда враг подходит на короткую дистанцию. Либо когда враг сбоку. Либо в то время, когда пулеметчик перезаряжает оружие. Теперь неизбежные вопросы - что значит "враг зашел сбоку" и "пулеметчик перезаряжает оружие". За "сбоку" принимаем какой-то угол от направления фронта, за которое, в свою очередь, берем линию между двумя отрядами на момент начала столкновения. Либо, еще лучше, между "центрами масс" двух отрядов в данный момент. Чтобы это работало, нужно держать во внимании положения всех участников столкновения. В реале это понятно каждому, если речь не идет об успешном обходе, когда кругом враги. Но это уже финиш. А чтобы определить, когда же начинается перезарядка у пулеметчика, нужно держать во внимании количество патронов в магазине его пулемета. В реале - видно невооруженным глазом, или слышно на крайний хрен. Вот для удержания всей этой информации во внимании и нужна внешняя база данных. Не запрашивать же каждый раз напрямую все объекты (причем вообще все, включая ящики, мол "Друг! Сколько у тебя патронов осталось? А! Так ты вообще не человек! Ну, звиняй. До следующего апдейта..."). Проще взять из глобальной таблицы боеспособных объектов уже готовые данные, и заодно обновить данные о себе. В результате все три бойца будут сражаться как одна группа, в которой у каждого свои цели и задачи, т.е. скоординированно. И для этого не нужна одна схема на всех, каждый действует по своей схеме, но каждая из схем учитывает глобальную таблицу - окружающую ситуацию, которая и связывает три схемы воедино. Вот примерно так. По такому принципу я и вертолеты в пары объединял. А что касается взаимосогласованных позиций... Нам же требуется только, чтобы неписи не лезли своим же на линию огня, а уж в двух мертах он слева или в пяти метрах справа - это уже пусть сам решает, главное, чтобы под союзные пули не лез. Кстати же, про держание строя есть схема patrol, взять хоть солдат, патрулирующих дорогу около блокпоста на кордоне. Изменено 29 Сентября 2009 пользователем Kirag Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Monnoroch 6 Опубликовано 30 Сентября 2009 Поделиться Опубликовано 30 Сентября 2009 Не все так просто. Чтобы управлять 2мя и больше нпс надо поймать их в одном комплекте акшн-эвалуатор. В одном. Из разных эффекта будет ноль.В том плане,что из разных и делать не надо - уже ПЫС сделало. А чтобы они реально вместе были надо из одного. А вот это уже нереал.....чтобы поймать в нем 3 обьекта + прописать им разное поведение. Ссылка на комментарий
Kirag 39 Опубликовано 30 Сентября 2009 Автор Поделиться Опубликовано 30 Сентября 2009 Monnoroch Верю, что нереально запихнуть несколько объектов в один эвалуатор. Ты с ними работаешь, и понимаешь в разы лучше, чем я. Единственно, с чем я не могу полностью согласиться, это с отсутствием толка при использовании индивидуальных схем. Нам ведь не сильно нужно, чтобы неписи реально были вместе. Достаточно, чтобы они просто выглядели командой. А к этому теоретически можно приблизиться и на индивидуальных схемах. Мы, похоже, просто говорим о разных вещах. Ты - о реальном управлении группой НПС, а я - о создании индивидуальных схем, где для принятия решения просто учитывается куда больше факторов, чем у ПЫС, и потому решения получаются более адекватными ситуации. И выглядеть могут, как скоординированные действия, по сути ими не являясь. Как у муравьев - вроде волокут травинку слаженно, а отделить тех, кто сзади - поволокут куда быстрее. Внешне - кооперация, по сути - перетягивание каната. Применительно, скажем, к подбору десантников. Если каждый десантник сам по себе решит: рядом сел вертолет - бегом к нему, то все ломанутся внешне очень даже слаженно. И плевать, что каждый в механике игры бежит сам по себе. Если поставить не просто бег к вертолету, а так, что пять секунд НПС бежит, следующие пять - отстреливается, опять бежит и т.д., и при инициализации схемы поставить 50% вероятности, с чего начинать - бежать или отстреливаться, то выглядеть это будет как то, что команда, отходя к вертолету, прикрывает друг друга, поделившись примерно поровну. Очень разумное поведение, а то, что они на самом деле каждый за себя, на фоне такой внешней слаженности заметно не будет. В конце концов, мало кто, играя, отдает себе отчет, что держит в руках не калаш, а wpn_ak74_hud.ogf А по поводу ПЫСовских схем... Как-то по диагонали смотрел боевую схему зомби - там вообще всего два объекта участвуют - зомб и цель. Ну, зомбу адекватность и не нужна, так ведь и сталкеры недалеко ушли. Добавляются только укрытия и перебежки между ними. Чтобы банально отступить, а не переть с шашкой на танки - такого нет. А ведь могло бы быть, если добавить в индивидуальную схему каждому умение оценивать, сколько поблизости своих и сколько чужих, да как кто вооружен. Или сколько раз одинокий сталкер ломился прямо под мост, где шестеро военных. Там и оставался, ума обойти не хватало. А ведь недалеко ж переться. Опять таки - был бы алгоритм обхода превосходящих сил противника, наподобие обхода аномалий (тоже не ПЫСовский) - глядишь и уцелел бы одиночка. В общем-то, тоже вид координации, только с противником. Я вот об этом, о доработке индивидуальных схем. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Monnoroch 6 Опубликовано 30 Сентября 2009 Поделиться Опубликовано 30 Сентября 2009 (изменено) Да,так реально сделать.С этим согласен.Но это же все эмуляция. А обход противника как анамалий - это кстати мысля дельная.Это даже не сложно. Но все равно индивидуальные схемы выглядеть будут на 1-2 порядка слабее.... О том,чтобы 1 присел а 2й сзади встал и стреляли и речи быть не может к сожалению... Или с 2х сторон из за дерева...или обход 2 сторон противника.... Только как ты написал - рандомом. Изменено 30 Сентября 2009 пользователем Monnoroch Ссылка на комментарий
Kirag 39 Опубликовано 30 Сентября 2009 Автор Поделиться Опубликовано 30 Сентября 2009 Индивидуальные послабее, оно да, но далеко не всегда это хуже. Ведь и в жизни не обязательно принятое решение будет оптимальным. А вот обход противника с двух сторон можно и на индивидуальных схемах сделать: Допустим, нас тут воюет восемь рыл. ИД всех известны. Для простоты снаряжение у всех одного класса. Значит, двое с наименьшими ИД обходят слева, еще двое с наибольшими - справа, остальные четверо развлекают противника. Кстати, с забором десанта рандом - только первый пришедший в голову вариант, не самый лучший. Можно сделать толковее: координаты вертолета известны, координаты десантников известны. Стало быть, расстояния тоже известны. Первыми начинают отход та половина, которая в начальный момент находится дальше от вертолета. Можно сделать еще и с учетом здоровья - раненные вперед. А вот возможно ли сделать, чтобы непись тащил к вертолету тяжело раненного товарища - вот этого не знаю, далеко не факт. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Monnoroch 6 Опубликовано 1 Октября 2009 Поделиться Опубликовано 1 Октября 2009 Kirag, Так этот обход как раз по твоей схеме и предполагает поймать в 1 экземпляре схемы аж 8!!! НПС! Ссылка на комментарий
Kirag 39 Опубликовано 1 Октября 2009 Автор Поделиться Опубликовано 1 Октября 2009 (изменено) А зачем нам ловить всю эту ораву в одной схеме? Эвалуатор ведь умеет выбирать из всех возможных вариантов действия нужный. На этом и можно попробовать сыграть. Смотри: У каждого НПС своя схема. Основной идея в том, что каждый НПС знает ИД тех, кто сражается рядом с ним. А дальше в эвалуаторе каждой из схем происходит следующее (от имени НПС, каждого в отдельности, но все делают то же самое): Я сравниваю свой ИД с ИД из списка группы. Если мой ИД первый или второй в порядке возрастания - обхожу гадов слева. Если последний или предпоследний - иду справа. Иначе - держу центр. При таком подходе двое пойдут слева, двое справа, а четверо останутся на месте. У них просто нет шансов принять другое решение, ведь список ИД бойцов группы у каждого НПС один и тот же, меняется от бойца к бойцу только его собственный ИД, на чем и построен механизм отбора. Чтобы такой вариант заработал, ИД всех бойцов группы должны как-то попасть в эвалуатор. А вот для этого уже нужна внешняя (относительно эвалуатора), единая для всех НПС, база данных о ситуации (имеются ввиду боеспособные онлайн объекты - мутанты, люди, БТРы и вертолеты), из которой эти сведения и берутся. Через что-то подобное я объединял вертушки в пары, только таблица пар очень ущербная (я понял это на середине процесса, но переделывать было лень, выкрутился и так). Там ведь похожая ситуация - у каждого из вертолетов пары свой собственный биндер и схема, но в нем учтено, ведущий это или ведомый (данные об этом идут извне биндера и схемы), и на основании этого выбирается поведение. Так что могу сказать с уверенностью, что сам по себе принцип рабочий. З.Ы. Если можно, распиши подробнее, что именно ты представил, говоря, что предполагается поймать 8 НПС в одной схеме? Потому как мне кажется, мы снова говорим о разных подходах. Я ищу обходной путь. Возможно даже, очень обходной. Поскольку в лоб, известными путями, задача нерешаема. В этом я с тобой полностью согласен. Изменено 1 Октября 2009 пользователем Kirag Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Monnoroch 6 Опубликовано 1 Октября 2009 Поделиться Опубликовано 1 Октября 2009 (изменено) "каждый НПС знает ИД тех, кто сражается рядом с ним" - для этого нужно поймать их в 1 схеме Тогда будет перекрещивание действий если просто id собирать.А чтобы они не делали полный бред необходимо управлять из 1 схемы. в том то и дело,что не получится так стабильно делать таблицу ид бойцов.она будет периодичеси меняться и т.д. - т.к. условия в бою часто меняются. 8 НПС - это когда перебором обьектов выбираются 8 ближайших дружественных <= 25 гдето метров и управление анимациями идет для всех сразу.ну или по очереди.не важно.важно что из 1 комплекта схемы. то есть есть npc у которого есть db.storage[npc:id()] а есть остальные 7 обьектов у которых тоже есть db.storage[obj:id()] но им всем надо запретить использовать данную схему чтоб не было конфликта что он одновременно и npc и 7!!! раз obj. (из других экземпляров obj - не своего эвалуатор-экшн) Изменено 1 Октября 2009 пользователем Monnoroch Ссылка на комментарий
xStream 86 Опубликовано 2 Октября 2009 Поделиться Опубликовано 2 Октября 2009 (изменено) Ого, баталия. Уважаю, что называется. Делюсь наработками/идеями для группового взаимодействия: 1) такого взаимодействия, как показывает практика не нужно! достаточно создать видимость. 2) приняв подобную идею, приходим к уровню логики, который выше уровня логики отдельного непися (в ЧН что-то подобное - сквады и группировки, но очень тупо реализованное) 3) для такого уровня требуется собственное хранилище (я использую распределенное - каждый непись в себе хранит "свою" часть общего состояния, что позволяет сохранять и загружать эти состояния не боясь переполнить pstor), в котором хранится информация о "расстановке сил" какие неписи каких группировок где находятся, на базе информации формируются "сквады" (гы) по расстоянию друг от друга, по целям и т.п. 4) для каждого сквада производится распределение - кому из неписей какую роль "отыгрывать", например, снайпера выбрали (по оружию) и послали к каверу недалеко от тех неписей, которых приняли за один сквад. Точно так же и с остальными поступить. 5) все это сводится к ручному манипулированию эвалюаторами - выставление тех или иных в true (просто чуть-чуть модифицируем код эвалюаторов) 6) как следствие - неписи двигаются сами по себе, но внешне это выглядит как групповое действие. Подобную вещь я делал, когда заменял боевую схему: неписи стараются кучковаться, но не сильно, стараются не стоять друг у друга на линии обстрела, меняют укрытия и т.д. и т.п. (ролик на ютюбе, хоть и сумбурный, показывает это) Или торговля - две таблицы, одна "мастер-слейв", другая "слейв-мастер" (для быстрой выборки). Одна схема, но с ветвлением - если мастер, то играть одно, а если слейв - другое. Получается синхронное взаимодействие. Так же спокойно восстанавливаются эти пары при загрузке игры (п.3), что позволяет даже после загрузки продолжать наблюдать торговлю. Иначе после перезагрузки игры теряются таблицы пар и каюк Так что верной путей идете, товарищи. PS 2Kirag: к id объектов низзя привязываться для выбора направлений. Так как получится каша. И да, у ПЫС боевая схема в движке, для сталкеров, и она не такая уж и простая. Другое дело, что не очень адекватная. PPS 2Kirag: тебе с десантом могу предложить вариант такой: составляешь единожды таблицу, кого надо "забрать" и у вертолета смотришь, чтоб таблица была пустая, тогда улетать. У написей же делаем схему, где эвалюатор выдает true, если непись в такой таблице, ну а в схеме - что угодно, например, пробежать от 2 до 5 секунд, присесть пострелять во врага 2 секунды, метнуться в сторону и все это в виде графа с переходами по ребрам из одного состояния в другое. Можно усложнить - если отслеживать через таблицу у кого из группы какое состояние, запрещать переход в какое-либо состояние, если более 70% группы в таком состоянии уже находятся. Не суть, главное - когда добегает непись до цели (проверка расстояния, например), то удаляем себя из этой таблицы, а на finalize экшна непися ... еще раз удаляем себя из таблицы (на тот случай, если финалайз вызван переходом в оффлайн, например, считаем, что добежали), вставить его же собственное удаление через alife():release(), или если вылеты, то косвенными способами - через промежуточные функции и таблицы. Итог: бегут неписи, постреливают, шхерясь и абсолютно несинхронно, к вертушке и один за другим исчезают "в ней" после чего вертушка деловито завывая улетает Главное - запоминать состояние таблицы в сейве. Изменено 2 Октября 2009 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Monnoroch 6 Опубликовано 2 Октября 2009 Поделиться Опубликовано 2 Октября 2009 (изменено) Это все просто замечательно,но на деле хотелось бы конечно реальное взаимодействие сделать...Как у меня в торговле.Только боевое.Но это я идеализирую... Изменено 2 Октября 2009 пользователем Monnoroch Ссылка на комментарий
xStream 86 Опубликовано 2 Октября 2009 Поделиться Опубликовано 2 Октября 2009 (изменено) это и есть реальное взаимодействие они делают общее действие при этом выполняя каждый свои схемы. а набор этих схем и есть групповое взаимодействие. надо просто сделать уровень абстракции выше схем Та же торговля, тот пример, что я описал - он рабочий, и синхронизация абсолютная, с точностью до одного апдейта непися (зависит от мощности компа) Изменено 2 Октября 2009 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Monnoroch 6 Опубликовано 2 Октября 2009 Поделиться Опубликовано 2 Октября 2009 (изменено) xStream, пара вопросов. а если таким образом 2 снайпера полезут в 1 каверу? а если 2 пулеметчика сядут стрелять под 1 углом? а если... а если... по-твоему же не координация действий. а "умные" поступки каждый в одиночку + насильственное удержание группы НПС рядом друг с другом (относительно,конечно). "как бы" вместе,но не вместе. или я не прав? Изменено 2 Октября 2009 пользователем Monnoroch Ссылка на комментарий
xStream 86 Опубликовано 2 Октября 2009 Поделиться Опубликовано 2 Октября 2009 (изменено) а для того и нужен верхний уровень, чтоб определять кого куда и что бы не было конфликтов. то есть составлять наборы данных, исходя из которых непись переходит под ту или иную схему Пример: когда отправляем одного быть снайпером, то в таблицу "снайперов" добавляем непися и точку, которую он пасет. Если из другого сквада снайпер попрется туда, ему достаточно проверить, а не занято ли там. Довольно просто. И вообще неписи будут стараться держать дистанцию относительно друг друга, а в пределах сквада - не сильно разбредаться и будет получаться действие в группах. Твоя ошибка в том, что ты пытаешься конечные действия представить, а надо наоборот - составляем глобальную картину и "высший разум" раздает "задания" учитывая состояние неписей, их вооружение и вообще все что угодно. "как бы" вместе,но не вместе. Я говорил, что реально не надо запариваться о том, что бы синхронизировать неписей. Под действием управляющих сигналов "сверху" они будут рядом, но без сильной синхронизации, просто "будет совпадать" то, что мы видим, с тем, что подразумевается, но на деле - неписи каждый под своим GOAP работает, просто мы корректиируем их поведение, но не жестко. То есть - детали реализуют неписи, мы указываем общую цель. Не забывай, как работает планировщик. Изменено 2 Октября 2009 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Chingy 51 Опубликовано 3 Октября 2009 Поделиться Опубликовано 3 Октября 2009 И впрямь консилиум скриптеров . Оборву проблемами своими насущными: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...hing\s.t.a.l.k.e.r\gamedata\scripts\heli_move.script:172: attempt to call field 'alt_choose_look_point' (a nil value) переодически выходит такой вот лог Цитата "Все на свете есть Калаш. А что Калашом не является - стремиться уподобиться ему" © Мои оружейные релизы Ссылка на комментарий
Kirag 39 Опубликовано 3 Октября 2009 Автор Поделиться Опубликовано 3 Октября 2009 Ох! Всего день не заглядывал, а столько пропустил! xStream, спасибо за комментарии и пояснения. Все-таки не совсем я тупой, что приятно. Принцип тот самый, синхронизация и выбор действия на внешней базе данных. Пока читал, возникла пара вопросов: У тебя информация о каждом НПС хранится в нем самом, что облегчает сейв/лоад. А при лоаде вся эта инфа собриается в общую таблицу, я верно понимаю? Или запрашиваются все НПС? И еще вопрос: почему привязка по ИД не подойдет для выбора направления? Дело именно в направлении, в нем какие-то хитрости? Просто если снаряжение у группы сталкеров одного класса, то откуда получится каша? По десанту я планировал сделать чуть по-другому, записывать в вертолет, кого и сколько там сидит. Если больше некого забрать или вертолет полный - взлетаем. Просто мало ли, понадобится этот десант снова высадить, а высадятся совсем не те, что садились. Но в любом случае, это я точно нескоро смогу сделать, с вертушками я разобрался, а вот сталкеров только спавнить и релизить и умею. Послать его куда-нибудь пока выше моего умения. Chingy, а ты фикс из шапки ставил? Он именно этот вылет и правит. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Monnoroch 6 Опубликовано 4 Октября 2009 Поделиться Опубликовано 4 Октября 2009 Kirag, ну как я выше писал послать его к вертолету с релизом в конце - вообще нет проблем. Я тебе это за 10 минут напишу - ты только скажи как получить нужный обьект вертолета. Ссылка на комментарий
Kirag 39 Опубликовано 4 Октября 2009 Автор Поделиться Опубликовано 4 Октября 2009 Monnoroch Пока я даже не до конца понимаю как определить, кого и когда нужно посылать к вертолету. И что должно происходить с вертолетом при высадке/посадке людей тоже только общее представление, я имею в виду список пассажиров. Да и осваивать управление сталкерами мне по-любому нужно. Определить же, что вертолет сел - достаточно просто: скорость равна нулю, расстояние между координатами левел вертекса вертолета и координатами собственно вертолета меньше какого-то значения, около 3 метров. Другое дело, что при посадке пары таких вертолетов будет два. Тогда, наверное, ближайший из подходящих. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
xStream 86 Опубликовано 6 Октября 2009 Поделиться Опубликовано 6 Октября 2009 (изменено) 1)При загрузке игры каждому неписю вызывается onregister метод серверного объекта. Ну и в нем, непись отправляет в общее хранилище свои данные. Запись проще - реалтайм, как надо сохранить инфу, сразу в него и пишем, при сохранении все это попадет в сейв. 2)По ид я имел ввиду следующее - если брать непися с ИД=10 и послать налево, а непися с ИД=11 направо, томожет получиться смешно - 10-й стоит справа, а 11 слева, вот и пойдут "крест-накрест". Только это и ничего более. Изменено 6 Октября 2009 пользователем xStream Все, кто стоит на моем пути: идите нахрен и там погибните! © Ссылка на комментарий
Kirag 39 Опубликовано 27 Октября 2009 Автор Поделиться Опубликовано 27 Октября 2009 TAYLI Ну, почему оффтоп? Вполне по теме. На данный момент уже сделано: + В дополнение к Ми-24 появился вертолет Ми-2 (из госпиталя ЧН) Тактика боя пока что от 24-ки, хотя это совершенно разные машины, с разными ТТХ и углами обстрела пулеметов. Так что для Ми-2 очень даже подойдет тактика висения над жертвой. + Вертолет - противник опасный, поэтому в игре появился ПЗРК "Игла". Добавлены модели ракеты, самого ПЗРК, ХУД к нему. Применение комплекса старался сделать поближе к реальности, то есть никакого "забыл-выстрелил" (как в первых опытах) не будет. Честное "выстрелил-забыл", причем в варианте "если выстрелил, то забыл... наверное..." По этой линии остались косметика с моделью ПЗРК, ну и отстроить алгоритм наведения ракеты - срыв наведения уже возможен, но пока не учитываются меры противоракетной защиты вертолетов. В общем, уже не халява. Ну, и как доделаю - инструкцию ко всей этой дряни надо не забыть. + На модели обоих вертолетов добавлены пусковые установки управляемых ракет "Игла-В". Пока только модели, применение УР компьютером пока совсем не прорабатывалось, хотя наметки есть. В принципе, для вертушек проще, чем для ГГ. Если б еще в сталкерах что-то понимал... + Высадка десанта с вертолетов. Только на заранее в логике прописанных левел вертексах, и только безмозглых НПС безо всякой логики. Опять-таки, понимал бы что в сталкерах. Но если прямо на голову - мало не покажется. Пока вроде бы все. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
strong 2 Опубликовано 27 Октября 2009 Поделиться Опубликовано 27 Октября 2009 Прочел и захлебнулся слюной!!! ЗОНА ДОЛЖНА БЫТЬ НЕПРЕДСКАЗУЕМОЙ !!! НЕТ ТАМ ЛОГИКИ И НЕ НУЖНА ОНА ТАМ !!! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти