Oolite
Имя
Пароль
 Запомнить
  ИИ на основе приоритетов
Не в сети
Above Average

Зарегистрирован: 27.11.16
Сообщений: 40
Здесь решается задача - научить НПС избегать перегрева около солнца, контролируя температуру корабля и расстояние от солнца на основе написания дополнительных параметров в AI на Javascript.

Добавил возможность (сообразительность) НПС-кораблей избегать перегрева около солнца. Они в бою(да просто когда курсируют) около солнца не обращают внимание на этот фактор и погибают от перегрева. ИИ(иск.интеллект) можно наложить на другие корабли.

Например: если поправить в shipdata.plist ai_type = "oolite-pirateAI.js" на ai_type = "oolite-pirateAI-for-stealth.js" или набрать прямо в консоли команду, преварительно выбрав целевой корабль:
Код:
PS.target.setAI("oolite-pirateAI-for-stealth.js"))


Пришлось добавить в существующую библиотеку ИИ(oolite-priorityai) дополнительные компоненты. Пока выделил в виде отдельного world-scripts, что бы не нарушить поведение других НПС. И добавить дополн. условия в базовые ИИ, которые сохранениы как : хххх-for-stealth.js

Внимание: Ещё разработка не закончена, есть разные версии ИИ. Предложения приветствуются.
Обновление ИИ ведется в рамках другого пакета Stealth Raiders.

Оно оформлено в виде отдельного пакета.
Ссылка:
https://drive.google.com/file/d/0B9bGdq ... sp=sharing

---

Что бы увидеть разницу в ИИ так же можно применить около солнца для любого корабля новый ИИ набрав в консоли Oolite Debug команды:
Код:
PS.target.setAI("oolite-bountyHunterAI-for-stealth.js")
PS.target.setAI("oolite-pirateAI-for-stealth.js")
PS.target.setAI("oolite-escortAI-for-stealth.js")


и т.д. по списку хххх-for-stealth.js

Проверка версии ИИ:

Код:
PS.target.AI
PS.target.AIScript


Выход из последнего ИИ:
Код:
PS.target.exitAI()

Для просмотра роли:
Код:
PS.target.primaryRole


Последний раз редактировалось rustem 30.12.16, всего редактировалось 1 раз.

  Re: ИИ на основе приоритетов
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
to rustem

AI - очень интересное направление.
По своему опыту дилетанта знаю две вещи
а) Oolite - достаточно сложная среда и даже опытные разработчики, похоже, не в состоянии уверенно ориентироваться во всех аспектах. Ну то есть опытный разработчик может вдумчиво вкурить мануалы и понять, если решение задачи есть, как оно работает, но если решения еще нет, почувствовать его может не везде. Излагаю сумбурно, но думаю, кодер поймет.
б) Кривая обучения скачкообразная. Бывает, вообще непонятно, как к задаче подойти, в потом - фазовый переход и задним числом непонятно, что вообще непонятно-то было.

Это я к чему веду. AI как бы не для большинства разработчиков вообще слепое пятно, мануал даже начального уровня здорово помог бы. Именно что на основе личного опыта. Я сейчас вот думаю - эх, вот бы была возможность объяснить себе тогдашнему четыре года назад разницу между свойством, событием и методом в ЖабаСкрипт - кучу сил бы съэкономил. Сейчас-то я это понимаю, но кто бы мне тогдашнему это объяснил :(


  Re: ИИ на основе приоритетов
Не в сети
Above Average

Зарегистрирован: 27.11.16
Сообщений: 40
Можно попробывать разные варианты, очень понятный пример по ИИ на JS:
http://wiki.alioth.net/index.php/Oolite ... I_Tutorial, для начала может его перевести на русский, хотя там и так ясно с гугл-транслейт.

Второе, просто посмотреть простой ИИ: например солнеч. скимеров: route2sunskimAI.plist. Но это другая тема, ИИ на основе плейлистов, его нужно разбирать отдельно.

Если изучить ИИ на JS, то в некоторых акпектах то же сводиться к пониманию: свойств, событий и т.д. Лично для меня понятным является, пока что ИИ на JS. Там иногда очень много темплейтов и встроенных функций и нужно их изучать.

Базовая документация по по ИИ на JS:
http://wiki.alioth.net/index.php/Oolite ... umentation


  Re: ИИ на основе приоритетов
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
To rustem

Про мануалы на EliteWiki я в курсе, проблемы языкового барьера у меня нет, но как и в любой новой теме, нет пока интуитивного понимания возможностей инструмента и ограничений. И вот этот порог вхождения приводит к тому, что лезть в незнакомую тему нет желания, пока не допекло, что без этого никак не обойтись. Вот тогда придется вдумчиво курить эти мануалы, да :)
Обучение на примерах - да собственно, свои пакеты делать так и учился поначалу. Но такой подход при отсутствии ясного понимания чреват тем, что код получается горбатым и неоптимизированным.
Другое дело, что не всякий кодер хочет и может найти время на изложение очевидных для него вещей. Петрович в свое время затеял было учить молодняк на примерах своих пакетов, но идея заглохла, так как геймеру что-то допиливать в коде нафиг не нужно, а опытному кодеру его примеры ни о чем. Да и код у него очень тяжелый для чтения несмотря на обилие комментов. Но несколько ценных моментов я из его материалов все же ухватил в свое время.
Боюсь, основная проблема в том, что русское сообщество разработчиков Оолита очень малочисленное и разрозненное, такой активной обратной связи, как на буржуйском форуме, и близко нет.


Новая тема  Ответить  
Показать сообщения за:  Сортировать по:  









Список форумов / Создание OXP