экспортировать настройки генерации майнкрафт

Создание генератора мира для minecraft

Введение

Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Немного технической части
Выбор языка

Реализовать такую структуру можно на любом языке, я остановился Delphi 7. Во-первых, это пока единственный язык, который я знаю, во-вторых, именно на 7 версии года 4 назад я начинал писать блокноты по мануалам из Игромании.

Так как данные хранятся в сжатом виде, нам необходим модуль zlib.
Я использовал ZlibEx

Для начала создадим класс чанка, в который будем впоследствии писать данные

Код этого класса:

Функция getoffset выдает нужое смещение по формуле y + ( z *128 + ( x * 128 * 16 ) )

Добавим в var пару переменных:

Процедура для сборки всех чанков в готовый файл:

Всё, теперь мы имеем метод записи любого блока по любой координате, в пределах региона. При желании, несложно повторить то же для остальных регионов, надо строк 10 кода.

Обертка для writeblock:

Генерация мира, его сжатие и сохранение.

Результат:
экспортировать настройки генерации майнкрафт. 2011 08 01 18.22.26. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-2011 08 01 18.22.26. картинка экспортировать настройки генерации майнкрафт. картинка 2011 08 01 18.22.26. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.
экспортировать настройки генерации майнкрафт. 2011 08 01 13.26.50. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-2011 08 01 13.26.50. картинка экспортировать настройки генерации майнкрафт. картинка 2011 08 01 13.26.50. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Можно генерировать не только пиксельарт, но произвольные фигуры, все, что можно задать какой-либо формулой. Например, пол в виде синусоиды:
экспортировать настройки генерации майнкрафт. 2011 08 01 18.42.47. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-2011 08 01 18.42.47. картинка экспортировать настройки генерации майнкрафт. картинка 2011 08 01 18.42.47. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Источник

Как перенести мир на новую версию майнкрафта?

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

В разных версиях алгоритмы генерации отличаются, что приводит к появлению стыка генерации. Похожий эффект возникает при ошибке сохранения чанков.

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

Поэтому обновление формата чанков вынесено в отдельную функцию «Оптимизировать мир» в меню настроек мира:
экспортировать настройки генерации майнкрафт. 261573294 408d8f1fbf97c2276bef7fc75a87e449. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-261573294 408d8f1fbf97c2276bef7fc75a87e449. картинка экспортировать настройки генерации майнкрафт. картинка 261573294 408d8f1fbf97c2276bef7fc75a87e449. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

При нажатии на эту кнопку игра предупредит вас о том, что после завершения процедуры скорость работы игры в этом мире повысится, но его больше нельзя будет открыть на более ранних версиях и предложит создать резервную копию. Не стоит пренебрегать такой возможностью.
экспортировать настройки генерации майнкрафт. 261573294 1fac4c56bf9c47da963f1805033f7f63. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-261573294 1fac4c56bf9c47da963f1805033f7f63. картинка экспортировать настройки генерации майнкрафт. картинка 261573294 1fac4c56bf9c47da963f1805033f7f63. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Стоит отметить, что при создании резервной копии майнкрафт на время зависает и перестаёт реагировать на нажатия, однако не перестаёт работать. В зависимости от размера мира это может длиться по-разному (кстати, эффективность сжатия довольно высока – примерно 1 к 10). Когда создание резервной копии завершится, Майнкрафт автоматически приступит к процессу обновления формата чанков:
экспортировать настройки генерации майнкрафт. 261573294 9a2026874fbbb42757e44cbe97ce8833. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-261573294 9a2026874fbbb42757e44cbe97ce8833. картинка экспортировать настройки генерации майнкрафт. картинка 261573294 9a2026874fbbb42757e44cbe97ce8833. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Источник

Minecraft Wiki

Из-за новой политики Microsoft в отношении сторонних ресурсов, Minecraft Wiki больше не является официальной. В связи с этим были внесены некоторые изменения, в том числе и обновлён логотип вики-проекта. Подробности на нашем Discord-сервере.

