Разработка миссии на основе Simulator Scripting Engine - ED Forums
 


Notices

Reply
 
Thread Tools Display Modes
Old 11-04-2012, 08:32 PM   #1
BAntDit
Member
 
BAntDit's Avatar
 
Join Date: Aug 2010
Posts: 974
Send a message via ICQ to BAntDit
Default Разработка миссии на основе Simulator Scripting Engine

Приветствую,

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

http://forums.eagle.ru/showpost.php?...&postcount=295

На данный момент у меня две новости - хорошая и плохая.

Начну с хорошей: демо-миссию по динамическим брифингам я сделал! протестил, вроде даже не плохо всё работает. Миссия приатачена в конце поста.

А теперь плохая: в процессе создания миссии вскрылось много багов в Simulator Scripting Engine и поэтому реализовать мне её пришлось не совсем так как планировал заранее, а именно:
1. Как оказалось не работает trigger.action.outTextForGroup
обсуждение:
http://forums.eagle.ru/showpost.php?...&postcount=498
http://forums.eagle.ru/showpost.php?...&postcount=502
http://forums.eagle.ru/showpost.php?...&postcount=503

Для решения этой проблемы мне пришлось воспользоваться возможностями
Slmod - т.е. чтобы миссия работала, надо чтобы на сервере на котором она запущена был установлен Slmod v6.1.

2. Вторая проблема это перехват событий S_EVENT_PLAYER_ENETER_UNIT, S_EVENT_PLAYER_LEAVE_UNIT - как оказалась DCS World пока не умеет генерить события подобного типа.
http://forums.eagle.ru/showpost.php?...&postcount=500

Эту проблему пока никак не обойти, поэтому мне пришлось пока отказаться от идеи
выдавать задания игрокам, управляющим наземкой.

3. ещё куча всяких мелких ньюансов, из-за которых я потратил много и нервов и заработал прядь седых волос...
-------------------------------------------

Теперь собственно о самой миссии:

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

Для формирования динамических брифингов я разделил миссию на фазы. Каждая фаза
может быть в трех состояниях - не начата, активная и завершена.

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

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

В этой демо-миссии я не особо напрягал фантазию - тут у меня всего 4 борта, несколько групп наземок и 5 фаз. Разные борта привязаны к разным фазам и по ним у они получают информацию.

Например: есть наземная группа hitman - она движется со стороны Бабушары в сторну Очамчиры. Всё движение является фазой с именем Hitman movement.

Это фаза привязана к борту ка-50 на Бабушаре - вот он то и будет получать информацию при взлете, что группа Hitman сейчас в пути и ему приказ сопровождать.

На пути группы Hitman я наставил БТР-ов, которые будут их периодически обстреливать - более того, после каждой перестрелки брифинг ситуации для Ка-50 будет обновлять и при взлете пилот Ка-50 будет получать информацию где последний раз произошла перестрелка.

На Гадауте есть пара А-10 их брифинг зависит движения группы Papa Bear.
Есть Су-25 у него брифинг зависит от того живо или нет ПВО.
-------------
Вот. Это мой пример, вы по примеру в моей маленькой демо-миссии можете в своих миссиях создать такую же систему динамической выдачи заданий.
-------------
Для того, чтобы понять как и что работает распакуйте миссию и посмотрите внутри неё скрипты весь код в скриптах прокомментирован и легкий для понимания.

Для понятности скрипты лучше смотреть в той же последовательности как они вызываются в миссии.

Исключение составляет скрипт mission.lua - вот его описание:

