Эта картина была добавлена в игру в бета-версии 1.3, хотя подготовка к ней (в коде) уже была сделана в бета-версии 1.2_01
Это была последняя "истинная" картина, добавленная в игру. Картина увядания, которая является единственной новой картиной, которая была добавлена с тех пор, не была сделана Кристоффером и не была основана на какой-либо оригинальной картине. Да, если вы не знали, все остальные картины в игре являются уменьшенными версиями реальных картин.
Вы, вероятно, не могли бы действительно сказать, существует ли реальный мир Майнкрафт из внутриигровой картины, но, глядя на эту оригинальную версию, вы можете довольно ясно увидеть, что это действительно мир Майнкрафт. Вы все еще можете сомневаться, что это действительно созданный мир, или это было просто что-то, что он случайно нарисовал, но мы вернемся к этому позже. Спойлер: да, это реальный мир.
Kristoffer Zetterstrand
Kristoffer Zetterstrand. Его работы находятся под влиянием как классических, так и ренессансных произведений искусства, а также компьютерной графики и 3D-моделирования.
Он был другом Нотча задолго до того, как появился Майнкрафт. Нотч решил, что хочет включить свои картины в Майнкрафт, поэтому он позволил Кристофферу уменьшить их масштаб (и немного отредактировать некоторые из них, чтобы они все еще хорошо выглядели внутри игры) и поместил их в игру.
Как начинался проект
Сначала это была просто идея, которую я предложил в канале "suggestions" на нашем дискорд сервере Minecraft@Home.
Это, казалось, зацепило, так как на момент написания статьи это самое популярное (звездное) предложение там. Главной мотивацией для этой идеи был тот факт, что это последняя легендарная часть трилогии "скриншоты Майнкрафта, включенные в Майнкрафт" (наряду с пакетом.png и оригинальная фоновая панорама титульного экрана), по крайней мере, для версии Java. Позже были добавлены некоторые другие вещи, такие как пользовательские предустановленные значки мира или более новые панорамы, но они не столь важны. (Мы все еще можем попытаться найти их позже.)
Однако, глядя только на картину, было бы в принципе невозможно получить правильную перспективу и блокировать размещение, так как это ручная…
К сожалению, это не сырой оригинальный скриншот из Майнкрафта, а обрезанный, и это также jpeg, так что качество не самое лучшее, но все равно достаточно хорошее для работы.
С его помощью проект стал более чем жизнеспособным, и мы начали копаться в нем сразу же после его первоначального ответа. Я также задал ему еще несколько последующих вопросов, на которые он также ответил через несколько дней после этого, что дало нам немного больше информации (например, разрешение его монитора), чтобы основать наши предположения.
Он также поделился с нами некоторыми другими вещами, включая некоторые старые мировые файлы, которые он нашел примерно с той же даты, но, к сожалению, это был не тот…
Что мы выясняли
Это не настоящий внутриигровой скриншот (F2), так как в этой версии это еще не было возможно. Сначала он сделал ручной скриншот рабочего стола своего развернутого окна Minecraft с помощью Picasa, который сохранил его в необработанном растровом файле с именем "Fullskärmsinfangning 2010-10-12 132249.формат BMP". К сожалению, у него больше нет этого оригинального raw-файла, но, по крайней мере, он сообщает нам точную дату и время, когда был сделан снимок экрана, а именно 12 октября 2010 года в 13:22:49 (UTC+2). Затем он открыл этот файл в Adobe Photoshop CS2 (Windows), обрезал его (но не масштабировал) и отредактировал перекрестие (хотя некоторые оставшиеся артефакты все еще есть) и сохранил изображение в формате jpeg с этими настройками:
Воспроизведение одного и того же jpeg
Чтобы иметь возможность получить точное наложение и обучить jpeg-шумоподавляющий ИИ, нам нужно было иметь возможность воспроизвести те же настройки jpeg, что и на исходном скриншоте. Настройки Photoshop, показанные выше, выполняют эту работу, но было бы непрактично использовать Photoshop каждый раз для этого, особенно с наложением live recreation. Вот почему нам нужно было выяснить, как воспроизвести его алгоритмически.
Способ кодирования/сжатия каждого jpeg-изображения зависит в основном только от"таблиц квантования". Они могут быть легко извлечены из файла изображения.
Версия для Майнкрафта
Основываясь на дате скриншота и появлении мира внутри него, было определено, что скриншот был сделан не позже, чем в версии Alpha 1.1.2_01, которая была последней версией на тот момент (выпущена 23 сентября 2010 года), так что это версия, с которой мы будем работать.
Есть несколько вещей, которые следует иметь в виду относительно этой версии:
Это последняя версия, прежде чем биомы были введены в игру. Это означает, что вся трава и листья (а также небо) везде имеют один и тот же цвет.
Он также использует более старый генератор местности, чем тот, который использовался в более поздних альфа - / бета-версиях.
Распад листьев нарушен, поэтому листья могут случайно распадаться, даже если они все еще являются частью дерева. Это означает, что мы не можем действительно зависеть от размещения листьев или, по крайней мере, не от тех, которые мы не видим, а только от тех, которые мы все еще видим.
Эта версия не имеет полета, пользовательского выбора семян, F1 (скрыть графический интерфейс), F2 (сделать снимок экрана) или даже настройки масштаба графического интерфейса (графический интерфейс все еще может масштабироваться автоматически в зависимости от разрешения).
Исходное разрешение
Поскольку вы не могли скрыть графический интерфейс в этой версии с помощью F1, а Minecraft еще не мог делать скриншоты с помощью F2, скриншот был сделан вручную в режиме рабочего стола со всеми элементами графического интерфейса, все еще присутствующими. Горячая панель внизу и название версии вверху были обрезаны, а перекрестие отредактировано (хотя оно все еще оставляло некоторые видимые артефакты). Поскольку по умолчанию print-screening не работает в полноэкранном режиме (F11), он должен был быть сделан, когда Minecraft был в оконном режиме. (Хотя это правда, это не является релевантным аргументом, так как скриншот был сделан с помощью Picasa.)
Разрешение обрезанного скриншота, который мы имеем, составляет 1602x971. Сначала мы попытались сами вычислить исходное разрешение, но ошибочно пришли к выводу, что его монитор был 2048x1152. Позже он сказал, что его разрешение монитора на самом деле было 1920х1200, а также сказал, что в то время он использовал Windows 7, что дало нам размер окна 1920x1148 после вычитания всех панелей Windows (его нижняя панель задач была установлена на меньший размер, чем по умолчанию).
Обрезка
Мы смогли вычислить полное разрешение и прямоугольник обрезки, сопоставив форму руки игрока на картинке с нашими собственными картинками, так как размер руки зависит только от вертикального разрешения, и он всегда рисуется одинаково, когда стоит на месте (за исключением затенения, конечно). Было немного трудно сопоставить руку с таким большим количеством искусственных изображений jpeg, но мы подтвердили это с помощью нескольких jpeg-денуазеров, а также путем репликации одних и тех же настроек jpeg для нашего собственного скриншота, и мы независимо получили точно такой же прямоугольник обрезки каждый раз, так что мы довольно уверены в этом. Вот как это выглядит наложение на случайное полное игровое окно с разрешением 1920x1148:
(Вы можете видеть, как обрезка намеренно оставляет сердца, горячую панель и название версии.)
Это дает нам координаты начала обрезки 138;48 (верхний левый угол прямоугольника обрезки).
Размер обрезанного прямоугольника, конечно же, соответствует фактическому скриншоту 1602x971, который у нас есть.
Перекрестие
Как уже упоминалось ранее, перекрестие должно было быть отредактировано из изображения, потому что не было никакого способа скрыть графический интерфейс (никакой функциональности F1). Однако это было сделано не очень точно, так что вы все еще можете найти некоторые оставшиеся артефакты на изображении. Это углы перекрестия.
Виньетка
Прежде чем Кристофер сообщил нам свое первоначальное разрешение монитора, мы попытались выяснить его сами, а также исходный центр экрана. Для этого мы использовали наложение виньетки, которое присутствует на причудливой графике и видно на скриншоте. Виньетка-это прозрачное наложение экрана, которое становится темнее по краям, и его размер зависит от уровня освещенности, на котором стоит игрок.
Вот полная текстура виньетки вручную нанесенная на белый фон с правильным разрешением:
Поскольку виньетка представляет собой круглую текстуру, которая растягивается, чтобы заполнить окно, соотношение ширины и высоты любого данного концентрического эллипса такое же, как и соотношение сторон исходного окна Minecraft.
Вот оригинальный скриншот с более высоким контрастом (так что вы можете увидеть цветовую полосу виньетки) и некоторые отмеченные эллипсы:
Он дал нам приблизительное соотношение сторон, но это было только приблизительно, и, вероятно, было бы действительно трудно получить его лучше. Однако то, что это действительно помогло, - это найти центр экрана и перекрестие, прежде чем мы смогли точно соответствовать руке. Именно так я впервые заметил остатки перекрестия прицела.
Облака — положение
Как всегда, узоры облаков-самая полезная вещь для определения координаты Z, так что здесь я тоже этим занимался. Здесь расположены заметным узором в виде облачка :
Исходя из этого, мы знаем, что игрок стоит примерно около Z=-30 (теперь известно, что Z=-29.04) лицом на север (в сторону-Z). Ориентация Луны также помогла изначально получить правильное направление движения (чтобы помочь найти правильные узоры облаков).
Кроме того, Кристофер сказал, что он думает, что это был случайный мир, который он намеренно создал только для того, чтобы получить хороший снимок Луны. Он действительно не думает, что ушел бы слишком далеко, он в основном просто ждал ночи, поэтому также можно с уверенностью предположить, что позиция находится около 0,0, а не в 3072 кварталах отсюда, где облака снова обернутся вокруг. Он также думает, что он сделал это в одной игровой сессии (в основном без закрытия игры или открытия других миров), что на самом деле является действительно важной частью информации. Благодаря этому мы можем проследить смещение облака X на основе времени и получить саму фактическую координату X, что в противном случае было бы невозможно, так как облака сбрасываются при закрытии игры.
Внутриигровое время — полная позиция
Время-ранняя ночь, так как луна поднимается в этом направлении (на север). Сначала была сделана оценка времени, используя уровень ночного освещения на изображении (который равен 6), чтобы быть между 13353 и 13509 тиками.
Затем, после того как мы нашли правильную перспективу (положение камеры и поворот), мы смогли точно получить фактическое время, сопоставив угол Луны на снимке. Время составляет 13246 тиков (20 тиков - 1 секунда).
Затем мы перемотали облака на это количество времени и переместили плеер (который уже стоял в правильном относительном положении) в правильную целочисленную координату X, чтобы получить совпадение узоров облаков. Это не только показало, что правильная координата X равна 90,45, но и подтвердило правильность времени, потому что в противном случае облака не совпадали бы точно, перемещая только целочисленную часть координаты (так как дробная часть уже была зафиксирована перспективой относительно блоков).
И просто для полноты картины координата Y равна 91 (92.62 eye pos), рыскание камеры -168.6, а шаг-2.4. Это было достигнуто просто путем создания рекреации и подбора правильной перспективы вручную.
Цветы
Самое ценное-это большая цветочная клумба в середине долины (а).
(Каждый цветок помечен маленькой красной точкой.)
На этом участке есть 18 цветов. Там также видны еще 2 цветочных пятна (B, C), но в каждом из них виден только 1 цветок. Большой патч будет главной особенностью, используемой для взлома семени.
Высота грязи
Еще одна вещь, которая поможет нам найти (только подтвердить, так как мы смогли найти его другим способом) координаты-это высота грязи. Там видно много границ от грязи до камня, поэтому получить достаточное количество образцов должно быть легко (это так, но на самом деле важно, что шумовые трендовые паттерны называются "аномалиями", а не просто любой грязью). Толщина грязи в каждом месте частично основана на семени, но частично также и просто на его мировых координатах, поэтому, используя своего рода статистический анализ, мы можем определить наиболее вероятную координату X/Z, грубо говоря.
Деревья
Деревья были бы интересны, но вместо этого мы сосредоточимся на цветах. Кроме того, мы не можем действительно зависеть от листьев, потому что все листья случайно сгнили в этой версии, даже будучи частью дерева.
Отрисовка границ фрагментов расстояния рендеринга
Вы можете определить край отрисованных кусков на дальней правой стороне, который мы можем использовать, чтобы получить правильное выравнивание кусков после того, как получим хорошую перспективу+наложение. Это только сейчас, когда у нас есть координаты, было бы просто подтвердить их, но изображение, вероятно, слишком размыто, чтобы сделать это (по крайней мере, не так легко).
Водопад
За листьями, возможно, и есть водопад, но его слишком трудно разглядеть, чтобы быть действительно полезным. А может быть, это просто темный навес.
Животные (Овцы)
Несмотря на то, что на картинке есть 2 овцы, рождение толпы не привязано к семени в этих старых версиях, так что это бесполезно.