Генерация карты

экспортировать настройки генерации майнкрафт. %D0%A8%D0%BA%D0%B0%D0%BB%D0%B0 %D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8 (%D0%B8 %D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8) %D0%BC%D0%B8%D1%80%D0%B0. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-%D0%A8%D0%BA%D0%B0%D0%BB%D0%B0 %D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8 (%D0%B8 %D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8) %D0%BC%D0%B8%D1%80%D0%B0. картинка экспортировать настройки генерации майнкрафт. картинка %D0%A8%D0%BA%D0%B0%D0%BB%D0%B0 %D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8 (%D0%B8 %D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8) %D0%BC%D0%B8%D1%80%D0%B0. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Шкала генерации и загрузки мира

Генерация карты — это процесс случайного создания географических и геологических объектов на карте при первом запуске игры на пустом слоте для игрового мира. Процесс генерации отображается на шкале, которую можно увидеть при первой генерации карты. Но при этом карта генерируется не до конца. Она будет продолжать генерироваться по мере продвижения вами по карте. Это сделано для того, чтобы не нагружать игру и компьютер генерацией при первом запуске.

Алгоритм генерации [ ]

Алгоритм генерации несколько раз изменялся. Теперь ландшафт генерируется, хранится и загружается с диска и обрисовывается кусками по 16×16×16 блоков. У каждого куска имеется значение смещения, которое хранится в виде 32-битного целого числа и может находиться в диапазоне примерно от минус двух миллиардов до плюс двух миллиардов. Однако мир ограничен и генерируется только в координатах блоков до 30 миллионов во все стороны. Раньше этого ограничения не было и можно было выйти за пределы первого диапазона (а это примерно четверть расстояния от Земли до Солнца), тогда новые куски начинали перекрывать собой старые (так называемые «Далёкие земли»). А после того, как преодолена шестнадцатая часть этого расстояния, функции, использующие вещественные числа для работы с позициями блоков, такие как использование инструментов и поиск путей, начнут странно себя вести.

Генерация местности происходит в следующие несколько этапов:

Генерация биомов [ ]

экспортировать настройки генерации майнкрафт. BiomesGraph%28rus%29. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-BiomesGraph%28rus%29. картинка экспортировать настройки генерации майнкрафт. картинка BiomesGraph%28rus%29. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Примерный график генерации биомов

экспортировать настройки генерации майнкрафт. %D0%98%D0%BB%D0%BB%D1%8E%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F %D0%A8%D1%83%D0%BC%D0%B0 %D0%9F%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D0%B0. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-%D0%98%D0%BB%D0%BB%D1%8E%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F %D0%A8%D1%83%D0%BC%D0%B0 %D0%9F%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D0%B0. картинка экспортировать настройки генерации майнкрафт. картинка %D0%98%D0%BB%D0%BB%D1%8E%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F %D0%A8%D1%83%D0%BC%D0%B0 %D0%9F%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D0%B0. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Это визуализация простого двумерного шума Перлина.

С помощью шума Перлина создаются карты температуры и влажности.

Также на температуру влияет высота. Исключая болото, через каждый блок над уровнем моря (y = 64) температура становится ниже на 1/600. Температура влияет не только на карту биомов, но и на наличие осадков (За исключением грозы, возникающей в любых биомах Верхнего мира). На частоту выпадения осадков влияет влажность. В зависимости от температуры и влажности генерируется карта биомов. Биом реки генерируется на стыке двух биомов или с некоторым шансом в пределе одного биома.

Генерация ландшафта [ ]

В ранних версиях игры для придания миру формы была использована карта высот на основе двумерного шума Перлина. Или, если быть точнее, несколько карт высот. Одна для общей высоты, одна для шероховатости ландшафта и одна для мелких деталей. Для каждого столба блоков высота равнялась (общая высота + (шероховатость×детали))×64+64. Карты общей высоты и шероховатости были гладкими, сильно масштабированными шумами, а детали были более мелкими. У этого метода было замечательное преимущество в скорости, так как нужно было проводить всего 16×16×(количество_шумов) расчетов на чанк, но его недостатком был скучный ландшафт. В частности из-за невозможности генерировать нависающие над землей выступы.

