• Туториал по Unreal Engine. Часть 3: материалы

    • Перевод
    image

    Как и в реальном мире, в играх есть множество объектов, каждый со своим внешним видом. В Unreal Engine этот внешний вид зависит от материалов. Какой цвет имеет объект? Прозрачен ли он? Блестит ли? Все эти свойства задаются материалами.

    Материалы используются почти для любого визуального элемента в Unreal Engine. Материалы можно наносить на любые объекты, включая меши, частицы и элементы UI.

    В этой части туториала вы научитесь следующему:

    • Управлять текстурами, изменяя их яркость и цвет
    • Использовать экземпляры материалов для быстрого создания вариаций
    • Использовать динамические экземпляры материалов для изменения цвета аватара при собирании игроком предметов
    Читать дальше →
    • +23
    • 3,2k
    • 2
  • Криптография русского крестьянина

    • Перевод

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

    Должен сразу признаться, что статья не будет посвящена тому, как русским крестьянам удавалось обмениваться информацией втайне от своих помещиков.

    Умножение методом русских крестьян


    Если вы не знали о нём раньше, то это довольно любопытный подход к умножению, который не требует запоминания таблиц умножения — для него достаточно способности удваивать и делить пополам целые числа. Не очень понятно, как он относится к русским крестьянам: похоже, так же, как «датская сдоба» к Дании. Этот метод был известен ещё древним египтянам, которые явно жили намного раньше русских крестьян.

    Общее описание метода просто, но не слишком информативно. Тем не менее, давайте начнём с него.
    Читать дальше →
  • Туториал по Unreal Engine. Часть 2: Blueprints

    • Перевод
    • Tutorial
    image

    Blueprints — это система визуального скриптинга Unreal Engine 4. Она является быстрым способом создания прототипов игр. Вместо построчного написания кода всё можно делать визуально: перетаскивать ноды (узлы), задавать их свойства в интерфейсе и соединять их «провода».

    Кроме быстрого прототипирования, Blueprints также упрощают создание скриптов для непрограммистов.

    В этой части туториала мы будем использовать Blueprints для следующих операций:

    • Настройка камеры с видом сверху
    • Создание управляемого игроком актора с простыми движениями
    • Настройка ввода игрока
    • Создание элемента, исчезающего при контакте с игроком
    Читать дальше →
    • +20
    • 3,9k
    • 1
  • Двоичный поиск в графах

    • Перевод

    Двоичный поиск — один из самых базовых известных мне алгоритмов. Имея отсортированный список сравнимых элементов и целевой элемент, двоичный поиск смотрит в середину списка и сравнивает значение с целевым элементом. Если цель больше, мы повторяем с меньшей половиной списка, и наоборот.

    При каждом сравнении алгоритм двоичного поиска разбиваем пространство поиска пополам. Благодаря этому всегда будет не более $\log(n)$ сравнений со временем выполнения $O(\log n)$. Красиво, эффективно, полезно.

    Но всегда можно посмотреть под другим углом.

    Что, если попробовать выполнить двоичный поиск по графу? Большинство алгоритмов поиска по графам, такие как поиск в ширину или поиск в глубину, требуют линейного времени и были придуманы довольно умными людьми. Поэтому если двоичный поиск по графу будет иметь какой-то смысл, то он должен использовать больше информации, чем та, к которой имеют доступ обычные алгоритмы поиска.
    Читать дальше →
  • Туториал по Unreal Engine. Часть 1: знакомство с движком

    • Перевод
    • Tutorial
    image

    Unreal Engine 4 — это набор инструментов для разработки игр, имеющий широкие возможности: от создания двухмерных игр на мобильные до AAA-проектов для консолей. Этот движок использовался при разработке таких игр, как ARK: Survival Evolved, Tekken 7 и Kingdom Hearts III.

    Разработка в Unreal Engine 4 очень проста для начинающих. С помощью системы визуального создания скриптов Blueprints Visual Scripting можно создавать готовые игры, не написав ни строчки кода! В сочетании с удобным интерфейсом это позволяет быстро изготавливать рабочие прототипы.

    В этой части туториала по Unreal Engine 4 мы ознакомимся с основными возможностями программы. Вот основные темы, которые будут в нём рассмотрены:

    • Установка движка
    • Импорт ассетов
    • Создание материалов
    • Использование Blueprints для создания объектов с простейшими функциями
    Читать дальше →
    • +17
    • 6,1k
    • 9
  • Короткое плечо совпадения

    • Перевод
    Джеймс Тэнтон разбрасывается задачками по теории чисел с той же щедростью, с которой Джон Д. Рокфеллер раздавал десятицентовики. Я уже писал об одной из задач Тэнтона. Спустя несколько недель моё внимание привлёк этот твит о факториалах и квадратах и уже не давал мне покоя:

    Tweet reads: 4!+1 = 25, a square number. 5!+1 = 121, a square number. Another example? Two more examples?

    «4!+1 = 25, квадрат числа. 5!+1 = 121, тоже квадрат числа. Можете привести ещё один пример? Ещё два примера?»

    С помощью ручки и бумаги легко показать, что $6!$ не подходит. Факториал $6!$ — это $1 \times 2 \times 3 \times 4 \times 5 \times 6 = 720$; прибавив $1$, получим число $721$, которое не является квадратом. (Оно раскладывается на множители как $7 \times 103$.) С другой стороны, $7!$ равно $5040$, а прибавив $1$, мы получим $5041$, что равно $71^2$. Это даёт нам очень милое уравнение:
    Читать дальше →
  • Шон Барретт: как я попал в видеоигровую индустрию

    • Перевод
    image


    Программист Terra Nova: Strike Force Centauri, System Shock 2 и серии Thief Шон Барретт рассказывает о том, что привело его к программированию трёхмерной графики и работе над играми.

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

    Когда я был подростком, в 80-х у меня был компьютер Atari 800, на котором я занимался обычными вещами (немного игр, в основном BASIC). (Технически, по крайней мере, изначально, им владела моя семья, но я был единственным пользователем.) Хотя это было практически невозможно на 800, но я заинтересовался 3D-графикой. Я изучал Pascal и работу 3D одновременно с расшифровкой программы для рисования каркасной графики из журнала Byte; я предпринимал хакерские попытки воспроизвести тот же эффект на 800. (В конце концов мне удалось выполнить на 800 трассировку лучами простой сферы с освещением по Ламберту, а затем клетчатых и отражающих сфер на Atari ST моего друга.)
    Читать дальше →
    • +15
    • 3,4k
    • 4
  • Алгоритмы антиалиасинга в реальном времени

    • Перевод
    image

    Алиасинг (aliasing) — это, возможно, наиболее фундаментальный и самый широко обсуждаемый артефакт 3D-рендеринга всех времён. Однако в игровом сообществе его часто недопонимают. В этой статье я подробно расскажу о теме сглаживания (антиалиасинга, anti-aliasing, AA) в реальном времени, особенно о том, что касается игр, и в то же время буду излагать всё достаточно простым языком.

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

    Эту программу можно скачать здесь.

    Прежде чем начать, позвольте мне сказать несколько слов о производительности: поскольку она является самым важным аспектом графики реального времени, мы в основном сосредоточимся на том, почему и как сегодня реализуется антиалиасинг. Я упомяну характеристики производительности, но строгая оценка всех представленных в этой статье способов антиалиасинга во разнообразных случаях реального использования будет слишком широкой темой для поста.
    Читать дальше →
  • Шаблон проектирования Entity-Component-System — реализация и пример игры

    • Перевод
    image


    В этой статье я хочу обсудить шаблон проектирования «сущность-компонент-система» (Entity-Component-System, ECS). По этой теме можно найти много информации в Интернете, поэтому я не буду глубоко вдаваться в объяснения, а больше расскажу о моей собственной реализации.

    Часть 1: Реализация шаблона Entity-Component-System на C++


    Начнём сначала. Полный исходный код моей реализации ECS можно найти в репозитории на github.

    Entity-Component-System, в основном используемый в играх — это шаблон проектирования, обеспечивающий огромную гибкость в проектировании общей архитектуры программного обеспечения[1]. Такие большие компании, как Unity, Epic или Crytek используют этот шаблон в своих фреймворках, чтобы предоставить разработчикам очень богатый возможностями инструмент, с помощью которого они могут разрабатывать собственное ПО. Прочитать более широкое обсуждение по этой тематике можно в этих постах [2,3,4,5].
    Читать дальше →
    • +15
    • 4,9k
    • 6
  • Эффект дизеринга в трёхмерной игре

    • Перевод
    image

    Создатель Papers, Please Лукас Поуп работает над новым трёхмерным проектом Return of the Obra Dinn, в котором пытается с помощью эффекта дизеринга воссоздать в игре ощущение старинной книги.

    Для начала краткое объяснение: Obra Dinn выполняет внутренний рендеринг всего в 8-битной палитре в градациях серого, а затем на этапе постобработки преобразует конечные выходные данные в 1-битные значения. Преобразование из 8-битного в 1-битный цвет выполняется сравнением каждого пикселя исходного изображения с соответствующей точкой в тайловом паттерне дизеринга. Если значение пикселя изображения больше значения точки паттерна дизеринга, то выходному биту присваивается значение 1, в противном случае оно равно 0. Выходные данные упрощаются до 1-битных значений, а глаз зрителя объединяет пиксели, аппроксимируя из них больше битов.
    Читать дальше →