Всем привет! Сегодня мы рассмотрим очень интересную механику игры - вызов или создание сущностей в мире майнкрафт. Какими алгоритмами пользуется игра для расчёта количества мирных и враждебных существ? Как игра воспринимает существ вокруг игрока? Почему существа с биркой не пропадают? Всё это и многое другое сегодня будет в этой статье!
Появление игрока в мире
Самое простое, о чём можно рассказать - появление игрока в мире.
Появление, создание, вызов сущности - спаун, спавн
Сущность, существо - моб
При создании каждого нового мира устанавливается определенная точка, вокруг которой будет происходить генерация всех объектов и сущностей. Координаты этой точки обычно обозначаются значениями z и x, которые могут изменяться в пределах нескольких сотен единиц от начальных позиций (x = 0, z = 0).
По умолчанию, игрок появляется в самом начале в наиболее подходящем месте, расположенном над уровнем моря. В случае, если такая позиция занята другими объектами или препятствиями, система автоматически начинает изменять координаты z и x до тех пор, пока не найдет подходящее место для спавна.
Если игрок находится в верхнем мире и спит на кровати, его точка возрождения меняется на координаты места, где расположена кровать. В таком случае, после смерти игрок всегда будет появляться на новой позиции, за исключением двух случаев:
- Если кровать была разрушена до смерти игрока;
- Если доступ к кровати был заблокирован;
- При игре в многопользовательском режиме - если администратор задал командой координаты новой точки появления и игрок не менял её с помощью клика по кровати.
Как известно, в Нижнем мире и в Эндер мире игрок не может спать с помощью кровати, а значит и точку возрождения поставить не получится. Но начиная с версии 1.16 в Нижнем мире у игроков появилась возможность переносить свою точку возрождения с помощью специального устройства - якоря возрождения. Для этого необходимо кликнуть по нему световым камнем, а затем еще раз кликнуть пустой рукой.
Возможность установки точки возрождения в Энде пока что отсутствует
Появление мобов при создании мира
При запуске процесса генерации мира могут появляться различные виды существ:
куры, свиньи, коровы, особенные “грибные” коровы, овцы, волки, жители, драконы, дракон Края, шалкеры, брутальные пигмены, ведьмы.
Каждое из этих существ появляется на карте при определенных условиях. Например, курицы, свиньи, коровы и овцы могут появиться, только если вокруг них есть непрозрачные блоки, находящиеся минимум на два блока выше них. Кроме того, над этими блоками должен быть воздух. Это условие необходимо для спавна животного. Но с этим правилом есть небольшая загвоздка - мирные мобы могут появиться в листве деревьев, так как игра считает листву прозрачным блоком.
Драконы, охраняющие край, ведьмы и шалкеры появляются реже остальных. Для их появления нужно, чтобы чанки были заполнены блоками, которые подходят для их спавна. В зависимости от биома, условия могут меняться. Например, спруты могут появиться только в водных биомах, а грибные коровы - только в грибных.
Деревенские жители появляются всегда в деревнях. Это означает, что они могут появиться в любом биоме, кроме водных и пустынных. Также они могут появится в тайных подземных комнатах в иглу, где есть один житель в клетке.
Появление пассивно
В процессе дальнейшей генерации мира участвуют разные виды мобов, исключая гигантов, снежных големов и визера, которые не могут появляться естественным образом, а также дракон края, который появляется один раз при создании карты (или после его призыва с использованием кристаллов края). Мобы могут быть разделены на пять категорий:
- Агрессивные
- Дружелюбные
- Нейтральные
- Существа природы
- Водные
Блоки, на которых спаун невозможен: все виды рельс, стекло, сундук, воронка, трубы, провода и механизмы из модификаций, все виды заборов, калиток и дверей, плиты (если плита установлена поверх целого блока), все виды блоков из красного камня, напольные кнопки, нажимные пластины. Блоки, не препятствующие спауну: переключатели (рычаги, настенные кнопки). Также спаун возможен на блоке, занятом дверью.
Агрессивные мобы имеют цикл появления один раз в каждом игровом такте (1/20 секунды). Их может быть вокруг игрока не более 25-ти. Условия появления агрессивных мобов - уровень освещения 0 (7 или ниже (в версии 1.17 и ранее)) на твердых блоках. Над твердым блоком должны находиться блоки воздуха выше высоты моба. Также злые мобы эффективнее спаунятся на нижних блоках по отношению к миру и естественно не появляются в освещённых источниках.
Дружелюбные мобы и спруты имеют цикл появления раз в 400 тактов. Стоит отметить, что большинство дружественных мобов появляется непосредственно при создании карты.
Спаунятся мобы в радиусе 128 блоков от игрока. На расстоянии 32 блока мобы уже не двигаются и случайно могут деспауниться (исчезать из мира). На расстоянии 24 блока от игрока начинается случайный спаун мобов, видимый игроку, а на расстоянии 16 блоков начинают активничать рассадники монстров (спаунеры).
Также существует формула, по которой можно рассчитать количество определённых существ вокруг игрока. Эта переменная MobCap и рассчитывается она по этой формуле:
Количество = Константа * Чанки / 256
Константа в данном случае задана самой игрой изначально. Таблица со всеми значениями констант для разных мобов есть здесь.
Спаун мобов в многопользовательской игре
При игре с друзьями большой компанией людей, игра рассчитывает появление мобов несколько иначе.
Стартовый спаун мобов происходит как и в случае с одиночной игрой - от точки спауна игроков рассчитывается по описанной выше схеме первичное появление мобов. Но когда игроки разбредаются по миру, игра начинает действовать по-другому.
Во время каждого цикла происходит попытка появления группы мобов ( в зависимости от окружения и уровня освещения, а также блока, на котором происходит спаун) в подходящем чанке. Выбирается случайная точка в чанке, которая становится центром спавна группы. Для успешного спавна группы центральный блок должен быть либо заполнен водой (для появления спрутов), либо быть пустым (для всех остальных мобов). Если все условия соблюдены, то есть 12 шансов на появление группы мобов из 1-4 особей (за исключением волков, которые появляются группами до 8 особей, и гастов, которые появляются по 1 особи на группу). Место появления группы находится в области размером 41x1x41 блок (квадрат 41x41 блока и высотой 1 блок). Последующие попытки спавна происходят со случайной точкой выбора центрального блока.
- Вид группы для спауна определяется сначала биомами и специальными условиями:
В большинстве биомов при солнечном свете спаунятся овцы, свиньи, курицы, коровы и спруты (в воде).
В тёмных местах и ночью: пауки, зомби, скелеты, криперы, странники Края.
В лесном биоме и тайге также спаунятся волки.
В джунглях спаунятся оцелот, панда, попугай.
В водных биомах спаунятся только спруты, дельфины, стражи и древние стражи, треска, лосось, иглобрюх, тропическая рыба.
В грибном биоме спаунятся грибные коровы, летучие мыши и фантомы.
В Нижнем мире спаунятся только гасты, Странник Края, Хоглины, страйдеры, пиглины, лавовые кубы, ифриты, скелеты и скелеты-иссушители.
В Краю спаунятся только странники Края.
Слизни спаунятся на глубине ниже 40 уровня в специальных чанках (Также, с версии 1.4.2, в биоме болото)
Железный голем и деревенские жители спаунятся только в деревнях.
Чешуйница спаунится при разрушении блока 97.
Дракон Края спаунится один раз естественным образом в краю, но не как часть общего процесса спауна мобов.- Следует отметить, что попытка спауна гаста проваливается в 95 % случаев, таким образом гаст спаунится в 20 раз реже других враждебных мобов.
Другие случаи спауна
Устройство для спавна (спаунер) создает мобов на расстоянии до 16 блоков от пользователя. В этой зоне не может быть более 6 особей одного вида. Спаунер - единственный способ появления пещерных пауков. Он также встречается в крепостях (где воспроизводит чешуйницы), в развалинах замка (для спавна лавовых кубов), в адских крепостях (чтобы вызывать ифритов), лесных особняках (в крайне редкой комнате) со спавнером пауков и в сокровищницах (в которых могут быть спавнеры скелетов, зомби или пещерные пауки).
Брошенное яйцо курицы имеет вероятность 1/8 вызвать цыпленка.
Самостоятельное создание игроком снежного и железного големов, а также визера.
Яйца вызова в режиме Творчества позволяют вызвать практически любого моба. В версии 1.6.2 и выше, используя команду /summon, можно вызвать любого моба, включая големов, визеров и дракона края.
Также с шансом 5% может появиться эндермит при броске эндер пёрла игроком.
Ещё один источник создания существ - черепашьи яйца. Создают маленьких черепашат по истечении 4-ёх стадий созревания.
Неполноценный, но тоже способ - появление уменьшенных копий слайма при убийстве особи побольше.
Разведение игроком животных тоже является способом спауна существ.
Ещё в начале статьи я упоминал существ с биркой, и что они не исчезают даже при отдалении игрока на большое расстояние. Почему так происходит? Да потому что когда игрок именует любой существо биркой, оно перестаёт числиться в списке существ своей группы. В таком случае оно не деспавниться, а его недостающую единицу игра дополняет новым мобом.
Итог
Спасибо за прочтение моей первой статьи за такое большое время моего отсутствия! Надеюсь, вам понравилось читать её и вы узнали что-то новое для себя. Если заметили что-то неверное или хотите предложить свою идею для следующей статьи - можете написать об этом в комментариях! Ну а я с вами прощаюсь, до новых встреч!
Источник тут