• Cascadeur: будущее игровой анимации

    • Перевод
    image

    Всем привет! Мы — студия разработки Banzai Games. Рады наконец открыть здесь свой блог. Будем писать о наших технологиях, проектах и делиться историями из жизни компании. Первый материал — перевод интервью с основателем студии Евгением Дябиным, которое он дал коллегам из издания 80lv. В нем он рассказал о нашей программе для создания physics-based анимации Cascadeur и ее преимуществах перед mocap-анимацией.
    Читать дальше →
  • Реализация физически корректных объемных облаков как в игре Horizon Zero Dawn

      Раньше облака в играх рисовались обычными 2D спрайтами, которые всегда повернуты в направлении камеры, но последние годы новые модели видеокарт позволяют рисовать физически корректные облака без заметных потерь в производительности. Считается, что объемные облака в игры принесла студия Guerrilla Games вместе с игрой Horizon Zero Dawn. Конечно, такие облака умели рендерить и раньше, но студия сформировала что-то вроде промышленного стандарта на исходные ресурсы и используемые алгоритмы, и в настоящее время любая реализация объемных облаков так или иначе этому стандарту соответствует.


      Читать дальше →
    • Как мы сделали движок и игру на нем за полтора года

      Всем привет, дорогие друзья! Вот сижу, смотрю на бесконечную простыню кода, провожу ревью с баночкой ред була. Прошел год. Год, блин, всего лишь год — так много и так мало одновременно. На этот год у нас были наполеоновские планы, и сейчас кажется, что мы мало что успели. С другой стороны — нам удалось сделать кое-что, что достойно войти в анналы айти с пометкой «Слабоумие и отвага». Я бы назвал эту историю «Как запилить свой движок с тулзами и рендером с нуля всего за год». Издание выйдет на несколько томов, но куда деваться, надо с чего-то начинать. Так что погнали!

      Ровно год назад мы стартовали с проектом, о котором я теперь планирую писать во всех подробностях. С высоты полученного опыта могу смело заявить: это одна из самых рискованных и амбициозных штук, которую мы когда-либо затевали. Думаю, опыт нашей команды будет полезен другим гейм-разработчикам, ну а игроков он как минимум повеселит.
      Читать дальше →
    • Доступное объяснение алгоритма коллапса волновой функции

      • Перевод
      Алгоритм коллапса волновой функции (Wavefunction Collapse Algorithm) учит компьютер импровизировать. На входе он получает архетипичные данные и создаёт процедурно генерируемые данные, похожие на исходные.


      (Источник)

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


      (Источник)

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

      Большинство реализаций и объяснений коллапса волновой функции — это полная, оптимизированная по скорости версия алгоритма. Разумеется, все они важны и необходимы, но в них сложно разобраться с нуля. В этом посте я буду объяснять всё понятным я простым языком, сосредоточившись на версии Wavefunction с ограничениями, которую я назвал Even Simpler Tiled Model. Кроме того, я выложил пример реализации ESTM на Github. Код в нём неэффективный и медленный, но очень хорошо читаемый и подробно прокомментирован. Как только вы разберётесь в технологии, лежащей в основе ESTM, то станете ближе к пониманию более сложных версий алгоритма. Если хотите понять алгоритм коллапса волновой функции, то эта статья будет хорошим началом.
      Читать дальше →
    • Как использовать диаграммы Вороного для управления ИИ

      • Перевод
      image

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



      Пространственные отношения


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

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



      У Вороного есть ответ


      Диаграмма Вороного описывает пространственное отношение между близко расположенными точками или их их ближайшими соседями. Это множество соединённых многоугольников, полученных из точек или локаций. Каждая линия «области» Вороного находится посередине между двумя точками.
      Читать дальше →
      • +40
      • 8,3k
      • 9
    • Аппликативные регулярные выражения, как свободный альтернативный функтор

      • Перевод

      Предлагаю вашему вниманию перевод замечательной свежей статьи Джастина Ле. В своём блоге in Code этот автор достаточно легким языком рассказывает о математической сути красивых и изящных функциональных решений для практических задач. В этой статье подробно разбирается пример того, как перенос математической структуры, которую образуют данные в предметной области на систему типов программы, может сразу, как писали Джеральд и Сассман "автомагически", привести к работающему решению.


      Приведённый на картинке код — это полноценная самодостаточная, расширяемая реализация парсера регулярных выражений, написанная "с нуля". Высший класс, настоящая магия типов!

      Читать дальше →
      • +29
      • 5,4k
      • 5
    • Создание игры «35ММ». Постапокалипсис в России



      Всем доброго времени суток, меня зовут Сергей Носков. Сегодня я бы хотел рассказать о создании моего первого полноценного инди-проекта под названием 35ММ, вышедшего в Steam в 2016 году. История конечно давняя, и с тех пор уже было опубликовано несколько статей и интервью на тему проекта, однако, подробного описания процесса разработки не было. Также, практически не были затронуты технические моменты реализации. Об этом, собственно, мы и поговорим.

      Начнем с небольшой предыстории. 35ММ — это адвенчура с видом от первого лица в сеттинге постапокалипсиса на территории России. В народе — симулятор ходьбы. Игра повествует нам историю путешествия двух странников по опустевшим землям, оставленным цивилизацией. Основная часть населения вымерла после страшной болезни, и теперь природа отыгрывает у человечества свои очки. К сожалению, уже не помню точно, как зародилась идея данного проекта, но точно помню, что на тот момент я был ярым фанатом темы сталкера, игр «Метро» и вообще подобного атмосферного антуража. У меня всегда вызывали трепет и восторг пейзажи заброшенных городов, промышленных зон и деревень. Уж не знаю, что это за болезнь такая и как такую любовь объяснить, но нас таких много. В общем-то, подобной страсти по данной теме было достаточно для того, чтобы начать создание своего небольшого игрового мира.
      Читать дальше →
    • Логична ли математика или почему парадоксальны аксиоматические теории

      image

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

      Все основы мы осветить не сможем, поэтому пока направим свой просветительский луч на занимательные задачки, называемые парадоксами. По ходу освещения темы мы постепенно углубимся в недра подхода, называемого логикой, а затем обратим внимание на связи логики и математики, после чего наши читатели смогут легко разобраться не только в причинах полезности логики при выводе аксиоматических теорий, но и зачем вообще аксиоматические теории нужны, а так же поймут как не надо подходить к строительству непротиворечивых теорий.
      Читать дальше →
    • Физика игрового торнадо: как реализована аэродинамика в Just Cause 4 (трафик)

      • Перевод
      Жак Кернер — старший инженер-разработчик ПО в Avalanche Studios.


      Как будто раньше игра была недостаточно безумной

      Введение


      Серия игр Just Cause и Avalanche Studios известны своей технологией открытого мира, обеспечивающего разнообразный и увлекательный игровой процесс. В последней версии игры — Just Cause 4 — добавлены ветер и погодные катаклизмы, ставшие новинкой в стеке технологий, углубляющих игровой процесс. Но экстремальные природные условия изначально задумывались не просто как способ симуляции более правдоподобного мира. Ярость природы управляется силами зла, противостоящими Рико Родригесу. Мы намеревались сделать так, чтобы ветер проявлялся более явно и экстремальные погодные условия не выглядели как внезапные события, чуждые этому миру. В этой статье представлены техники, разработанные нами для реализации ветра во всех его проявлениях с физической точки зрения, а также реакции на него всех объектов.

      [Под катом около 120 МБ файлов GIF]
      Читать дальше →
      • +33
      • 7,8k
      • 4
    • Неожиданная эффективность квазислучайных последовательностей

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


      Рисунок 1. Сравнение различных квазислучайных последовательностей с низким расхождением. Заметьте, что предлагаемая мной $R$-последовательность создаёт более равномерно распределённые точки, чем все остальные методы. Более того, все остальные методы требуют тщательного подбора базовых параметров, а в случае неправильного подбора приводят к вырожденности (например справа вверху)

      Рассматриваемые в статье темы

      • Последовательности с низким расхождением в одном измерении
      • Методы с низким расхождением в двух измерениях
      • Расстояние упаковки
      • Множества с многоклассовым низким расхождением
      • Квазислучайные последовательности на поверхности сферы
      • Квазипериодический тайлинг плоскости
      • Маски дизеринга в компьютерной графике

      Какое-то время назад этот пост был выложен на главной странице Hacker News. Можете прочитать там его обсуждение.
      Читать дальше →
      • +90
      • 15,8k
      • 7
    • Искусственный интеллект Horizon Zero Dawn

      • Перевод
      Horizon Zero Dawn находится в списке одних из лучших эксклюзивов для Playstation 4. В роли охотницы Элой игроки путешествуют по постапокалиптическим ландшафтам будущего, чтобы раскрыть тайны её прошлого и узнать о причинах разрушения мира. Упадок человечества привёл к расцвету «машин» — роботов разных форм и размеров, свободно живущих повсюду. Эти животные-роботы умны, скоординированы и смертельно опасны: чтобы выжить, нужно быстро думать, чтобы уничтожить их — тщательно готовиться и планировать.


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

      Предупреждение: в статье присутствуют спойлеры сюжета Horizon Zero Dawn.
      Читать дальше →
    • Мечтают ли андроиды об электропанке? Как я учил нейросеть писать музыку

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

        К сожалению, многие группы, большим поклонником которых я был в юности, распались по разным причинам. Или не распались, но то, что они теперь записывают…  в общем, лучше бы они распались.

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

        Источник
        Читать дальше →
      • Создаём эффект распространения цвета в Unity

        • Перевод

        На этот эффект меня вдохновил эпизод Powerpuff Girls. Я хотела создать эффект распространения цвета в чёрно-белом мире, но реализовать его в координатах мирового пространства, чтобы видеть, как цвет закрашивает объекты, а не просто плоско распределяется по экрану, как в мультике.

        Эффект я создала в новом Lightweight Rendering Pipeline движка Unity, встроенном примере конвейера Scriptable Rendering Pipeline. Все концепции применимы и к другим конвейерам, но некоторые встроенные функции или матрицы могут иметь другие названия. Также я воспользовалась новым стеком постобработки, но в туториале опущу подробное описание его настройки, потому что о ней достаточно хорошо рассказывается в других руководствах, например в этом видео.
        Читать дальше →
      • Бикватернионы

        Если вы открыли данную статью, то наверняка уже слышали о кватернионах, и возможно даже используете их в своих разработках. Но пора подняться на уровень выше — к бикватернионам.

        В данной статье даны основные понятия о бикватернионах и операции работы с ними. Для лучшего понимания работы с бикватернионами показан наглядный пример на Javascript с использованием Canvas.
        Читать дальше →
      • О 3D-графике простыми словами

        • Перевод

        Часть 1. Введение


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

        Идея этой серии постов уже давно витала где-то на периферии моего сознания, и снова всплыла после прочтения интересной статьи с разбором последней Deus Ex.

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


        Есть много составляющих, необходимых для создания даже простой 3D-игры, не говоря уж о таком проекте, как Watch Dogs.

        У меня есть только общее представление о том, что нужно рассмотреть в этой статье, но это будет зависеть от того, какие темы вызовут интерес. Тем не менее, основная идея заключается в том, чтобы создать общее описание того, что происходит внутри современной игры, не отпугнув при этом никого из читателей — я буду предполагать, что у вас нет знаний математики и программирования. Если вы знаете разницу между ЦП и графической картой, и отличаете оперативную память от жёсткого диска, то этого будет вполне достаточно, а остальное я объясню.
        Читать дальше →
      • Симулируем реалистичную реку в Houdini и Unreal Engine 4

        • Перевод


        Когда только начался переход с DX9 на DX10 стало появляться много игр с круто смоделированной водой с правильными эффектами. Тогда разница была очень заметной, особенно если сравнивать игры прошлых поколений и тот же Crysis. Поэтому когда наткнулся на гайд, как сделать простую, но реалистичную симуляцию реки через плагин Houdini для UE4, то даже не стал задумываться и быстро перевел.
        Читать дальше →
        • +46
        • 21,9k
        • 3
      • learnopengl. Урок 1.1 — OpenGL

        • Перевод
        • Tutorial
        Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

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

        На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
        Читать дальше →
        • +39
        • 154k
        • 9
      • Тензорные разложения и их применения. Лекция в Яндексе

          Предыдущая лекция с Data Fest была посвящена алгоритмам, необходимым для построения нового вида поиска. Сегодняшний доклад тоже в некотором смысле про разные алгоритмы, а точнее про математику, лежащую в основе множества из них. О матричных разложениях зрителям рассказал доктор наук и руководитель группы вычислительных методов «Сколтеха» Иван Оселедец.


          Под катом — расшифровка и большинство слайдов.

          Читать дальше →
          • +47
          • 22,4k
          • 6
        • Вплетение нарратива в процедурные миры

          • Перевод
          image

          Уже в течение трёх лет я веду блог разработки моего нового roguelike-проекта. Истории игры в нём уделено довольно мало обсуждений, что отражает её малую информативную роль и важность в процессе разработки альфа-версии. На самом деле за посредственной и избитой научно-фантастической историей 7DRL, изложенной в версии для гейм-джема, последовал перезапуск проекта в 2013 году, и первое растягивание сроков разработки произошло только из-за воплощения уникальной детализированной истории. Всё, происходившее позже, тем или иным образом служит для поддержки нарратива.

          Теперь, когда эта часть мира Cogmind оформилась и близка к завершению, я хотел бы исследовать новую территорию, и порассуждать о том, как и зачем интегрировать элементы истории в жанр, традиционно небогатый на сюжет.
          Читать дальше →
        • Вероятностные модели: от наивного Байеса к LDA, часть 1

          • Tutorial
          Продолжаем разговор. Прошлая статья была переходной от предыдущего цикла о графических моделях вообще (часть 1, часть 2, часть 3, часть 4) к новому мини-циклу о тематическом моделировании: мы поговорили о сэмплировании как методе вывода в графических моделях. А теперь мы начинаем путь к модели латентного размещения Дирихле (latent Dirichlet allocation) и к тому, как все эти чудесные алгоритмы сэмплирования применяются на практике. Сегодня – часть первая, в которой мы поймём, куда есть смысл обобщать наивный байесовский классификатор, и заодно немного поговорим о кластеризации.


          Читать дальше →