Вопрос по организации планирования

Форум для всего, что связано с ИИ.

Вопрос по организации планирования

Сообщение bwolf88 22 дек 2014, 14:29

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

Есть несколько разнокалиберных скриптов, каждый из которых отвечает за некоторое действие: идти, искать, копать и т.п.
1. Требуется создавать цепочки таких действий в произвольном порядке.
2. Желательно чтобы каждый класс действий был автономным, то есть независимым от остальных.
Каким образом можно без использования флагов в Update и корутин произвести некую последовательность различных действий (вызов разных скриптов) и вообще составить цепочку действий ?
Может есть какая то схема сообщений или еще что то ?

Подскажите :).
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Вопрос по организации планирования

Сообщение Tolking 22 дек 2014, 14:31

Машина состояний. (Конечный автомат)
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Вопрос по организации планирования

Сообщение BenjaminMoore 23 дек 2014, 11:09

Синтаксис:
Используется csharp
    public class Test : MonoBehaviour
    {
        private Action logic;

        void Awake()
        {
            var firstModule = new Module("I'm first!");
            var secondModule = new Module("I'm second!");

            logic += firstModule.Run;
            logic += secondModule.Run;
        }

        void Update()
        {
            if(logic != null) logic();
        }


    }

    public class Module
    {
        private readonly string mes;
        public Module(string message)
        {
            mes = message;
        }

        public void Run()
        {
            Debug.Log(mes);
        }
    }
 


самое простое и эффективное это использовать делегаты
над этим примером можно спокойно накрутить менеджер, который будет разруливать приоритеты, хранить дополнительные аргументы, работать с разными делегатами, чистить и так далее
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore

Re: Вопрос по организации планирования

Сообщение Woolf 23 дек 2014, 12:15

причем тут делегаты? Делегаты это уже реализация, а человек спрашивает об организации. Только я не очень понял смысл его вопроса ))
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Вопрос по организации планирования

Сообщение BenjaminMoore 23 дек 2014, 13:58

Woolf писал(а):причем тут делегаты? Делегаты это уже реализация, а человек спрашивает об организации. Только я не очень понял смысл его вопроса ))

Каким образом можно без использования флагов в Update и корутин произвести некую последовательность различных действий (вызов разных скриптов) и вообще составить цепочку действий ?

это был ответ на этот вопрос
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore

Re: Вопрос по организации планирования

Сообщение bwolf88 23 дек 2014, 15:24

Благодарю, буду разбираться :). Уже второй человек который предлагает мне сунуться в делегаты, похоже от них не отвертеться :D.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Вопрос по организации планирования

Сообщение lwe 23 дек 2014, 15:33

Это полезная вещь, ну есть еще и события. А если честно не понимаю зачем здесь делегировать в апйдете!? - зачем именно вызывать методы какого то процесса причем всех сразу, ведь по идеи нужно только вызывать текущий? Вам ведь всеравно придется иметь гдето статический флаг или счетчик который будет показывать реальный номер вызова - тогда уже лучше сразу начать с потоков где вы четко сможете выполнять какието процессы от флага до флага.
lwe
UNITрон
 
Сообщения: 261
Зарегистрирован: 24 авг 2014, 14:20
Skype: lawsonilka


Вернуться в Искуственный Интеллект

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2