Quote:
-- mission.lua
--
-- этот скрипт создает оболочку для Simulator Scripting Engine с целью более удобного использования возможностей Scripting Engine
-- некторые возможности котрые дает данный скрипт:
-- 1. возможность привязки обработчиков событий непосредственно к группам
-- 2. возможность привязки обработчиков событий непосредственно к юнитам
-- 3. возможность быстрого управления поведением групп:
-- UnitsGroup.holdOn(self) - приказать остановиться
-- UnitsGroup.holdOnForAWhile(self) - приказать остановиться на указаное время
-- UnitsGroup.moveOn(self) - приказать выдвигаться
-- UnitsGroup.atEase(self), UnitsGroup.stayAlert(self) - переключать походные, боевые режимы
-- UnitsGroup.shootBack(self), UnitsGroup.fireAtWill(self) - управлять огнем групп
-- и т.д.
-- 4. возможность динамически планировать и назначать задачи группам.
-- 5. возможность назначать фазы миссии (содержащие описание этапов миссии, задачи для игроков)
-- возможность динамически управлять фазами и динамически информировать игроков о ходе миссии
-- и другое...
-- это пока не финальная версия (собственно как и у самого Simulator Scripting Engine ещё далеко не финальная версия
-- как говорят разработчики)
-- придется ещё и свои баги тут править и подстраиваться под будущие изменения Simulator Scripting Engine
-- подробное описание возможностей этого скрипта выложу, позднее.
-- Код скрпита универсальный и может быть использован в любой миссии, для его использование
-- скрипт необходимо выполнить через триггерное действие do script file c первых секунд миссии.
т.е. его вы просто можете себе копировать в миссию, не вдаваясь в подробности его работы.
----

приложенную миссии я протестировал летая у себе на сервере один,я надеюсь багов не возникнет при одновременном полете нескольких игроков.

Ещё некоторые особенности:
1. всякие привязки обработчиков событий и т.п. выполняются один раз в первые 5 сек. после начала миссии - так что если вы умудритесь взлететь сразу после начала миссии быстрее чем за 5 сек брифинг вам не видать
2. У меня в английском DCS World-е сообщения на русском (кирилицей) выводятся в виде кракозябров, поэтому у меня был выбор либо использовать транслит, либо писать
на английском с ошибками (я англ. не очень знаю) - я выбрал второе, надеюсь, это никого не смущает, что сообщения в брифингах на английском.
3. Миссии именно сетевая - не пытайтесь запустить как одиночную или запустить через редактор.
4. Миссия требует Slmod - об этом я писал выше, надеюсь требование временное.

-----
ну вот собственно и всё. Смотрим, комментируем, задаем вопросы, если у кого-то есть интересные идеи, которые сложно воплотить в редакторе, то пишите - буду рад помочь реализовать.

-----
Крайняя версия MSF: http://forums.eagle.ru/attachment.ph...7&d=1382379803
Attached Files
File Type: miz dynamic_briefing.miz (28.4 KB, 292 views)
File Type: lua msf.lua (206.3 KB, 675 views)
File Type: lua textToVoice.lua (3.8 KB, 191 views)
File Type: lua sound_map.lua (8.8 KB, 172 views)
File Type: pdf msf_mission_developers_guide.pdf (1.32 MB, 1029 views)
File Type: lua msf_beta_1.0.2.lua (272.0 KB, 301 views)

Last edited by BAntDit; 01-24-2014 at 04:25 PM.
BAntDit is offline   Reply With Quote
Old 11-05-2012, 06:16 AM   #2
edwardpashkov
Senior Member
 
edwardpashkov's Avatar
 
Join Date: Nov 2008
Location: Йошкар-Ола
Posts: 2,898
Default

Ай молодца!!! Я все жду норамальных релизов, даже не смотрю что там сделали, что бы переписывть не пришлось, зная приколы ED. Видимо нужо будет поглядеть. Вдруг мысли появтся.
__________________

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)
Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время
Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Last edited by edwardpashkov; 11-05-2012 at 06:18 AM.
edwardpashkov is offline   Reply With Quote
Old 11-06-2012, 10:45 AM   #3
Brodiaga
Member
 
Brodiaga's Avatar
 
Join Date: Jul 2009
Location: Kedainiai-Odessa
Posts: 727
Send a message via ICQ to Brodiaga
Default

