Автор перевода просит у чититалей прощения за странные выражения, сумбурность повествования и другие странности. Стиль автора максимально сохранён, а статья является переводом статьи «Metal Gear Rising – Slicing».



В игре Metal Gear Rising можно резать объекты на очень маленькие кусочки. Конечно же что-то вроде этого уже было реализовано ранее, например в Tiny and Big, Afro Samurai или Crysis. Но Rising впечатлил меня больше всего. Настоящее разрезание, ничем не ограниченное. Вот вам техно-демо:



Crysis


У меня не было мыслей как вообще возможно сделать подобное. Я поискал на polycount и нашел, что эта штука, по видимому, зовется «realtime cgs». Но я не уверен в этом на 100%, а что я делаю в таких ситуациях? Спрашиваю людей. Деревья в Crysis можно простреливать, об этом я и спросил Marcel’я. Он поделился интересной ссылкой о том, как работает булева динамика в CryEngine. После чего я поставил мою старую версию Crysis и посмотрел на это сам:



Это меня удивило, поскольку обычно, когда применяется булева логика в 3Ds Max или Maya, результатом оказывается один объект. Даже если делаешь пролом, дыру, в конечном итоге это всё-равно один объект. Но здесь есть новый объект, независимый и имеющий своё собственное тело. Круто! И этот самый объект еще и используется для разлома сломанных поверхностей:



L4D2


Другой вещью, упомянутой Surfa была техника отрисовки ран в L4D2, которая также крайне впечатляюща. Они «просто» не рисуют пиксели внутри невидимой сферы и заполняют образовавшуюся дыру аппетитно выглядящей искорёженной моделью плоти.



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





Заметка на полях: В Германии мы не видим этих ран, поскольку в нашей стране практикуется строгая цензура на насилие. С другой стороны у нас нет никаких проблем с сексом и сосками :D

Metal Gear Rising


Мы счастливчики! Поскольку Platinum Games (они сделали MGR) не просто делает отличные игры, они также ведут крутой блог разработки (где можно скачать любое размещенное видео в HD, мило!). Там я и нашел много интересной информации об их подходе к разрезанию.

Факт №1 «Позиция среза»


Они могут определить несколько разных внутренних поверхностей «для каждой части тела». Я не знаю имеется ли в виду «для кости» или как еще они задают эти самые части. Но картинка в блоге должна объяснять что это значит:



Факт №2 «Направление среза»


Они могут как минимум задать какая текстура будет использоваться для горизонтальных, а какая для вертикальных срезов: «горизонтальные срезы дают сечение апельсина, а вертиакальные — арбуза.». Это довольно круто, особенно когда доходит до отрезания членов тела андроидов.



Факт №3 «Реакция среза»


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

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

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

Наблюдение №1 «Динамический скелет»


Они могут разделять структуру скелета у персонажей когда они ударены\мертвы. Подобные спец-враги показывают нам, что это возможно в любое время. Но в этом случае с заранее определенными точками разрезаний. Я считаю это просто обалденно!



Наблюдение №2 «Глубина среза»


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



Второе — срез около края арбуза не даёт алой мякоти арбуза:



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



Наблюдение №3 «Полые объекты»


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



Наблюдение №4 «Резать только киборгов!»


Не любой живой объект можно разрезать. И по-моему это здорово. Никто же не хочет видеть как будет искалечен этот котик! ¦



Наблюдение №5 «Третья рука»


В большинстве 3D RPG игр оружие «висит в воздухе», когда персонаж носит его на спине. Достаточно легко и дешево. И я был удивлен, что в MGR будет что-то именно в этой детали. Конечно, здесь нет огромного количества брони и разного вооружения, но мне очень нравится что они сделали. Может быть это вдохновит современные RPG избегать делать висящих в воздухе оружия, путем добавления небольшой «руки» для оружия.



Также я наблюдал некоторые «проблемы» или, скажем так, ограничения. Я бы хотел подчеркнуть, что мне нравится чего достигли в MGR! Это невероятно круто и то, что я напишу об этом надо воспринимать как мой интерес к этому, но никак не обвинение!

Ограничение №1 «Неразрушимые объекты»


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



Ограничение №2 «Проблема баланса»