С версии Beta 1.3 игра перешла на похожую систему, использующую трёхмерный шум Перлина. Теперь уже не генерируется «высота земли». Значение шума было рассматривается как «плотность», и все блоки с плотностью меньше 0 становятся воздухом, а блоки с плотностью больше или равной 0 — землёй. Чтобы нижний слой был твёрдый, а верхний — нет, к полученному результату прибавляется высота (смещение относительно уровня моря).

К сожалению, мгновенно появились проблемы производительности и играбельности. Первые — из-за большого количества требуемых расчетов, вторые — из-за отсутствия плоских местностей и гладких холмов. Решение обеих проблем заключалось в понижении разрешения при расчетах (8x масштабирование по горизонталям и 4x по вертикали) и достраивании ландшафта с помощью линейной интерполяции. В игре появились плоскости и холмы, а заодно исчезло большинство парящих в воздухе блоков.

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

Источник

Экспортировать настройки генерации майнкрафт

Майнкрафт, особенно с модами — очень требовательная к ресурсам ПК игра, анон. Если у тебя слабая печка, то ты скорее всего окажешься не доволен производительностью игры. В этой статье специально для тебя были собраны все возможные рекомендации по оптимизации Minecraft, с которыми в кубач можно будет поиграть даже на некропк. Впрочем, пользуйся вдумчиво и аккуратно: некоторые из них могут оказать обратный эффект и лишь усугубить ситуацию.

Оптимизация аргументов запуска

Аргументы запуска (JVM флаги) — отличный способ облегчить жизнь твоему сборщику мусора и в целом начать использовать ресурсы комьютера более эффективно. Учти, что некоторым флагам может понадобиться полная версия джавы, т. е. JDK . (или серверная JRE )

Флаги, не описанные в статьях выше:

Оптимизация с помощью модов

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

Оптимизация новейшей версии (1.16.4)

