3D-режим в Diablo 2

Автор оригинала: Simon
  • Перевод
Это перевод поста Don't Starve, Diablo — Parallax 7 из блога Simon Schreibt от 25 февраля 2014 года.
Осторожно, тяжелые гифки.

В 90-х игры начали свое движение от 2D к 3D. Если бы НЛО тогда посетило землю, пришельцы решили бы, что используемые в то время низкополигональные модели без всякой фильтрации никому не нужны, и уничтожили бы Землю.

Со временем они, конечно, научились бы тому, что делало людей особенными: даже в эру 2D у них было невероятное желание рендерить в 3D, даже при том, что тогда это было просто невозможно! Все началось с реализации эффекта параллакса (в зависимости от «дистанции» некоторые элементы двигались быстрее других). Этот эффект параллакса взорвал людям мозг еще в 1982 году:


Игра: Moon Patrol источник: YouTube

Действительно, интересно, что несколько плоскостей, двигающихся по-разному, создают такой впечатляющий эффект. Но выглядит немного плоско, да? Перспективная камера над поверхностью земли выглядела бы лучше, но это невозможно сделать без применения «настоящего» 3D? Ок, воспользуемся машиной времени и переместимся в SNES-эру:


Игра: Moon Patrol источник: YouTube

Выглядит как 3D, но это не 3D! Это технология SNES под названием “Mode 7”. Для ее визуализации Nintendo манипулировала текстурами (уменьшая высоту в пользу глубины) при помощи некой программистской магии. Вот слова человека, который знает, как ее применять (он говорит о Gameboy Advance, но, насколько я знаю, для SNES рецепт тоже подходит):
«У GBA нет никаких аппаратных возможностей рендерить 3D, но можно его подделать, если по-умному управлять масштабом и переходами REG_BGxX-REG_BGxPD для каждой линии», Cearn

Кстати, даже сегодня некоторые люди сходят с ума по Mode 7 и используют его для проектов с RPG Maker. Впечатляет!
Сегодня можно рендерить каждый ресурс в «настоящем» 3D чтобы придать объем, но существуют примеры, где это просто не нужно. Фактически, иногда даже лучше использовать олдскул:


Источник: Don't Starve

Все кусты, деревья и враги в Don’t starve плоские. Мне кажется, выглядит круто!
Для меня Diablo 2 (2D ARPG 2000-го года) была первой игрой, которая совместила параллакс-эффект из Moon Patrol и что-то подобное подходу Mode 7.
Давайте посмотрим на игру со стандартными настройками. Чистый 2D. Никакой перспективы. Никакого параллакса:


Источник: Diablo 2

Но у игры был «Режим перспективы». Давайте его включим! Обратите внимание, колья закрывают разные пиксели на земле в разное время:



Выглядит как Don’t Starve, но помните: Diablo 2 – 2D игра! Официальной информации об этом режиме не было. Все, что вы сейчас читаете, стало известно благодаря отличным инструментам/документации Тома Амиго и Пола Симари. Отдельное спасибо Полу за то, что он ответил на все мои вопросы и во многом меня поддержал.

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



Если заменить текстуру земли прекрасной шахматной текстурой, видно даже лучше:



В смысле, подумайте вот о чем: каждый ресурс в сцене нужно было каким-то образом трансформировать, чтобы он выглядел перспективно без щелей у границ спрайта. Тем более учитывая количество спрайтов в сцене (шанс получить щели был достаточно велик…):




При этом код игры не должен был быть слишком запутанным! Так что, пожалуйста, имейте в виду, что в Blizzard подразделяли спрайты на кусочки размером 32х32px. Загружать только те части картинки, которые необходимы – выглядит как оптимизация. Плюс ко всему, это становится полезно, когда необходимо применить трансформацию. Смотрите, как подразделяются спрайты в игре:


Источник: D1 format by Paul Simary

Я нарисовал на прозрачной текстуре линии через каждые 32px, чтобы показать ложную сетку. Результат превзошел мои ожидания! Как показывают вертикальные линии, у спрайта есть «настоящая» точка схода глубоко в земле (чего вы могли ожидать от перспективы):