Допустим у нас есть крыша, стоящая на 4 колоннах, в этом случае у некоторых игр есть проблема баланса. Они его не проверяют. Поэтому можно легко снести три из четырёх колонн и крыша будет стоять до тех пор, пока не уничтожить последнюю колонну. Для меня очевидно, что в MGR решили эту проблему «интересным» путём:



Ограничение №3 «Нет множественности объектов»


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



Ограничение №4 «Жирное угасание»


До приобретения игры я задал себе вопрос, а как они решили проблему, когда после некоторого времени тысячи объектов будут валяться по всему уровню. Ответ: после отрезания, спустя 10 секунд объекты растворяются:



Ограничение №5 «Внутренняя текстура»


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



Ограничение №6 «Количество срезов»


Когда набралось много порубленных объектов вокруг и кажется, что движок уже не режет новые части, пока не уменьшится количество объектов (растворятся). Я не уверен на 100%, что это так, но ощущение, что с точки зрения производительности это имеет смысл.

Часть ссылок, не влияющих на восприятие информации, я позволил себе перенести в конец статьи:

Комментарии (17)


  1. ZblCoder
    27.04.2015 18:27
    +1

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


    1. vlreshet
      27.04.2015 18:32
      +3

      За что же вы так, с котёнком то?


      1. ZblCoder
        27.04.2015 18:35

        Очень интересно посмотреть, какая текстура наложится на горизонтальный разрез и вертикальный, все это относительно положения котика в пространстве. И будут ли эти части одним объектом или нет. Это же очевидно.


        1. Shajtan
          28.04.2015 13:08
          +2

          Заседание продолжается! — молвил Остап как ни в чем не бывало. — И, как видите, господа присяжные заседатели, лед тронулся. Подзащитный пытался меня убить. Конечно, из детского любопытства. Он просто хотел узнать, что находится у меня внутри. Спешу это любопытство удовлетворить. Там внутри — благородное и очень здоровое сердце, отличные легкие и печень без признака камней. Прошу занести этот факт в протокол.


      1. Sergey6661313
        27.04.2015 22:37
        +9

        я искренне считаю что если герой в игре не может зарезать котёнка, то до боссов ему не дотянуть…


      1. Mefistofe1
        28.04.2015 00:13
        +1

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


        1. IgorAdamenko
          28.04.2015 00:52
          +3

          А может они просто любят котиков?


        1. IamNoExist
          28.04.2015 07:56

          Это не хак, а пасхалка, с чего бы они не смогли решить задачу разреза котенка, в то время как в игре есть и более сложные объекты?


          1. Mefistofe1
            28.04.2015 09:28

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


  1. hungry_ewok
    28.04.2015 11:54

    /ностальгически/
    Dark Forces: Jedi Knight, код включавший разрубание и прокаченное умение Force Throw… Какая веселая это была мясорубка…


    1. Darthman Автор
      28.04.2015 12:02

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

      Хотя могли отключить за жестокость. Вообщем этот вопрос тоже надо изучать.


      1. Idot
        03.05.2015 14:01

        Вроде, отключили ради PG-13.


  1. Nadoedalo
    28.04.2015 13:26

    Red faction(2001)?


    1. Darthman Автор
      28.04.2015 13:28
      +1

      Не совсем честное разрезание. Разрушения — да. Разрезания — нет. Там у моделей предусмотрены были разломы. А землю можно было ковырять как угодно, но это несколько другое на мой взгляд. Хотя очень похоже, что темы смежные, да. Спасибо за название.


      1. Idot
        03.05.2015 13:46

        Ну, если брать случай «у моделей предусмотрены были разломы», то это Hexen II, а после него первый Aliens vs Predator.


  1. ArtRoman
    29.04.2015 19:12

    «Tiny & Big: Grandpa's Leftovers», во всей игре лишь два «орудия» — лазер, который режет объекты и ракета, которая толкает объекты. Разрезание необходимо для прохождения. Режутся лишь определённые объекты, но их количество весьма немаленькое, а размеры – весьма различны. Объекты честно делятся на несколько, с каждой частью можно взаимодействовать, ничего не исчезает само. В демо-версии доступна первая локация, где всё можно полноценно попробовать.


  1. Idot
    03.05.2015 12:13

    >что-то вроде этого уже было реализовано ранее, например в Tiny and Big, Afro Samurai или Crysis

    Про Jedi Outcast и Jedi Academy — забыли!
    www.youtube.com/watch?v=vMICyD81kR0