МодОписание
OptiFineРасширенные настройки графики, оптимизация для некропк, шейдеры для йобапк.
PhosphorЗаметные оптимизации светового движка.
LithiumЗначительные бусты физики, загрузки чанков, ИИ мобов, редстоуна, etc.
SodiumВНЕЗАПНО релизнулся. По заявлению автора, бустит фпс в 400%, что правда.
OptiFabricБез этой штучки фабрик и оптифайн не дружат.
FastFurnace и FastWorkbenchКэширование рецептов верстака и печки, что способствует экономии процессорного времени. Эффект заметен лишь на больших серверах с множеством баз. В сингле вряд ли почувствуется.
МодОписание
OptiFineРасширенные настройки графики, оптимизация для некропк, шейдеры для йобапк.
PhosphorЗаметные оптимизации светового движка.
VanillaFixРазличные багфиксы, а ещё игра не будет закрываться из-за крашей. Musthave!
FoamFixЗначительная экономия ОЗУ посредством хитрого шаманства.
AI ImprovementsОптимизация ИИ мобов путём кастрирования патфайндинга.
SurgeУскорение загрузки игры и пара багфиксов.
Multithreaded NoiseМногоядерная генерация перлин нойза; чем больше ядер у процессора — тем лучше.
PerformantРазличные оптимизации патфайндинга, оптимизация мобов (и энтитей в целом).
UnloaderБолее агрессивная выгрузка измерений, что в теории фиксит утечки памяти.
TexFixЭкономия памяти при использовании детализированных ресурспаков. (если не используешь их, мод тебе не нужен.
BetterFpsОптимизация рендеринга путём повышения эффективности sin() и cos() функций. (этим по сути дублирует функционал OptiFine, но у мода есть и уникальные фичи, поэтому он тут.
Chunk-PregeneratorБыстрая прегенерация чанков мира в определённом радиусе, очень спасает от лагов во время путешествий в неизученные места. А ещё имеет няшный интерфейс и даже умеет в ретроген!
FastFurnace и FastWorkbenchКэширование рецептов верстака и печки, что способствует экономии процессорного времени. Эффект заметен лишь на больших серверах с множеством баз. В сингле вряд ли почувствуется.
МодОписание
OptiFineРасширенные настройки графики, оптимизация для некропк, шейдеры для йобапк.
BetterFpsОптимизация рендеринга путём повышения эффективности sin() и cos() функций. Дублирует функционал OptiFine, но есть и уникальные фичи.
Chunk-PregeneratorПозволяет заранее генерировать чанки мира, чем спасает от лагов во время путешествий в неизученные места. А ещё имеет няшный GUI и даже умеет в ретроген. (На 1.7.10-версию GregoriousT советует этот патч для ваниллы и этот патч, если установлен Forge Multipart, чтобы избежать крашей во время прегенерации. Источник.
FastCraftМного разных ощутимых оптимизаций. С OptiFine работает только последняя версия, в которой, ради совместимости с оптифайном, чуть порезали оптимизаций. Так что, если не пользуетесь оптифайном, выбирайте предпоследнюю версию.
Thaumic FixerФиксит лаги во время сканирования таумометром в Thaumcraft. Требует, очевидно, Thaumcraft. Используйте на свой страх и риск, ведь в комментариях к моду пишут о множестве проблем и багов.

TIP: Некоторые моды имеют возможность отключить особо тяжёлый функционал, и снизив тем самым нагрузку на ПК.
Например, в конфиге Lycanites Mobs есть опции Disable Model Alpha и Model Multipass, которые облегчат жизнь твоему ПК, порезав рендер моделек ликанитов и альфа-канал. А разработчик Twilight Forest в конфиге мода вообще отвёл отдельную секцию для настроек производительности. Подобное снисхождение для обладателей некропекарен имеется во многих модах, анон, не ленись читать конфиги!

Обновление библиотек старых версий

Если ты играешь на версиях до примерно 1.12.2, то для повышения производительности и исправления багов стоит обновить библиотеки, которые использует майнкрафт.

Отключение логов

Если ты — счастливый обладатель медленного HDD в 2020 году, то может помочь отключение логгирования в майнкрафте. Для этого добавьте к аргументам запуска -Dlog4j.configurationFile=log4j2.xml и создайте в директории игры файл log4j2.xml со следующим содержанием:

Ram-диск

Если у тебя ещё остаётся оперативная память, после запуска майнкрафта, ты можешь перенести мир на ram-диск. Также я слышал слух, про то, что имеет смысл перенести JVM на рамдиск и пользуюсь этим советом, но доказательств пользы у меня нет.

TIP: Не пользуйся фичей, если собираешься прегенерировать чанки! Оперативная память закончится моментально. Сейв, с оверворлдом, прогруженным на радиус

300 чанков, запросто съедает больше гигабайта места! И в целом ей стоит пользоваться, только если после запуска майнкрафта и всего, нужного вам во время игры, у вас остаётся гигабайт-другой оперативки: если вы выделите недостаточно места на рамдиске под мир, то потеряете часть своего драгоценного прогресса по игре, когда сейв заполнит весь рамдиск, а если выделите всё, что у вас есть, и оперативка заполнится, то будете сидеть перед замершим компом и ждать, пока OOMKiller прихлопнет вам майнкрафт!

В Linux используется tmpfs и автобекап. Этот гайд хоть и находится на вики арча, но подойдёт для 99% линуксов.

Для Windows есть огромный зоопарк какого-то софта для рамдисков, тот, кто сейчас это пишет, не может ничего порекомендовать из него.

Источник

Программируем в мире Minecraft

Хабр, привет! Пока все обсуждают ИИ в мире Pacman, мы начнем делать свой ИИ в Minecraft с фреймворком Malmo от Microsoft Research. Pacman у нас тоже появится. Если вы любите кубический мир, или вам хотелось бы начать изучать искусственный интеллект, или у вас есть дети, с которыми вы не можете найти общие увлечения, или же вас просто заинтересовала тема – прошу под кат.

экспортировать настройки генерации майнкрафт. 501efea106814990941383dc54be17b1. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-501efea106814990941383dc54be17b1. картинка экспортировать настройки генерации майнкрафт. картинка 501efea106814990941383dc54be17b1. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

В этой статье я постараюсь затронуть несколько тем:

Minecraft: моя предыстория

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

Для меня Minecraft стал продолжением любимой игрушки детства – Lego, исправив ее главный недостаток: постоянную нехватку деталей. Аналог Lego с безлимитными деталями, что может быть лучше.

экспортировать настройки генерации майнкрафт. cbf466a593964785869754ffa3bcbc99. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-cbf466a593964785869754ffa3bcbc99. картинка экспортировать настройки генерации майнкрафт. картинка cbf466a593964785869754ffa3bcbc99. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Изучая сабж, я случайно узнала, что мир Minecraft не ограничивается игрой, мерчем, летсплеями и фан артами. В игре снимают целые сериалы, и – неожиданно – они являются довольно популярными. На мой взгляд, это забавно.

Меня очень обрадовала новость о наличии open source фреймворка для программирования в мире Minecraft. Я твердо уверена, что в будущем в подавляющем числе профессий могут понадобиться базовые навыки программирования. Фреймворк на базе любимой игрушки, на мой взгляд, отличный способ показать ребенку захватывающий мир программирования.

Malmo: основная идея

Фреймворк Malmo был создан совместными усилиями нескольких исследователей, главной целью которых было адаптировать интересный мир к экспериментам в области искусственного интеллекта. Алгоритмов ИИ по-прежнему относительно мало, и все они имеют огромный потенциал для более детального изучения и усовершенствования. Мне очень нравится, что Microsoft создает дополнительную мотивацию к изучению неизведанного.

Технические моменты

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

Поддержка ОС и языков программирования
Несмотря на смелое заявление о поддержке всех трех популярных ОС, мне показалось, что тестирование было как следует проведено лишь для ОС Windows. Победив проблемы с установкой, ваша головная боль на ОС Windows обещает закончиться. На Linux проблемы, скорее всего, продолжатся, так как поднятый сервер периодически падает, не сообщая причин. Если вы продолжите мои эксперименты – обязательно пишите в комментарях о вашем опыте.

Авторы постарались поддержать большое число популярных языков и сделали обвязки для C#, C++, Lua, Python2 и Java. Я выбрала Python.

Как играть программировать в Malmo

Логику для каждого из человечков вы можете реализовать в коде, а также можно управлять персонажем самостоятельно всем знакомыми клавишами AWSD.

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

Авторы позаботились о нас и сделали внушительное число примеров, добавив к ним описание.

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

В xml файле вы можете задать режим игры:

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

Вот этот код нарисует вам Пакмана, который поедает шарики и уходит в радужный кратер:

экспортировать настройки генерации майнкрафт. 1b0c6d430cd04473aaa4cd5809fa0d5d. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-1b0c6d430cd04473aaa4cd5809fa0d5d. картинка экспортировать настройки генерации майнкрафт. картинка 1b0c6d430cd04473aaa4cd5809fa0d5d. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Наконец, в xml можно добавить необходимые координаты для добавления обзора персонажу:

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

Мы получим массив со строками. Каждая строка – это текстовое представление типа одного из кубиков.

Таким образом можно создать ИИ, который исследует мир, ищет что-либо и не умирает по глупым причинам. Простейший вариант без использования машинного обучения я реализовала тут.

Фичи для ИИ

Конечно же, первое, что мне захотелось увидеть для реализации алгоритмов ИИ в malmo – это возможность двигаться дискретно. В вопросе ИИ и так хватает сложностей, и не хочется добавлять ко всему прочему постоянную корректировку направления и скорости движения.
Включаем нужное в xml так:

К сожалению, этого будет недостаточно. Чтобы двигаться дискретно, ваше начальное положение должно быть строго в центре кубика:

Целые координаты поставят вас в пересечение кубов, персонаж откажется двигаться с места, никаких предупреждений и ошибок вы не увидите. В туториале об этом также не предупреждают. Я потратила около 4 часов, чтобы осознать суть проблемы и сделать координаты x и z половинчатыми. (y отвечает за высоту и не играет роли в данной истории).

Кроме этого, исследователи добавили несколько приятных фич для решения задачи обучения с подкреплением (Reinforcement Learning). Алгоритмы этого типа подразумевают постоянное награждение или наказание искусственного интеллекта за те или иные действия. Разработчики продумали этот момент и добавили возможность прописать эти действия/события в xml, избавив код от постоянных одинаковых проверок. Вы также можете задать окончание игры по наступлению некоторого события:

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

экспортировать настройки генерации майнкрафт. 54221422a429412e99c90890a8b51914. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-54221422a429412e99c90890a8b51914. картинка экспортировать настройки генерации майнкрафт. картинка 54221422a429412e99c90890a8b51914. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

Malmo: вывод

Авторы фреймворка подарили нам потрясающую возможность погрузиться в любимый мир с другой стороны. Malmo пока что находится в бете, во многих ситуациях он… заставляет совершенствовать свои навыки в troubleshooting. Тем не менее, его плюсы перевешивают все его минусы, а тот факт того, что исходники лежат в открытом доступе на github, позволяет нам самостоятельно доделать нужное место или создать issue для исправления критических багов.

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

Malmo Challenge: история и результаты

Кроме самого фреймворка, Microsoft также проводил соревнование на базе платформы, названной Malmo Challenge. Оно было призвано побудить ученых и исследователей к работе над коллаборативными алгоритмами. Конкурс стартовал примерно полгода назад, а результаты появились 5 июня.

Суть челленджа в следующем: у нас есть плоский мир, забор сложной формы, внутри загона бегает хрюшка и ходит 2 человека. Наша задача – создать ИИ для одного из персонажей, которых сможет взаимодействовать со вторым, чтобы вместе они загнали хрюшку в замкнутое пространство. Второй персонаж может вести себя рандомно, может управляться человеком, другим ИИ, это может быть даже второй экземпляр вашего собственного ИИ.

экспортировать настройки генерации майнкрафт. image loader. экспортировать настройки генерации майнкрафт фото. экспортировать настройки генерации майнкрафт-image loader. картинка экспортировать настройки генерации майнкрафт. картинка image loader. Думаю, почти все читатели Хабра слышали про майнкрафт, кто-то играл в сингле, кто-то на одном из многочисленных серверов, был даже небольшой сервер у кого-то из хабраюзеров. После двух месяцев игры я задумался — а реально ли написать свой генератор карты? Как оказалось, это вполне возможно сделать за несколько дней неторопливого гугления и кодинга.

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

Эта задача в общем виде называется Охота на оленя. Она была сформулирована еще в 18 веке Жан Жаком Руссо. Несмотря на внушительный возраст проблемы, до сих пор неясно, какой алгоритм наиболее эффективно решает поставленную задачу.

Я рада поделиться с вами результатами соревнования. Меня очень удивило распределение мест в турнирной таблице.

Первое место занял проект команды из Великобритании. Авторы трезво оценили сильный недостаток времени, поняли, что они вряд ли успеют адаптировать для задачи сложные существующие алгоритмы. Они выбрали Байесовский вывод для определения типа напарника, а также Марковские цепи для непосредственного игрового процесса. И победили.

Участники, занявшие второе место, решили взять самые сложные из существующих решений, они использовали DNN, Reinforcement learning, DQN, A3C model… И это все не помогло им обойти Байеса и Марковские цепи.

Подытожим статью мыслью о том, что нужно быть проще.

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

Видео с моим рассказом о Malmo на встрече Петербургского Python митапа уже появилось на моем канале на Youtube. Там также есть записи других моих лекций и прочая болтовня про IT.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *