Виртуальный противник
|
|
Индеец › Понедельник
› 20.10.2014
› 00:50
› Сообщение # 16
Полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 243
andrucio, вот наваял Skill: _unit = _this select 0;
_squad = units group _unit; _kom = _squad select 0; _zam = _squad select 1;
waitUntil {not alive _kom}; { _skill = skill _x; _x setSkill ["general", (_skill-0.2)]; } forEach _squad;
waitUntil {not alive _zam}; { _skill = skill _x; _x setSkill ["general", (_skill-0.1)]; } forEach _squad;
Тут: командира убили - полохо, зама - еще хуже. сначала зама убили - можно жить (есть же командир), потом убили командира - все плохо (зама ведь тоже нет). Как-то так.
|
andrucio › Понедельник
› 20.10.2014
› 14:22
› Сообщение # 17
Генералиссимус
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1334
Ну тут уже смотреть надо, как интереснее будет - двухступенчатое нарастание вселенской тоски и уныния или же возможным скачком на 0.3. И я бы менял не все скиллы скопом.
Кампания А2 "Охотники за караванами" А3 для мишшенмейкеров: заставляем дома мебелью
|
Индеец › Четверг
› 23.10.2014
› 20:38
› Сообщение # 18
Полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 243
Уууууууууууууу в какие дебри я залез! Ситуация подвергается классификации, определяется боевая задача и способ ее выполнения, каждое движение бойца отдельно прописывается. На все это уйдет уйма времени и ресурсов ПК. Но это - лирика. По сути: решил для определения важности цели создать систему накопления баллов. Частично это уже сделано: рейтинг (rating) юнита больше, чем выше его звание. Кроме того рейтинг выше у рядового-танка, чем у рядового-человека. Добавил добавление баллов, если цель имеет пулемет или снайперский прицел, и добавление баллов, согласно близости. // боец _unit = _this select 0;
//бойцы отделения _squad = units group _unit;
//лидер отделения _leader = leader group _unit;
while {true} do { //резервируем массив целей _targets = [];
_man = [];
_tank = []; // список объектов, известных лидеру _objCOM = _leader targetsQuery ["", "", "", "", ""]; // ФИЛЬТР ПО ВРАЖДЕБНОСТИ { // если сторона объекта враждебна стороне лидера if ((_x select 2) getFriend (side _leader) < 0.6) // то добавить имя объекта в массив ЦЕЛИ then {_targets set [count _targets, (_x select 1)]}; } forEach _objCOM; // для всех известных объектов
// резервируем массив баллов (кол-во элементов массива соответствует кол-ву элементов массива ЦЕЛИ _balls = []; _i = 0; _j = count _targets; while {_i < _j} do { _weaponsItems = weaponsItems (_targets select _i); // вооружение цели и обвес на нем _optics = (_weaponsItems select 0) select 3; //оптика основного оружия _ammo = ((_weaponsItems select 0) select 4) select 1; // кол-во патронов в используемой обойме
// ФИЛЬТР ПО РЕЙТИНГУ // коэффициент рейтинга _Krat = rating (_targets select _i); // ФИЛЬТР ПО НАЛИЧИЮ ПУЛЕМЕТА //коэффициент пулеметчика _Kgun = 0; // если кол-во патронов в обойме меньше 30, то добавить 50 очков if (_ammo > 30) then {_Kgun = 50}; // ФИЛЬТР ПО НАЛИЧИЮ СНАЙПЕРСКОГО ПРИЦЕЛА //коэффициент снайпера _Ksni = 0; // если цель имеет один из снайперских прицелов if ((_optics == "optic_SOS") or (_optics == "optic_LRPS")) // то добавить 100 баллов then {_Ksni = 100}; // ФИЛЬТР ПО РАССТОЯНИЮ // коэффициент дистанции _Kdis = 300 - (_leader distance (_targets select _i)); // добавить элемент в массив баллов _balls set [_i, (_Krat+_Kgun+_Ksni+_Kdis)]; // следующая цель _i = _i + 1;
};
// ВЫБОР ЦЕЛИ // начальное значение выбранной цели и ее индекс в массиве _balls _maxBall = _balls select 0;
_index = 0; _i = 1; _j = count _balls; while {_i < _j} do { if (_balls select _i > _maxBall) then { _maxBall = _balls select _i; _index = _i; }; _i = _i + 1; };
// выбранная цель _target = _targets select _index; }; Думаю теперь взяться за создание групп в своем отделении и распределять м-ду ними задачи (нечто вроде микроструктуры боя, о чем писал alex70-03).
|
andrucio › Пятница
› 24.10.2014
› 00:06
› Сообщение # 19
Генералиссимус
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1334
Это все работает? Хм.. рейтинг от убийств зависит. Автоматчик, заваливший пяток врагов, будет круче, чем пулеметчик, не заваливший ни одного.. Хотя, с другой стороны, у пулеметчика за единицу времени несколько больше шансов выбить цель, чем у простого стрелка..
Сообщение отредактировал andrucio - Пятница, 24.10.2014, 00:07
Кампания А2 "Охотники за караванами" А3 для мишшенмейкеров: заставляем дома мебелью
|
alex70-03 › Пятница
› 24.10.2014
› 09:49
› Сообщение # 20
Генерал-полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1039
Индеец, когда я писал о микроструктуре боя, я прежде всего имел в виду действия юнита в плане занятия укрытий. Но А3 пока не позволит это сделать - консервная банка или дом, одинаково воспринимаются и размер в расчёт не берётся. Если бы разрабы придумали маркеры объектов не только по ИДу, а по категориям... Тогда бы можно было выбирать за что прятаться можно, а что не даст должного укрытия. Ещё было бы не плохо если бы вокруг объекта были шаговые зоны, выполненные в гексагональном виде. нумерация которых бы позволила просто спрятаться за них, или же, подойди к углу здания и вести огонь, и прятаться обратно.
|
Индеец › Пятница
› 24.10.2014
› 12:16
› Сообщение # 21
Полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 243
alex70-03, Во-первых: наткнулся в нете на статью, где описаны действия отделения. Кратко: в отделении формируются две огневые и одна маневренная группа, маневренная группа выдвигается вперед под прикрытием огневых групп, далее под прикрытием закрепившейся маневренной передвигаются огневые группы. Примерно такой-же порядок передвижения бойцов в группах. Нечто вроде передвижения уступами. Во-вторых: когда-то делал такую вещь: принимал условный радиус (например "1") и с помощью команды modelToWorld раскидывал вокруг бойца штук 12 позиций. Имея координаты цели, приподнимал каждую позицию на уровень лежащего бойца и на уровень сидящего. Затем с помощью terrainIntersect проверял, какая из позиций не видна цели если боец лежит, и видна если сидит. И, если такая позиция есть, то боец ползком туда двигался, садился, поражал цель и возвращался ползком. Если позиция не находилась - увеличивал условный радиус. Думаю что-то почудить с этим. Может еще что-нибудь в голову придет.
|
alex70-03 › Суббота
› 25.10.2014
› 09:20
› Сообщение # 22
Генерал-полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1039
Индеец, а вот это уже интересно))) Сильно грузил процессор такой скрипт, если на поле боя было 200 юнитов?
|
Индеец › Воскресенье
› 26.10.2014
› 20:43
› Сообщение # 23
Полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 243
alex70-03, делал для одного. Пробовал слепить супер снайпера. Не пошло. 1. Подходящие позиции, определяемые глазом сразу, иногда не попадали под сетку и юнит оставался на месте. 2. Если врагов несколько, нужно для каждого определять просматриваемость. 3. Пока юнит лезет ползком напропалую, его видно. Ну и т.д. Но идея осталась. Кстати вон andrucio, для домов делает расстановку мебели. Возможно по его примеру для каждого типа домов сделать шаблон прикрепленных к углам домов позиций-маркеров "шаговых зон" - как ты их назвал...Добавлено (26.10.2014, 20:43) --------------------------------------------- Интересную особенность нашел в команде nearestObjects. Как пишет некий Rube от 10.08.10 (не дословно): если вместо искомого типа объектов задать [], то команда вернет все объекты, включая камни, деревья и т.д. Т.е. можно определить для слепых юнитов, где находятся потенциальные объекты-укрытия. Осталось выбрать подходящие и с какой стороны юниту прятаться.
|
andrucio › Воскресенье
› 26.10.2014
› 22:06
› Сообщение # 24
Генералиссимус
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1334
Цитата Индеец (  ) команда вернет все объекты, включая камни, деревья и т.д. Слишком много получится, включая мух,пчелок и прочую хрень. Думаю, за консервной банкой не особо спрячешься:) К тому же, насколько я понимаю, у камней, деревьев и тд в А3 нет своего типа, то есть класснейма.. по крайней мере, мне не удалось его выцепить. Массив содержит лишь ИД и имя модели п3д
Кампания А2 "Охотники за караванами" А3 для мишшенмейкеров: заставляем дома мебелью
|
Индеец › Понедельник
› 27.10.2014
› 00:36
› Сообщение # 25
Полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 243
andrucio, да. Но можно проверить какие из объектов лежат на линии боец-цель.Добавлено (27.10.2014, 00:36) --------------------------------------------- Чушь написал. Объекты на линии можно вернуть lineIntersectsWith. Тоже возвращает камни и деревья.
|
alex70-03 › Вторник
› 28.10.2014
› 16:16
› Сообщение # 26
Генерал-полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1039
Посмотрел ролик с атакой. Если это скрипт, то зачётный. Понравилась атака и отход с обходом)))
|
andrucio › Вторник
› 28.10.2014
› 19:47
› Сообщение # 27
Генералиссимус
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1334
alex70-03, по ходу, раптор управляется игроком. Примерно с 2-35 наблюдается покраснение экрана как при ранении
Цитата Индеец (  ) Тоже возвращает камни и деревья Ну так возвращает только ИД и модель, нет?
Кампания А2 "Охотники за караванами" А3 для мишшенмейкеров: заставляем дома мебелью
|
Индеец › Среда
› 29.10.2014
› 03:58
› Сообщение # 28
Полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 243
andrucio, да. Тип объекта возвращается как "". Как я понимаю (возможно ошибочно), такие объекты типа не имеют. Упомянутый Rube писал, что запись "All" включает в себя объекты, имеющие какой-либо класс, а "" будет возвращать объекты без класса. Во всяком случае, так перевел переводчик Google. Хотя если говорить о зданиях, то выскакивает объект, имеющий подкласс "house".
Увлекшись взаимодействием с окружающими предметами, забыл, что концепции конечного результата по-прежнему нет. Можно придумывать разные косвенные задачи, решать их, но основная проблема останется нерешенной. Согласен, что грамотное передвижение в бою невозможно без использования укрытий. Но даже простой анализ местности для оного бойца тянет за собой огромный скрипт, для отделения - нагрузка возрастает в 10 раз. В скриптах обороны взаимодействие м-ду группами осуществлялось только передачей целей минометному взводу поддержки. Здесь же нужно реализовать реакцию на действия противника. Использовать два-три шаблона согласованных действий хотя-бы групп внутри отделения (как в боксе: умеем всего понемножку, но две три комбинации умеем лучше всех). Кстати, понемногу постигаем военное дело: -старшемукаждой боевой группы указывается : - направление наступления,
- полоса выдвижения,
- рубеж перехода в атаку (или условный сигнал
на переход в атаку), - способ атаки противника (с фронта, с выходом
во фланг или в тыл, одновременно с соседней боевой группой или самостоятельно, с применением средств задымления или без них), - объект атаки и направление продолжения
наступления
Пока не знаю, что такое полоса выдвижения, но пункт "способ атаки" может послужить как раз тем шаблоном, который я предлагаю. Использование дымовых гранат, при достижении рубежа атаки, считаю интересным. Опять-же, в долгожданном моде от RHS, группы представлены не как отделения, а как маневровая и огневая группы. Парни знают военное дело.
P.S. Прошу написанное не считать направлением работы или указанием на недостатки. Это лишь для того, чтобы упорядочить мысли в голове и показать свое видение задачи.
|
andrucio › Среда
› 29.10.2014
› 18:24
› Сообщение # 29
Генералиссимус
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 1334
Цитата Индеец (  ) Тип объекта возвращается как "" Вот-вот. А значит, с ним не получится оперировать, кроме как по ИД, а никакой системы соответствия, кроме визуального сопоставления (то есть ручного в редакторе) "ИД-тип_объекта" не существует. Помню, ты когда-то спрашивал как заставить ботов перекатываться.. удалось решить? Это было бы полезнее ныканья за камнями\тушками мертвых овец:) тем более, что это - как оказалось - сложнореализуемо Как и дымы. Я не знаю, видят ли боты сквозь дым, но если под огнем противника каждый из них кинет по шашке в сторону этого противника, то можно даже хорошо сманеврировать. Не помню в какой кампании (кажется, Antistasi с армаголика) группы диверсантов, заметив игрока, кидала дымы, и я ничего не видел какое-то время. Очень эффективно.Цитата Индеец (  ) имеющий подкласс "house" Лучше даже шире - "housebase", ибо в него и руины входят. Цитата Индеец (  ) способ атаки противника (с фронта, с выходомво фланг или в тыл, одновременно с соседней боевой группой или самостоятельно, Вся фишка в том, как оценить обстановку и в одних случаях переть фронтом а в других - обогнуть с фланга
Кампания А2 "Охотники за караванами" А3 для мишшенмейкеров: заставляем дома мебелью
|
Индеец › Среда
› 29.10.2014
› 23:47
› Сообщение # 30
Полковник
В увольнительной
- Группа:
- Пользователи2
- Сообщений:
- 243
andrucioЦитата как заставить ботов перекатываться.. удалось решить? Нет, не удалось. Причем в ASR моде боты лихо отклоняются, имея перед собой лишь палку! Цитата как оценить обстановку и в одних случаях переть фронтом а в других - обогнуть с фланга Нужно еще поковырять военную литературу. Думаю стандартную группу принудительно разделить на три. Построение: маневровая - в середине, огневые - по флангам. У каждой соответственно есть лидеры - у них узнать количество известных целей и сравнив показания, определить скопление противника. Это даст понять где больше противника: слева, справа или посредине. И вот тут самое интересное: как перемещать группы. Насколько я понял, группы уступами передвигаются на рубеж атаки. Указывается расстояние: "Рубежатаки назначается на расстояниях 100 - 150 м (иногда до 200 м)" до ближайшего противника. Атака тоже описывается: "Атакапротивника совершается как правилоследующим образом. огневые группы(или одна из них) отвлекает внимание противника и сковывают его действия на одном из направлений, а тем временем, маневровая группа незаметно продвигается на один из его флангов или в тыл. Свыходом к объекту атаки, маневровая группа ослепляет дымами и закидывает противника гранатами и во взаимодействиями с огневыми группами, одновременно атакой во фланг или тыл уничтожает его (захватывают в плен)". Т.е. Первая огневая вызывает огонь на себя, вторая поддерживает, а гасает по позициям противника уже маневровая группа. Причем заходит только с фланга. Возможно, атака по фронту идет при наличии слабых мест в обороне, или при наличии бронетехники, или при кратном превосходстве. Возможно я ошибаюсь, но глупо ломиться на позиции противника имея открытые фланги, где противник имеет возможность стрелять из каждого ствола. Если же зайти с фланга, то противник будет иметь перед собой своих же, т.е. плотность огня будет ниже. Предлагаю: - вышеуказанным способом определить фланг позиции отделения, где врагов меньше;
- скрытно сместить маневровую группу к указанному флангу;
- на противоположном фланге первая огневая немного(на сколько?) выдвигается, залегает и открывает огонь;
- маневровая группа мощным броском проникает на фланговые позиции противника;
- одновременно вторая огневая группа в боевом режиме передвигается на позиции первой группы;
- маневровая двигается по позициям противника на соединение с огневыми группами.
Нужно пробовать. А то: "Гладко было на бумаге, да забыли про овраги". Есть несколько вопросов: - как определить координаты точек перемещения для групп (позиция лидера вражеской группы, среднее арифметическое координат врагов в списках целей или еще как-то);
- при каком соотношении сил начинать атаку и при каком отступать (можно поиграть с "courage");
- действия при наличии бронетехники - отдельная тема;
- действия при наличии артподдержки - отдельная тема.
|