Однако я не знаю, почему нижний край так выгнут. Для перспективы это не нужно (ниже есть сцена из 3ds Max, показывающая, что, если камера не вращается вокруг своей оси, то горизонтальные линии остаются прямыми):



В любом случае, волшебники из компании Blizzard знают, зачем они это сделали. Может, это ничего и не стоит, но такая деформация зависит от «угла», под которым вы смотрите на спрайт (позиции игрока/камеры). Смотрите, как нижний край выпрямляется:



Вот скриншот для тех, кому интересно искажение шахматной текстуры:



Если вы думаете, что это все достаточно интересно, то читайте дальше и очумейте. Пол пишет, что спрайты могут иметь некое значение ориентации. В зависимости от этого значения спрайты искажаются по-разному (да… еще сложнее)! Вот пример: у стены есть направления (Левый край, верхний край, левый нижний край, и т.д.)


Источник: DT1 format by Paul Siramy

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



Как видно, трансформация в моем представлении слегка запутанная. Давайте посмотрим, как это на самом деле сделано в игре:



Этот спрайт ориентирован иначе, чем в примере, который я упомянул раньше. Смотрите, деформация совсем другая! Верхняя и нижняя границы уже не сгибаются, вместо этого они как бы «смотрят» на точку схода слева. Снова обратимся к примеру как это выглядит в 3ds Max:



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



Следующий пример показывает, насколько важно значение ориентации у спрайтов. Если просто сказать игре: «это не левая стена, а правая», наступает время щелей:



Этот режим можно было активировать только в полноэкранном режиме с D3D (Diablo 2 так же поддерживал режимы Glide и Программное ускорение), что заставило меня попытаться разобраться со старой документацией по DirectX, безуспешно.

Таким образом… здесь заканчивается наше путешествие и я надеюсь, что вы впечатлились этим примером жажды заставить 2D выглядеть, как 3D так же, как и я. Недостаток официальной информации и отсутствие официальных заявлений по этому поводу (посмотрите на сайте правительства, там нет ничего на тему «Режим перспективы в Diablo 2») подвел меня к неизбежному выводу:

Это все технологии пришельцев!

Использовавшиеся инструменты:
  • MPQ Editor (для извлечения DT1 файлов из MPQ) by Tom Amigo
  • DT1 Tools (для извлечения PCX файлов из DT1) by Paul Simary
  • DT1 Tutorial (для понимания формата DT1) by Paul Simary
  • GIMP (для редактирования/сохранения файлов PCX)
  • Diablo 2 Map Editor (для понимания карт D2) by Paul Simary

Спасибо Гансу Вурсту за эту замечательную статью об искажениях изображений, все это выглядит почти как Diablo 2 (с включенным режимом перспективы). Не знаю, может быть, программисты D2 использовали именно эту информацию, но выглядит она очень знакомо.
Поделиться публикацией