BAntDit, ты просто Геракл.... )
Молодец!
Brodiaga is offline   Reply With Quote
Old 11-10-2012, 02:49 PM   #4
BAntDit
Member
 
BAntDit's Avatar
 
Join Date: Aug 2010
Posts: 974
Send a message via ICQ to BAntDit
Default

У меня готов очередной пример, что можно сотворить, если использовать
Scripting Engine для написания миссий.

На прошлой неделе Edwardpashkov предложил идею реализовать работу ПВО, так чтобы она выглядела более реалистично, ну вот и сегодня у меня готов пример такой реализации.

Как и в прошлый раз это миссия только пример, показывающий способ реализации, но если вы хотите в своей миссии реализовать такую же работу ПВО этот
пример вполне может быть взят за основу.


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

основные особенности демо-миссии:

Quote:
1. Обзор обеспечивает РЛС находящаяся глубоко в тылу.
2. Каждый расчет ПВО обеспечивает дежурство только в своей зоне, получая информацию
от обзорной РЛС и не используя собственные РЛС для поиска целей.
Зоны дежурства заданны триггерными зонами.
(это чисто для визуального обозначения зон в редакторе, можно было и без них обойтись)
3. РЛС дежурных расчетов НЕ пытаются светить на расстояния, с которых они не достанут противника и НЕ пытаются облучать зоны, которые не относятся к их зоне дежурства.
Тем самым дежурные расчеты не обнаруживают себя без нужды.
4. Собственные РЛС расчеты используют только для атаки целей.
5. При уничтожении обзорной РЛС расчеты переходят на поиск целей собственными
РЛС
6. При уничтожении машины связи
в дежурном расчете - расчет начинает работать так как будто обзорной РЛС нет
(в качестве машин связи у меня Buk CC - но вообще можно было поставить любой юнит).
7. При входе противника в зону дежурства, дружественные войска получают от ПВО
информацию о ЛА вошедшем в зону, о его типе, скорости и высоте
.).
(В данной демо-миссии сообщение при входе в зону выдается всем для удобства тестирования, но в реальной миссии можно выдавать сообщение только нужной коалиции или группе, при использовании Slmod вообще отдельному юниту).
Предложенная реализация пригодна для использования как в сетевых так и в одиночных миссиях.
Никаких особых требований нет.
Демо-миссия протестирована мной на DCS World 1.2.2.

Ниже приложил два варианта миссии: sam_ambush - с A-10C и sam_ambush_su25 с Su-25T (т.к. пока русский world не вышел, модули есть ещё не у всех.)

В скриптах в этот раз комментарии не писал, я думаю код у меня итак вполне читаемый и понятный.
миссия содержит всего три скрипта:

mission.lua - скрипт с основной функциональностью, в него можно вообще не заглядывать, т.к. он универсальный для всех миссий.
init.lua - содержит функции-обработчики событий вхождения в зоны ПВО и выхождения из зон ПВО, связывает обработчики с конкретными юнитами и объектами.
on_kill.lua - содержит код, выполняемый при уничтожении некоторых элементов системы ПВО.

Будут вопросы спрашивайте.

P.S.: жду предложений какие ещё фичи было бы полезно реализовать.
Attached Files
File Type: miz sam_ambush.miz (15.4 KB, 221 views)
File Type: miz sam_ambush_su25.miz (15.4 KB, 182 views)

Last edited by BAntDit; 11-10-2012 at 03:16 PM.
BAntDit is offline   Reply With Quote
Old 11-10-2012, 03:23 PM   #5
edwardpashkov
Senior Member
 
edwardpashkov's Avatar
 
Join Date: Nov 2008
Location: Йошкар-Ола
Posts: 2,898
Default

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

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)
Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время
Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.
edwardpashkov is offline   Reply With Quote
Old 11-10-2012, 03:56 PM   #6
BAntDit
Member
 
BAntDit's Avatar
 
Join Date: Aug 2010
Posts: 974
Send a message via ICQ to BAntDit
Default

