искусственный интеллект для майнкрафт
Minecraft Wiki
Из-за новой политики Microsoft в отношении сторонних ресурсов, Minecraft Wiki больше не является официальной. В связи с этим были внесены некоторые изменения, в том числе и обновлён логотип вики-проекта. Подробности на нашем Discord-сервере.
ИИ мобов
Искусственный интеллект мобов (сокращённо ИИ) — набор программных методик, который призван смоделировать нужное поведение мобов, их действия в определенных ситуациях и т. д. Каждый моб в Minecraft обладает своеобразной системой искусственного интеллекта, которая отличается механикой и поведением. Дружелюбные мобы будут путешествовать по окрестностям, пока им не нанесут повреждение(после чего начнут убегать от источника урона), тогда как агрессивные станут атаковать игрока сразу, как он подойдёт к ним на расстояние 16 блоков и меньше (в зависимости от моба). Нейтральные мобы будут вести себя как дружелюбные, пока их не атакуют, затем их система поведения станет аналогичной агрессивным. Но бывают исключения. Например, с версии 1.14.4 собаки будут по своей воле атаковать агрессивных мобов, кроме крипера.
Содержание
Дружелюбные мобы [ ]
Деревенские жители [ ]
До версии 1.14 [ ]
Деревенские жители обладают сложной системой ИИ. Когда только их добавили в игру, их поведение заключалось в постоянном пребывании внутри домов, разворачиваясь лицом к игроку.
После версии 1.2.3 взрослые жители стали общаться друг с другом — иногда они останавливаются один возле одного и смотрят некоторое время. В то же время, несовершеннолетние жители иногда бегают друг возле друга, имитируя игру в пятнашки. Все жители заходят в свои дома, как только начинается дождь или наступает ночь, либо когда на деревню нападают враждебные мобы (не касается рейдов)
В и после версии 1.14 [ ]
Поведение жителей ещё усложнилось: теперь они имеют квалификацию своей профессии и, если являются новичками своего дела, могут сменить работу. Теперь могут запоминать свой собственный дом (кровать) и спать. После удара о колокол в спешке бегут по своим домам. Чтобы получить профессию жителю необходимо найти соответствующий блок; безработные жители активно ищут себе работу, если игрок попробует вступить в торговлю с безработным жителем, то тот только покачает головой.
Жители также теперь имеют свой график работы, собирательства ресурсов для ремесла и размножения. При создании товаров жителем блок издаёт соответствующий звук создания на нём предмета.
Странно, но при набеге на деревню они не пытаются спрятаться в домах, а вместо этого бегают по всей деревне. При набеге лучше запирать жителей в доме, и застроить дверь блоком до окончания набега.
Курицы [ ]
Курицы бесцельно бродят по миру. Игрок их интересует только тогда, когда он держит какие-либо семена (в т.ч. тыквы, арбуза, свёклы, пшеницы и семена адского нароста(только для Pocket Edition)). Если подойти к курице с семенами в руке, она начнет следовать за вами, и её возможно будет покормить.
Враждебные мобы [ ]
До обновления 1.0 враждебные мобы, такие как зомби, криперы и пауки, преследуя игрока, не обращали внимания на препятствия на их пути (обрывы, озёра с лавой и т.п.)
Зомби [ ]
Зомби атакует игрока, направляясь к нему по прямой линии, пока не подойдёт вплотную. Преследуя игрока, они не обращают внимания на препятствия на своём пути и продолжают преследование при любых обстоятельствах. Зомби может также атаковать и преследовать деревенских жителей.
До обновления 1.2 [ ]
Зомби не могут обходить пропасти или скалы на своём пути. Однако в случае соприкосновения с непроходимой поверхностью, они пытаются перепрыгнуть её.
ИИ после 1.2 [ ]
После наступления дня зомби стараются спрятаться в тёмные места, например, под кроны деревьев, пещеры или погружаются в воду, чтобы избежать смерти от возгорания. Так же они способны обходить препятствия, встречающиеся на пути. Но если замечают игрока, выбираются из укрытий.
Скелет [ ]
Скелет будет отходить от игрока после попадания, и будет постоянно держаться на дистанции от 6 до 12 блоков (только в атакующем состоянии).
До 1.2 [ ]
Если один скелет случайно попадёт стрелой в какого-либо другого враждебного моба, они начнут атаковать друг друга, пока один из них не умрёт. Затем выживший моб начнёт атаковать игрока.
После 1.2 [ ]
Скелеты получили такой же защитный механизм от возгорания на солнечном свете, как и зомби — они прячутся в тени деревьев, в воде и пещерах при наступлении дня.
Скорость передвижения у пауков почти равна обычной скорости передвижения игрока. При атаке они стараются прыгнуть на игрока. При уровне освещения 9 и выше они не будут нападать на игрока до тех пор, пока он первым не нанесёт им повреждение. Также они могут взбираться по вертикальным поверхностям и не горят на солнце. 1.14.3 PE Пауки тоже, как зомби и скелеты, могут прятаться от солнца.
Крипер [ ]
Криперы подготавливаются к взрыву, когда подходят к цели на расстояние 1 блок. Они взрываются через 1,5 секунды после «активации», если только игрок не отошёл от них на расстояние 4 блока. До 1.2 они подходили к игроку слева. После 12w05a они получили такую же систему интеллекта, как и у зомби и скелетов, однако криперы не сгорают на солнце, как и пауки. Находясь в режиме преследования игрока, они будут стараться обходить или перепрыгивать препятствия.
Криперы имеют самую сложную систему поиска пути. Поскольку им необходимо любым способом подойти к игроку вплотную, они часто скрываются, и, как кажется, устраивают засады.
Криперы убегают от оцелотов и кошек. Это иногда очень полезно, поскольку кошки могут сопровождать игрока и отпугивать криперов.
Слизень [ ]
В отличие от других мобов, целью слизней всегда является именно игрок или железный голем, снежный голем (снеговик). Они двигаются к ближайшему игроку по прямой траектории, даже если он находится за стеной. Если в радиусе 16 блоков нет ни голема ни игрока, они прыгают в произвольном направлении, пока не наткнутся на препятствие, после чего разворачиваются в другую сторону.
Программируем в мире Minecraft
Хабр, привет! Пока все обсуждают ИИ в мире Pacman, мы начнем делать свой ИИ в Minecraft с фреймворком Malmo от Microsoft Research. Pacman у нас тоже появится. Если вы любите кубический мир, или вам хотелось бы начать изучать искусственный интеллект, или у вас есть дети, с которыми вы не можете найти общие увлечения, или же вас просто заинтересовала тема – прошу под кат.
В этой статье я постараюсь затронуть несколько тем:
Minecraft: моя предыстория
Я познакомилась с игрушкой, будучи уже студенткой. Это не помешало мне в тот же день отложить все свои личные, рабочие и академические цели, и целиком уйти в кубическую вселенную. Отпустило меня тогда только через месяц, но до сих пор я с радостью захожу иногда побегать часок по любимому миру.
Для меня Minecraft стал продолжением любимой игрушки детства – Lego, исправив ее главный недостаток: постоянную нехватку деталей. Аналог Lego с безлимитными деталями, что может быть лучше.
Изучая сабж, я случайно узнала, что мир Minecraft не ограничивается игрой, мерчем, летсплеями и фан артами. В игре снимают целые сериалы, и – неожиданно – они являются довольно популярными. На мой взгляд, это забавно.
Меня очень обрадовала новость о наличии open source фреймворка для программирования в мире Minecraft. Я твердо уверена, что в будущем в подавляющем числе профессий могут понадобиться базовые навыки программирования. Фреймворк на базе любимой игрушки, на мой взгляд, отличный способ показать ребенку захватывающий мир программирования.
Malmo: основная идея
Фреймворк Malmo был создан совместными усилиями нескольких исследователей, главной целью которых было адаптировать интересный мир к экспериментам в области искусственного интеллекта. Алгоритмов ИИ по-прежнему относительно мало, и все они имеют огромный потенциал для более детального изучения и усовершенствования. Мне очень нравится, что Microsoft создает дополнительную мотивацию к изучению неизведанного.
Технические моменты
Установка
Несмотря на четкое следование инструкции, вы можете столкнуться с целым рядом проблем в процессе установки. Мои проблемы в основном были связаны с тем, что некоторые компоненты у меня уже были поставлены, но версия отличалась. Все проблемы лечатся с помощью всем известного сайта.
Поддержка ОС и языков программирования
Несмотря на смелое заявление о поддержке всех трех популярных ОС, мне показалось, что тестирование было как следует проведено лишь для ОС Windows. Победив проблемы с установкой, ваша головная боль на ОС Windows обещает закончиться. На Linux проблемы, скорее всего, продолжатся, так как поднятый сервер периодически падает, не сообщая причин. Если вы продолжите мои эксперименты – обязательно пишите в комментарях о вашем опыте.
Авторы постарались поддержать большое число популярных языков и сделали обвязки для C#, C++, Lua, Python2 и Java. Я выбрала Python.
Как играть программировать в Malmo
Логику для каждого из человечков вы можете реализовать в коде, а также можно управлять персонажем самостоятельно всем знакомыми клавишами AWSD.
Кроме сервака с клиентом и файла с логикой, мы также имеем xml файл с описанием начального состояния мира. Авторы не настаивают на его существовании, и в своих примерах они часто кладут его в строку и хранят в коде, но, на мой взгляд, удобнее сразу сделать его отдельным файлом, добавляя нужные куски по мере необходимости.
Авторы позаботились о нас и сделали внушительное число примеров, добавив к ним описание.
Мой совет: не пытайтесь начинать с нуля, возьмите за базу первый пример. В нем ничего не происходит, мы просто создаем самый простой плоский мир и присоединяемся к персонажу. В цикле while в конце вы можете по своему усмотрению добавить экшена в происходящее. Например, напишите там:
В xml файле вы можете задать режим игры:
Задайте начальное время, позицию персонажа, кастомизируйте мир: сделайте его плоским или приближенным к реальности.
Вот этот код нарисует вам Пакмана, который поедает шарики и уходит в радужный кратер:
Наконец, в xml можно добавить необходимые координаты для добавления обзора персонажу:
По умолчанию у нас нет возможности осмотреться и получить информацию о ближайших блоках. Тем не менее, мы можем сказать, что хотим знать, что находится вокруг нас. Учтите, что в этом случае нам нужно использовать относительные координаты, отсчитываемые от кубика с ногами героя. В результате выполнения подобной строчки:
Мы получим массив со строками. Каждая строка – это текстовое представление типа одного из кубиков.
Таким образом можно создать ИИ, который исследует мир, ищет что-либо и не умирает по глупым причинам. Простейший вариант без использования машинного обучения я реализовала тут.
Фичи для ИИ
Конечно же, первое, что мне захотелось увидеть для реализации алгоритмов ИИ в malmo – это возможность двигаться дискретно. В вопросе ИИ и так хватает сложностей, и не хочется добавлять ко всему прочему постоянную корректировку направления и скорости движения.
Включаем нужное в xml так:
К сожалению, этого будет недостаточно. Чтобы двигаться дискретно, ваше начальное положение должно быть строго в центре кубика:
Целые координаты поставят вас в пересечение кубов, персонаж откажется двигаться с места, никаких предупреждений и ошибок вы не увидите. В туториале об этом также не предупреждают. Я потратила около 4 часов, чтобы осознать суть проблемы и сделать координаты x и z половинчатыми. (y отвечает за высоту и не играет роли в данной истории).
Кроме этого, исследователи добавили несколько приятных фич для решения задачи обучения с подкреплением (Reinforcement Learning). Алгоритмы этого типа подразумевают постоянное награждение или наказание искусственного интеллекта за те или иные действия. Разработчики продумали этот момент и добавили возможность прописать эти действия/события в xml, избавив код от постоянных одинаковых проверок. Вы также можете задать окончание игры по наступлению некоторого события:
Например, тут мы постоянно чуть-чуть наказываем персонажа за каждый шаг, не увенчавшийся победой; сильно награждаем за победу и наказываем за смерть; наконец, завершаем раунд в случае смерти или выигрыша.
Malmo: вывод
Авторы фреймворка подарили нам потрясающую возможность погрузиться в любимый мир с другой стороны. Malmo пока что находится в бете, во многих ситуациях он… заставляет совершенствовать свои навыки в troubleshooting. Тем не менее, его плюсы перевешивают все его минусы, а тот факт того, что исходники лежат в открытом доступе на github, позволяет нам самостоятельно доделать нужное место или создать issue для исправления критических багов.
Авторы проекта по понятным для меня причинам не упоминают ни в одной из статей возможность обучать детей на основе фреймворка: ребенок вряд ли справится с борьбой с мелкими, но частыми багами. Тем не менее, я уверена, что если родитель поможет своему ребенку и будет программировать вместе с ним, это даст отличные результаты и позволит вам провести время с пользой.
Malmo Challenge: история и результаты
Кроме самого фреймворка, Microsoft также проводил соревнование на базе платформы, названной Malmo Challenge. Оно было призвано побудить ученых и исследователей к работе над коллаборативными алгоритмами. Конкурс стартовал примерно полгода назад, а результаты появились 5 июня.
Суть челленджа в следующем: у нас есть плоский мир, забор сложной формы, внутри загона бегает хрюшка и ходит 2 человека. Наша задача – создать ИИ для одного из персонажей, которых сможет взаимодействовать со вторым, чтобы вместе они загнали хрюшку в замкнутое пространство. Второй персонаж может вести себя рандомно, может управляться человеком, другим ИИ, это может быть даже второй экземпляр вашего собственного ИИ.
При этом, вы можете получить максимальное число очков, поймав хрюшку, или же получить небольшое число очков, прыгнув в лужу сбоку. Вы не получите ничего, если ваш напарник решит прыгнуть в лужу, отказавшись от взаимодействия с вами.
Эта задача в общем виде называется Охота на оленя. Она была сформулирована еще в 18 веке Жан Жаком Руссо. Несмотря на внушительный возраст проблемы, до сих пор неясно, какой алгоритм наиболее эффективно решает поставленную задачу.
Я рада поделиться с вами результатами соревнования. Меня очень удивило распределение мест в турнирной таблице.
Первое место занял проект команды из Великобритании. Авторы трезво оценили сильный недостаток времени, поняли, что они вряд ли успеют адаптировать для задачи сложные существующие алгоритмы. Они выбрали Байесовский вывод для определения типа напарника, а также Марковские цепи для непосредственного игрового процесса. И победили.
Участники, занявшие второе место, решили взять самые сложные из существующих решений, они использовали DNN, Reinforcement learning, DQN, A3C model… И это все не помогло им обойти Байеса и Марковские цепи.
Подытожим статью мыслью о том, что нужно быть проще.
Если вам хочется также попробовать создать свой ИИ, присоединяйтесь к нашему русскоязычному чату про нейронные сети в Telegram. Там вы можете задать интересующие вас вопросы, а также поделиться вашими достижениями.
Видео с моим рассказом о Malmo на встрече Петербургского Python митапа уже появилось на моем канале на Youtube. Там также есть записи других моих лекций и прочая болтовня про IT.
Как сделать искусственный интеллект в майнкрафт
Эту статью нужно срочно обновить! |
Вы можете помочь, обновив содержимое статьи в соответствии с последними версиями Minecraft.
Искусственный интеллект мобов (сокращённо ИИ) — набор программных методик, который призван смоделировать нужное поведение игрового персонажа, его действия в определенных ситуациях и т.д. Каждый моб в Minecraft обладает своеобразной системой искусственного интеллекта, которая отличается механикой и поведением. Дружелюбные мобы будут путешествовать по окрестностям, пока им не нанесут повреждение, тогда как агрессивные станут атаковать игрока сразу, как он подойдёт к ним на определенное расстояние. Нейтральные мобы будут вести себя как дружелюбные, пока их не атакуют, затем их система поведения станет аналогичной агрессивным.
Дружелюбные [ править | править код ]
Деревенские жители обладают сложной системой ИИ. Когда только их добавили в игру, их поведение заключалось в постоянном пребывании внутри домов, разворачиваясь лицом к игроку.
После версии 1.2.3 взрослые жители стали общаться друг с другом — иногда они останавливаются один возле одного и смотрят некоторое время. В то же время, несовершеннолетние жители иногда бегают друг возле друга, имитируя игру в пятнашки. Все жители заходят в свои дома, как только начинается дождь или наступает ночь, либо когда на деревню нападают враждебные мобы.
Курицы бесцельно бродят по миру. Игрок их интересует только тогда, когда он держит какие либо семена (Семена тыквы, Семена арбуза, и Семена пшеницы ).
Враждебные [ править | править код ]
До обновления 1.0 враждебные мобы, такие как зомби, криперы и пауки, преследуя игрока, не обращали внимания на препятствия на их пути (обрывы, озёра с лавой и т.д.)
Зомби атакует игрока, направляясь к нему по прямой линии, пока не подойдёт вплотную. Преследуя игрока, они не обращают внимания на препятствия на своём пути и продолжают преследование при любых обстоятельствах. Зомби может также атаковать и преследовать деревенских жителей.
Зомби не могут обходить пропасти или скалы на своём пути. Однако в случае соприкосновения с непроходимой поверхностью они пытаются перепрыгнуть её.
После наступления дня зомби стараются спрятаться в тёмные места, например, под кроны деревьев, пещеры или погружаются в воду, чтобы избежать смерти от возгорания. Так же они способны обходить препятствия, встречающиеся на пути. Но если замечают игрока, выбираются из укрытий.
Скелет будет отходить от игрока после попадания, и будет постоянно держаться на одном расстоянии от своего врага.
Скелеты получили такой же защитный механизм от возгорания на солнечном свете, как и зомби — они прячутся в тени деревьев, в воде и пещерах при наступлении дня.
Скорость передвижения у пауков почти равна обычной скорости передвижения игрока. При атаке они стараются прыгнуть на игрока. При уровне освещения 9 и выше они не будут нападать на игрока до тех пор, пока он первым не нанесёт им повреждение. Также они могут взбираться по вертикальным поверхностям и не горят на солнце. 1.14.3 PE Пауки тоже, как зомби и скелеты, могут прятаться от солнца.
Криперы подготавливаются к взрыву, когда подходят к цели на расстояние 1 блок. Они взрываются через 1,5 секунды после «активации», если только игрок не отошёл от них на расстояние 6-7 блоков. До 1.2 они подходили к игроку слева. После 12w05a они получили такую же систему интеллекта, как и у зомби и скелетов, однако криперы не сгорают на солнце, как и Пауки. Находясь в процессе преследования игрока, они будут стараться обходить или перепрыгивать препятствия, в отличие от зомби.
Криперы имеют самую сложную систему поиска пути. Поскольку им необходимо любым способом подойти к игроку вплотную, они часто скрываются, и, как кажется, устраивают засады.
Криперы убегают от оцелотов и кошек. Это иногда очень полезно, поскольку кошки могут сопровождать игрока и отпугивать криперов.
В отличие от других мобов, целью слизней всегда является именно игрок или железный голем. Они двигаются к ближайшему игроку по прямой траектории, даже если он находится за стеной. Если в радиусе 16 блоков никого нет, они прыгают в произвольном направлении, пока не наткнутся на препятствие, после чего разворачиваются в другую сторону.
Когда-то давным давно пытался, забил еще в процессе установки.
Комп явно дохловат.
А сейчас прогером работаю, некогда.
Может в отпуске буду, поковыряюсь. Всё-таки интересно.
Показать полностью…
Вам не страшны криперы, глубокие пещеры и высокие горы? А знаете ли вы, что меч можно превратить в волшебную палочку, дворец — возвести в мгновение ока, а тайные ходы легко открываются нажатием секретной кнопки? Книга «Программируем с Minecraft» позволит творить эти и многие другие чудеса с помощью Python — языка программирования, которым пользуются миллионы людей — от профи до новичков!
Следуйте пошаговым инструкциям и вы:
— научитесь сохранять в переменных разные типы данных;
— освоите принцип действия функций;
— узнаете, как проверять условия при помощи булевых значений, операций сравнения и логических операций;
— познакомитесь с циклами while и for;
— поработаете со списками, кортежами и словарями;
— научитесь создавать файлы, записывать и считывать из них данные;
— поймете, в чем прелесть объектно ориентированного программирования.
При этом в вашем арсенале появится большое количество работающих программ, навык программирования на Python и радость от того, что вы можете создавать собственные миры!
Для кого эта книга
Для детей от 10 лет, а также всех, кто хочет начать программировать с нуля или не мыслит жизни без Minecraft.
Искусственный интеллект для Minecraft или что такое Malmo?
В марте я уже писал о том, что Microsoft использует Minecraft в качестве полигона для тестирования и обучения собственной системы искусственного интеллекта. Теперь этот проект вышел в публичную область и пробовать его в работе может каждый.
И с этой точки зрения Minecraft оказался идеальным полем: практически бесконечный мир, в котором есть и опасности и огромные возможности для созидания. Почему упрощенной модели мира не стать областью, в которой будет жить и обучаться искусственный интеллект?
Проект, получил название Malmo (название скорее всего происходит от названия крупного шведского города, ведь сам Майнкрафт тоже родом из Швеции) и его уже можно скачать и попытаться использовать. Правда, для того чтобы установить систему искусственного интеллекта для Майнкрафта, придётся немного напрячь свой собственный.
Как установить Malmo
Вот так выяснилось, что Malmo — это мод для Minecraft 1.8
Как пользоваться Malmo
Теперь самое время попробовать систему в действии. Поскольку в комплекте поставляются скрипты для Malmo сразу на нескольких языках программирования, то можно воспользоваться ими. Я обращусь к модулю на Java, но думаю суть будет та же.
Итак, в первую очередь надо запустить Malmo (т.е. запустить launchClient.bat). Ну а потом запускать модуль JavaExamples_run_mission.
Делается это командой (я создал небольшой бат-файл):
Собственно просмотреть это можно тут:
Ну собственно на этом этапе — это действительно всё. Т.е. в комплекте с Malmo нет готового искусственного интеллекта, который принимал бы за Вас решения, строил бы города, ловил рыбу и охотился на медведей (тем более, что Мальмо отстаёт от обычного майнкрафт и работает на версии 1.8, а не 1.10).
Конечно, же я могу ошибаться, — я пока ещё не заглядывал в документацию и не пробовал написать свой скрипт для Мальмо. Но я обязательно постараюсь это сделать и тогда расскажу подробнее.
А как же Malmo для Minecraft Pocket Edition?
После того как я скачал Malmo, меня больше всего удивило то, что она основана на Майнкрафте для ПК. Развитие линейки MCPE имеет больший приоритет развития и я сейчас больше верю в более скорое появление официального инструментария для программирования в MCPE, чем в появление обещанного много лет назад PluginAPI для обычного Майнкрафта.
Разработчики регулярно упоминают о разработке такого API (например, об этом говорил Томмазо Кекки в интервью порталу multiplayer.it) и казалось бы логичным, что такой инструмент будет использован в рамках такого проекта как Malmo.
В общем, ждать варианта Malmo для MCPE/MCW10E думаю не стоит.