В марте я уже писал о том, что Microsoft использует Minecraft в качестве полигона для тестирования и обучения собственной системы искусственного интеллекта. Теперь этот проект вышел в публичную область и пробовать его в работе может каждый.

Разработчики рассказывают, что системы ИИ, используемые в настоящее время, служат для понимания или перевода человеческой речи, распознавания лиц и создания собственного текста. Однако конечная цель разработки подобных систем — это создание «сложного искусственного интеллекта» — системы, способной обучаться и принимать решения на основе собственного опыта.

И с этой точки зрения Minecraft оказался идеальным полем: практически бесконечный мир, в котором есть и опасности и огромные возможности для созидания. Почему упрощенной модели мира не стать областью, в которой будет жить и обучаться искусственный интеллект?

Проект, получил название Malmo (название скорее всего происходит от названия крупного шведского города, ведь сам Майнкрафт тоже родом из Швеции) и его уже можно скачать и попытаться использовать. Правда, для того чтобы установить систему искусственного интеллекта для Майнкрафта, придётся немного напрячь свой собственный.

Как установить Malmo

  1. Скачайте архив Malmo для Ваше операционной системы (У меня — 64-х битная Windows 10, поэтому далее я буду говорить именно о ней). Он включает мод для Minecraft и примеры программ.
  2. Скачайте и установите архиватор 7-zip (если вдруг его у Вас его ещё нет)
  3. Установите кодек FFMPEG (с сайта Zeranoe)
  4. Распакуйте содержимое архива (директорию bin и все сопутствующие файлы) в папку c:ffmpeg и добавьте папку c:ffmpegbin в системную переменную PATH.
  5. Установите CodeSynthesis. Перейдите по ссылке и скачайте там файл xsd-4.0.msi, запустите этот файл.
  6. Установите библиотеки Microsoft Visual Studio 2013 (скачайте файл vcredist_x64.exe и запустите его)
  7. В зависимости о того, какой язык программирования Вам близок можете скачать и установить:
    • Python. Скачайте последний файл для x64, python-2.7.11.amd64.msi. После установки убедитесь, что команда python работает (может потребоваться добавить C:Python27 в переменную PATH)
    • Lua. Скачайте и установите, после установки у Вас должна работать команда lua.
    • Java (JDK). Как я понимаю, потребуется в любом случае. После установки папка «bin» из директории установки Java должна быть добавлена в переменную PATH, а сама директория установки Java должна быть прописана в переменной JAVA_HOME. Проверьте, если это не так — исправьте вручную.
    • Для поддержки C# установите фреймворк dotNET.
  8. После этого можно приступать к запуску мода. Если у Вас уже установлен Forge, то можно просто установить себе мод расположенный, папке Mod. А можно просто пройти в папку Minecraft и запустить там launchClient.bat  — тогда вам скачается отдельная инсталляция Minecraft c Forge, который будет содержать все необходимые моды.
Malmo started
Вот так выяснилось, что Malmo — это мод для Minecraft 1.8

Как пользоваться Malmo

Теперь самое время попробовать систему в действии. Поскольку в комплекте поставляются скрипты для Malmo сразу на нескольких языках программирования, то можно воспользоваться ими. Я обращусь к модулю на Java, но думаю суть будет та же.

Итак, в первую очередь надо запустить Malmo (т.е. запустить launchClient.bat). Ну а потом запускать модуль JavaExamples_run_mission.

Делается это командой (я создал небольшой бат-файл):

Правда, при этом у меня возникли проблемы с тем, что библиотек MalmoJava.dll, расположенная тут же в папке с примером, оказалась «невидима» для Java. В итоге, я её скопировал в какую-то директорию, которая прописана в переменной PATH и всё запустилось нормально.

Выглядело это так:  внезапно окно Майнкрафта уменьшило размера, открылся какой-то мир, и в нём стало происходить какое-то движение персонажа. При этом в консоль писались сообщения, а через какое-то время всё замерло.

Собственно просмотреть это можно тут:

И это всё?!

Ну собственно на этом этапе — это действительно всё. Т.е. в комплекте с Malmo нет готового искусственного интеллекта, который принимал бы за Вас решения, строил бы города, ловил рыбу и охотился на медведей (тем более, что Мальмо отстаёт от обычного майнкрафт и работает на версии 1.8, а не 1.10).

Самое главное, как а я понимаю, — это инструмент, который позволит разработчикам создать систему, которая будет «видеть майнкрафт» как человек. Т.е. для взаимодействия с миром Майнкрафта через Мальмо надо будет опираться на действия вида «посмотреть под ноги, если там что-то похоже на лаву не идти туда», а не обращаться к блокам напрямую, используя их координаты. Отправив команду в чат, надо будет проанализировать написанный в ответ текст и т.п. Ну и самое главное, делать это всё это можно используя ту среду разработки, к которой Вы привыкли.

Конечно, же я могу ошибаться, — я пока ещё не заглядывал в документацию и не пробовал написать свой скрипт для Мальмо. Но я обязательно постараюсь это сделать и тогда расскажу подробнее.

А как же Malmo для Minecraft Pocket Edition?

После того как я скачал Malmo, меня больше всего удивило то, что она основана на Майнкрафте для ПК. Развитие линейки MCPE имеет больший приоритет развития и я сейчас больше верю в более скорое появление официального инструментария для программирования в MCPE, чем в появление обещанного много лет назад PluginAPI для обычного Майнкрафта.

Разработчики регулярно упоминают о разработке такого API (например, об этом говорил Томмазо Кекки в интервью порталу multiplayer.it) и казалось бы логичным, что такой инструмент будет использован в рамках такого проекта как Malmo.

Но этого не произошло.  И думаю, реальная причина не в том, что API находится в каком-то зачаточном состоянии (если вообще существует), а в том, что в данном случае Forge оказывается более удобным инструментом, чем «мифическое» API, которое как известно скорее всего будет представлять собой скриптовый движок, который не будет давать возможности обращаться к функциям игры на низком уровне. Удел будущего API — это новые виды блоков или мобов, представляющие собой вариации существующих.

В общем, ждать варианта Malmo для MCPE/MCW10E думаю не стоит.