Да, я завтра днем смогу появится в ТС-ке.
BAntDit is offline   Reply With Quote
Old 12-12-2012, 09:18 AM   #7
Bambr
Member
 
Join Date: Dec 2012
Posts: 346
Default

Я правильно понял, что все возможности SSE изложены на этих страницах:
http://en.wiki.eagle.ru/wiki/Simulat...d_1.2.1/Part_1
http://en.wiki.eagle.ru/wiki/Simulat...d_1.2.1/Part_2
?
А то задался вопросом ремонта зданий и не нашел как это можно осуществить.
__________________
Intel Core i3-530 2,93 ГГц, NVIDIA GTX660, Corsair XMS3 DDR-III DIMM 8 Gb KIT 4*2Gb, LCD 1920x1080
Bambr is offline   Reply With Quote
Old 12-12-2012, 12:04 PM   #8
BAntDit
Member
 
BAntDit's Avatar
 
Join Date: Aug 2010
Posts: 974
Send a message via ICQ to BAntDit
Default

Quote:
Я правильно понял, что все возможности SSE изложены на этих страницах
Да. (Singleton class env описан не полностью. Есть ошибки в описании некоторых других классов, но в целом да - это пока всё, что есть)

Quote:
А то задался вопросом ремонта зданий и не нашел как это можно осуществить.
Это нельзя осуществить.

Last edited by BAntDit; 12-12-2012 at 12:10 PM.
BAntDit is offline   Reply With Quote
Old 12-12-2012, 06:33 PM   #9
димок
Veteran
 
димок's Avatar
 
Join Date: Oct 2010
Posts: 4,246
Default

Бандит , вопрос такой-
Делаем разведгруппы , к примеру из юнита хамви/бтррд , ставим ему в свойствах невидимость для ии . Все бы ничего, но игрок может воспользовавшись "невидимостью " начать атаковать противника, не есть гуд . по этому невидимость нужно снять при выстреле этим юнитом.
Те
1-как отследить ведение огня определенным юнитом (может быть полезно и в других случаях)?
отвлечённый вопросы
1)можно остследить видит юнит противника или нет, к примеру ставим ПАН с задачей указать по обстановке , и соот вественно надо "тригер. услов." вижу противника, с выводом сообщения "свяжись со мной на такойто частоте".
2) если есть а10 протести следущий вопрос - делаем юнит ПАНОм - берем под управление игроком - подьезжаем к группе противника - связываемся А10 с ПАН. Те будет ли ИИ юнита несмотря на то, что он управляется игроком работать в качестве ПАН? а при взятии цели в захват?
димок is offline   Reply With Quote
Old 12-12-2012, 11:10 PM   #10
димок
Veteran
 
димок's Avatar
 
Join Date: Oct 2010
Posts: 4,246
Default

Полетал , почитал в меру способностей .

mission.model.units.dog_ear_1:enableDetectionIntersectionOfZones(false);
mission.model.units.sam_ambush_1_4:enableDetectionIntersectionOfZones(false);
mission.model.units.sam_ambush_2_4:enableDetectionIntersectionOfZones(false);

Если правильно понял - это аналог юнит в зоне, хотя не, не понял у меня выходит , что отслеживается пересечение тригерных зон , а зона "сборка" где?

Похоже хитрость с резерным радаром не сработает, скорее всего баг у ЕД , но может и у тебя.(выполнение команды вкл ии группы может, может активировать и запасной радар).
Хитрее надо делать дотестю поделюсь

Достаточно дописать по побдобию mission.model:addUnit('thunder_1'); другие самолеты и работать будет для всех них.

Давится Бук на раз , время от вкл излучения до пуска слишком большое , первый на дальности 18 км , У ЕД не работают опции поведения боевая готовность авто/тревога.

Last edited by димок; 12-30-2015 at 11:11 AM.
димок is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT. The time now is 11:24 AM. vBulletin Skin by ForumMonkeys. Powered by vBulletin®.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.