Комментарии 33

    0
    Половина картинок не открылись.
    пофиксено.
      +3
      Да просто пока дождешься пока такое кол-во гифок подгрузится…
        0
        Ну не так уж и много для такого количество изображений, 4,5 мегабайта.
      0
      Хм, в Don't scarve я вижу перспективу, а в Diablo с включеной я не вижу разницу :( Возможно gif не передает всю красоту и стоит поиграть?
        +6
        Посмотрите на первую картинку (с кольями) с выключенным режимом: кладка каменная за кольями при движении игрока всегда на одном месте. А теперь ниже с включенным режимом посмотрите: колья «движутся», создавая эффект параллакса и смотрится более живо.
          0
          Кстати, я кажется догадываюсь зачем сделано искажение нижнего края на кольях. Там несмотря на то что спрайт один, нарисовано на нем три объекта, и таким искажением текстуры симулируется параллаксное смещение копьев относительно друг друга.
        +19
        Я вообще за то, чтобы больше было таких игр с псевдо 3Д, но рисованные. Как Don't starve. Ибо теже Утиные истории в 3D вышли сильно хуже. Лучше бы было вот так:

        image

        Но всем пофиг :(
          +2
          Ого, а это откуда картинка? (В смысле, я знаю оригинал).
          UPD: загуглил по картинке. Просто концепт на тему «если бы», жаль. Я думал какая-то фанатская переделка грядёт.
            +1
            Sad, but true. Только концепт. Туда же фанатский консепт FLASHBACK.
            image

            Опять же, куда лучше того, что в 3D сделала Ubisoft, выпустив в этом году рестайлинговую версию (которая вообще не понравился никому, кого я спрашивал).
            • НЛО прилетело и опубликовало эту надпись здесь
            +1
            Не всем, сейчас очень популярны именно 2D игры, например тот же Metal Slug Defense, графика просто очуметь, и это в 2014 году!
              0
              А Metal Slug вообще не изменяет своим принципам. Ребята молодцы)
              п.с. интересно, кто вас минусанул? хейтер Metal Slug? :D
                0
                Да, SNK Playmore вообще психи в хорошем смысле этого слова, столько работы вложено, каждый объект и в целом продукт отточен до предела. В общем, японцы.
                  0
                  Как раз вчера смотрел, как AVGN с другом играют в старую версию еще для NEO GEO. Поразился качеству графики и детализации. Настоящий пиксель-арт.

                  И в тоже самое время CAPCOM стала переводить Contra с 3D. Хорошо хоть сейчас одумались и больше такого не делают, вернувшись к старой-доброй пиксельной графике. Хотя была еще такая вещь, как Hard Corps, приквел к Contra на sega Megadrive. Там хоть часть вещей в 3D, но все стилизованное и смотрится нормально.
                    +1
                    Качественный 2D (и с пиксель-арт-стилистикой) будет всё более популярен, т.к. он в основе эстетики киберпанка, а киберпанк буквально на глазах занимает всё большую площадь соцкультуры. Конечно, он всё ещё элитарен (и таким и останется), но вторичные отголоски (поп-культура) всё ближе к чистому киберпанку.
                      +1
                      Элитарен?
                      Ну-ну. Мы, по сути, живем практически в обществе победившего киберпанка. И будет еще киберпанковее.
                        0
                        Мы живём, но большинство окружающих даже не знают такого слова.
                0
                Это старые спрайты из старых Metal Slug. С действительно гениальной отрисовкой, как пиксельщик говорю.

                А вот геймификация уровня «Зарабатывай МеталСлагПойнты» уже немножко задолбала, мягко говоря.
                  0
                  Ясно, значит старая школа, а то я смотрю и глазам не верю — неужели кто-то ещё так умеет. Игровой процесс без медалек и/или телевизоров просто невозможен, но это легко решается через Freedom, так что не проблема.
                –1
                Первая мысль: ого, хочу в это играть!
                Обидно, что это всего лишь концепт…
                +8
                Через столько лет такие интересные особенности узнаём о старой доброй D2, познавательно весьма. Благодарю за перевод.
                  +2
                  Отличная статья, очень познавательно. Только «vanishing point» традиционно переводится как «точка схода».
                    +37
                    Те времена когда в Blizzard работали Волшебники, а не маркетологи.
                      0
                      Это просто нам в детстве игры казались волшебством :)
                      +2
                      Статья, это просто праздник какой-то.
                      Помнится в те времена меня очень еще зацепило довольно честное освещение для 2д игры. И этот самый эффект перспективы в режиме Direct3D и Glide.
                        –5
                        Больше всего любил играть за варвара, хотя считалось, что качать его тяжелее всего.
                          +4
                          Аж прям ностальгия нахлынула
                            0
                            Эту музыкальную тему я буду любить всегда. Столько эмоций, столько атмосферы в неё вложено автором и получено игроками.
                              0
                              Stay Awhile and Listen…
                              +3
                              А кто-нибудь знает, как запустить этот режим на современном компьютере?
                                0
                                D3Test поиграться с вариантами и не запускать на слишком большо разрешении.
                                0
                                Немного в тему из современного мира от Obsidian (Pillars of Eternity):
                                www.youtube.com/watch?v=AUleDEFkUtE
                                Вроде как, ту же технологию заюзают парни из inXile в Torment: Tides of Numenera.
                                  0
                                  Статья старая, но оставлю еще одну интересную ссылку на эту тему: https://gamedev.stackexchange.com/questions/89647/isometric-graphics-with-fake-perspective

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое