Сообщества разработчиков компьютерных игр
GameDev.ru / Сообщества / Журналы

Журналы

Ждём blender 2.8 в следующем году Blender cообщество slava_mib
Видео-обзор некоторых нововведений Blender 2.8, касающихся нового рилтайм рендера для вьюпорта:

Планируется много-много всего интересного:
- блум, блур, DoF, тонемаппинг, новый АО
- кубемапы и скрин-спейс-рефлекшены
- мягкие тени
- IBL
- SSS
- волюметрики
- и многое другое

Больше информации по всем новым (и доработанным старым) фичам на официальном сайте bledner'а.

Комментарии [7]
23 сен. 2017

Настройка рабочих столов Lazarus Дельфинарий TIFA
Проект на github содержит конфигурации рабочих столов которые повторяют интерфейс последних версий delphi.

Изображение

В комплекте два рабочих стола (для отладки и без оного) которые повторяют расположение окон ide delphi последних версий.
Импортируем и наслаждаемся =)

https://github.com/FlKo/LazarusDockedDesktops

17 сен. 2017

Дополненная реальность в браузере или что нового в Blend4Web Blend4Web prand
Дополненная реальность в браузере или что нового в Blend4Web
thumbnail | Дополненная реальность в браузере или что нового в Blend4Web
Итак, вот он новый релиз отечественного WebGL фреймворка Blend4Web 17.06. В этот раз разработчики преподнесли сюрприз в виде доступа к AR-технологии. Что такое AR? Это Дополненная Реальность, т.е. возможность симбиоза компьютерной картинки с реальным изображением, передаваемым видеокамерой. К примеру, известная игра Pokemon Go использует тот же принцип. Правда, для браузерных приложений AR пока слишком крут, и я реально еще не видел нормального инструментария в этой области.

Разработчики движка подготовили специальное демо, где этот самый режим AR представлен во всей красе (метка здесь). Особенно здорово, что можно изучить исходники демки и, возможно, создать что-то свое. По традиции, все исходники доступны в SDK.

А это пример работы AR в Blend4Web.

Еще одна очень важная особенность релиза — это поддержка ограничителей Blender. Фишка в том, что Blender позволяет задавать движение объектов, используя специальные правила —ограничители. Например, можно скопировать данные о вращении с одного объекта на другой или заставить один объект «следить» за целью. Пока только четыре ограничителя Blender доступны для использования: Copy Location, Copy Rotation, Copy Transforms и Track To.

Есть небольшая демонстрация, где представлена работа ограничителя Copy Rotation. Именно он заставляет колесики механизма вращаться в нужных направлениях, в зависимости от движения рукояти. Обратите внимания, что здесь не используется физика, а только эксплуатируется возможность ограничителя Blender.

Также в новой версии появился экспериментальный алгоритм освещения, который задействуется при использовании материалов рендера Cycles. Это позволяет более полно использовать возможности нод BSDF Glossy and BSDF Diffuse.

Более полно о релизе можно узнать здесь.

30 июня 2017

О дизайне уровней Future ElectroInUp
Вы можете сделать свой дизайн уровней. Без разницы какая. Чем выше оценка, тем этот уровень попадёт в игру.

27 мая 2017

Neon Fire в разработке Future ElectroInUp
Neon Fire в разработке
Прошло 3 месяца, а я (ElectroInUp) ничего не делаю. Помогите разработчику сделать эту игру. Она будет в неоновом стиле и совместит с Overwatch, Call of Duty, Couner-Strike и Battlefield. Ещё будет возможность стрелять из машины от первого лица. Смерть игрока должна происходить от первого лица. Также нужно сделать несколько RPG элементы и сбалансировать игру.
Игра создаётся на Unreal Engine 4, что позволяет сделать фотореалистичную графику.
NFLogo | Neon Fire в разработке

Комментарии [1]
14 мая 2017

SPb Gamedev Meetup by GameBeets GameBeets BorschGames
SPb Gamedev Meetup by GameBeets
SPb Gamedev Meetup 2 | SPb Gamedev Meetup by GameBeets


Неформальная встреча игровых разработчиков и всех причастных в Санкт-Петербурге от сообщества GameBeets!

В программе:
- панельная дискуссия на тему: Развенчание мифов игрового дизайна
- выпить в хорошей компании
- полезный нетворкинг
- шоукейс инди проектов
- розыгрыш ништяков!

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

На митапе соберутся представители компаний — разработчиков игр, независимые разработчики и те, кто хочет делать игры, но пока не понял как. Следите за новостями и раскрытием деталей программы! Мы приготовили для вас много интересного и полезного, в один пост не поместить!

Если вы хотите показать свою игру или прочитать доклад, скидывайте информацию о себе и своём проекте/докладе на нашу почту:

❗Ждем всех причастных 25 мая в 19:30 в клубе "Башни" по адресу: С-Пб, Обводного Канала наб. 74А!
❗Регистрируемся на TimePad: https://gamebeets.timepad.ru/event/490246/

Наша группа в VK

Наша страница в FB

Митап проходит при активной поддержке МанжетыГД и Lazy Bear Games.

12 мая 2017

[C#, Unity3d] Приглашаю в чат gitter.im Unity3D Gexon
Изображение

https://gitter.im/ru-sharp/general - тут просто регаешься и можно трендеть.

Приветствую начинающих и бывалых разрабов, пишущих на C#, Unity3d!
Приглашаю к нам в чат, делиться знаниями в реальном времени.

4 фев. 2017

Blend4Web подружился с Cycles Render (видео) Blend4Web prand
Случилось то, о чем просили многие. В новой версии Blend4Web научился понимать ноды Cycles, а также предоставил API для создания FPS. Вобщем, смотрим видеообзор:

30 ноя. 2016

OpenGoW: Прогресс за ноябрь OpenGoW MogAika
Наконец-то добрался до разбора основных классов, тут о них и расскажу. Кстати, информация ниже в большинстве своем является моими не особо опытными догадками и размышлениями, поэтому дополнения и поправки приветствуются в комментариях.

Структура движка


Как и у большинства других прослоек между играми и игроками, в God Of War (Kinetica, Jak II+3+X, The Getaway, SOCOM I+II, FantaVision - другие игры на этом движке) движок поделён на сущности. А этими сущностями управляют их соответствующие центральные классы со своими гигантскими методами Update. Так вот тут эти классы называются серверами (упоминания слово "сервер" как паттерна я не нашел. Ближайшим аналогом являются Manager классы из библии авторства Jason Gregory), по своей сути являются они смесью одиночки и фабрики.
+ На самом деле все немного сложнее

Так-же у каждого сервера есть свой уникальный id (индекс в глобальном массиве серверов). Используются id, например, при загрузке данных из архивов (каждый файл внутри архива содержит id), чтобы понять, метод Unmarshal какого сервера нужно вызвать чтобы загрузить этот файл.
Привожу список некоторых серверов. Имена у большинства взяты из бинарника:
  • Master Server
    Управляет другими серверами, его метод Update вызывает обновление всех остальных серверов (остальные сервера являются экземплярами этого сервера).
    Что тут говорить, если основной цикл игры выглядит примерно так:
    while(true) {
        g_pMasterServer->Update();
        g_pTimer->AdjustTime();
    }
  • GameObject Server
    Хранит игровые объекты с ссылками на подчиненные партиклы/модели/коллайдеры.
    Группирует объекты в чанки карты (cxt).
  • Animation Server
    Управляет анимацией, при этом оперирует малейшими примитивами (matrix4, vector2), умеет интерполировать между временными промежутками.
  • Script Server
    Логика игры. Кстати, все игровое меню сделано через него и лежит в одном файлике.
  • GFX_CLUT Server
    Управляет буферами, подготавливает пакеты для передачи их в графический процессор.
  • Texture Server
    Инстансы этого сервера связывают буферы CLUT(Color lookup table или палитра) и GFX(индексы для палитры). Также экземпляры текстур могут "наследоваться" друг от друга, это, например, используется для "mip" текстур, в данном случае маленькая текстура наследует палитру большей.
  • Material Server
    Очевидно что инстансы этого сервера содержат ссылки на разные текстуры (отражений/цвета), цвет, параметры освещения, тип смешивания.
  • RenderMaster Server
    Сервер создает несколько подопечных серверов, вот некоторые из них:
    • Particle Render Server
    • Flash Render Server
    • Shadow Render Server
    • Static triangle strip Render Server
      Все они в сумме работают над одной задачей - подготовить в памяти один большой пакет, который в итоге отрисует один кадр. В нем будут все модели/матрицы/программы для векторного процессора/переключения контекста/текстуры. Это все делали для того чтобы dmac контроллер шины разбирая этот большой пакет занимался отрисовкой текущего кадра, когда мы сможем готовить новый пакет для следующего кадра. При этом получается максимальное распараллеливание, когда 4 устройства: центральный процессор, контроллер шины, векторный процессор и графический процессор работают параллельно. Ну не совсем прям параллельно, например локи синхронизации между векторным процессором и графическим, чтобы первый не начал рисовать модель, когда её текстура еще не загружена, и в таком роде. Но вот лучше не придумаешь. При этом картинка страдает в задержке (пакет текущего N кадра формируется в памяти, N-1 кадр рисуется в swap-buffer, N-2 кадр на экране) в сравнении с привычной нам схемой (N кадр рисуется в swap-buffer, N-1 на экране), но выигрывает в пропускной способности.
  • Epilogue Server
    Prologue Server
    Пролог сервер отрабатывает свой Update раньше остальных, при этом создает разные буферы для "отрисовки" кадра.
    Эпилог сервер обновляется последним, при этом инициирует swap буферов и обработку пакета со следующим кадром dma контроллером.
  • Collision Server
    Управляет физикой. Содержит глобальную переменную гравитации, что не раз помогало в исследовании работы движка.
    Так-же влияет на подгрузку чанков карты. Точнее каждый чанк карты содержит инстанс статичной коллизии, привязанный к этом чанку. И определение на принадлежность игрока к чанку как-раз определяется через коллизию.
    + Фотография рабочего места разработчика, с отображением статичной коллизии чанка уровня в редакторе

  • Кроме всего этого из заметных классов есть виртуальная файловая система, но она (вроде) не является отдельным сервером, хотя используется буквально везде.

    Итог


    Игровой движок в роликах о создании игры позиционировался как очень гибкий. Что мы и видим, ведь, допустим, заменив привязанные к железу сервера, можно с минимум последствий перенести игру на другую платформу (соответствующие ресурсы придется перекомпилировать), что мы и скорее-всего и наблюдали при перевыпуске gow на ps3 и ps4. Еще заявлялось о гибкости для гейм-дизайнеров и художников, что видимо вытикает в то что большая часть игры (за исключением требовательных к скорости мест) лежит в игровых архивах.

    Благодарности


    Большое спасибо nonamezerox за помощь и наводки в нужном направлении.

    А так же в разборе наследования классов мне помогает компилятор, которым пользовались разработчики. Он вежливо переопределяет таблицу виртуальных методов класса в конструкторе и деструкторе этого экземляра класса, а так как деструкторы/конструкторы класса почти всегда вызывают соответствующие конструкторы/деструкторы своих родителей, тем самым можно извлечь древо наследования (часто мешает inline подстановка).
    Кроме того компилятор очень аккуратно расставляет указатель на таблицу виртуальных методов сразу после полезных данных структуры экземпляра класса, из чего мы можем делать вывод о размере этой структуры данных (работает только для самых корневых (не детей, а от которых наследуются) классов).
    Так же если он видит вложенную структуру, то перед там как поработать с ней, любезно высчитывает указатель на эту структуру, а потом уже начинает работать с ней (из этого можно судить о наличии этих вложенных структур и их смещение относительно основных).
    Конечно у него есть и минусы, но я его прощаю, ведь они присущи всем компиляторам с флагом -O2, а именно сплошь и рядом подстановка функций (inline), что заставляет разбирать похожие места кода лишь чтобы убедиться что они делают то-же самое.

    todo


    Основными целями сейчас исследование внутренностей. В идеале нужно разобрать форматы файлов от младшего к старшему (GFX > TXR > MAT > MDL), но пока выходит не очень ладно из-за наличия второстепенных классов и кучи интересных особенностей приставки ps2

Комментарии [4]
24 ноя. 2016

Blend4Web обзавелся встроенным поиском пути Blend4Web prand
Blend4Web обзавелся встроенным поиском пути
ris1_1 | Blend4Web обзавелся встроенным поиском пути
В последнее время разработчики особо не радуют какими-либо крутыми фичами, а больше усилий прилагают на оптимизацию системы. Нужно сказать, что это у них неплохо получается. В новой версии движка также была выполнена внутренняя оптимизация кода, в частности для алгоритма отсечения невидимых поверхностей и формата хранения геометрии.

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

Еще была добавлена логическая нода Set Camera Move Style, позволяющая контролировать поведение камеры. О создании этого узла буквально молились разработчики приложений, которые используют систему визуального программирования. Дело в том, что в Blend4Web давно встроенны несколько различных пресетов поведения камеры, которые можно выбрать на этапе проектирования сцены. И это, конечно же, значительно упрощает жизнь разработчиков. Но вот корректировать их работу было возможно только из JavaScript. Теперь это доступно и для нодового редактора логики.
ris2 | Blend4Web обзавелся встроенным поиском пути
Чтобы понять получаемые преимущества использования новой ноды - запустите следующее демо.

Более подробно о других интересных фичах нового релиза ищите на официальном сайте разработчиков.

28 окт. 2016

OpenGoW: Первые успехи OpenGoW MogAika
OpenGoW: Первые успехи
Читатель, прости что информация подается разрозненно, я не любитель писать.
Пишу я сюда больше в ожидании помощи. Если кто что знает полезного по теме, прошу, напишите в комментариях. Буду рад если укажите на ошибки, особенно в запятых и терминологии (некоторые названия я натягивал и придумывал).

Интро


Не знаю как вы,  но я тащусь от God of War. И как-то решил сделать порт на pc (7 месяцев назад). Начал с первой части, да и играл я вообще только в первые две на ps2 (остальные консоли даже в руках не держал).
Кстати у всех игр серии различия минимальные, так что информация здесь относится не только к первой части, что не может не радовать.

План


- Проверить подойдет ли golang для рендеринга и работой с сырыми данными. В общем этот этап прошел, golang оправдал себя (жалко что не в gui) https://github.com/mogaika/god_of_war_tools
- Разобрать форматы на костыле (golang + webgl = https://github.com/mogaika/god_of_war_browser). Собственно сейчас я этим и занимаюсь.
- Написать двиг, в идеале чтоб под планшетики работало, а еще лучше если его не обязательно форкать надо было, если я захочу со второй частью тоже самое сделать. Надеюсь что доживу до этого момента.

Текущий статус


Внимание: ко всем пунктам добавлять: "работает почти всегда, половина флагов не понятно что делают".

Файлы


Игра занимает 2 слоя dvd диска, что примерно равно ~9 гигам, хотя на самом деле это пространство специально "растянуто". Лишний вес набирается как от копирование игровых архивов по несколько раз, что скорее всего (но не подтвреждено) идет на ускорение работы с диском, так и от копирование одинаковой информации между wad архивами игры. Например текстуры неба/дерева/блеска/дыма будут далеко не раз повторяться из архива в архив, но это уже определенно способствует ускорению  загрузки частей игры. Напомню что в игре карта абсолютно бесшоновая, и в большинстве случаев вы можете вернуться на очень приличное расстояние назад.

Архивы и ноды


Архивы собственно являются не сколько архивами, а инструкцией как жестко распаковать ноды движка в память. Движок всю информацию хранит в нодах разного типа: текстуры, камеры, коллизия, настройки игры, эффекты, модели, системные переменные, в общем почти все. Очень прикольно что до нод можно достучаться по строчному пути, типа /GlobGame/Settings/MusicVolume, или даже так /OLYMP2A.WAD/CXT_mainRoom/gotree25/joints/jRoot. Каждое имя поддирекории он превратит в хеши строк, пройдется от корня, вызывая метод интерфеса мастер-сервера ноды, который вернет определенную субноду. На деле все это используется не так часто, критичные к скорости места обращаются напрямую к указателям и тому-подобному, но все-равно на ps2 я не ожидал такой гибкости (а стоило).
Ресурсы в архиве при объявлении могут ссылаться или содержать в себе другие ресурсы, нужные текущей ноде. Например, текстура требует объекты палитры и индексы для неё, затем материал требует кубмап и дифус текстуры, модель требует меши и материалы, объект ожидает модели, партиклы и анимации, при этом инстанс объекта ссылается на объект, а чанк карты ссылается на все эти инстансы. Очень печально что игра хило переиспользует ноды для оптимизации, иногда бывает что есть по 5 одинаковых текстур в одном архиве, если не вспоминать что некоторые текстуры не используют и половины своей палитры (можно чтобы несколько текстур использовали одну палитру), хорошо что, например, разные модели ссылаются на одинаковые текстуры (хотя модели сами могут неоправданно дублироваться из-за запекания освещения). У каждого архива - свой неймспейс, за который его ноды не могут выглядывать. Правда из-за этого непонятна фича с использованием ресурсов из других архивов, например, ноды анимации могут расширять анимации игрока, который грузится из другого архива один раз на всю игру. Хотя, возможно, это уже внутренняя реализация сервера анимаций, тогда не нарушается правило неймспейса. Но, если учесть что половину флагов я так и не понял, возможно у нод есть флаг глобальной области видимости, или типа того.

Текстуры


Текстуры устроены достаточно просто. Есть массив палитры, есть массив индексов. Только я так и не понял почему иногда текстуры ипортируютя криво, например эта:
texture_importing_problems | OpenGoW: Первые успехи
видно что в центре фиолетововые "брызги". Может кто знает с чем это связанно (меня напрягает что у некоторых текстур в конце названия виднеется bmp)?

Материалы


С ними я занимался для галочки. Очевидно материалы держат цвет и текстуры, но как определить какая текстура за что отвечает не понятно (бывают кубмап/диффуз/рефлекшн[не помню как точно называется, отвечает за поглащение цвета]), как и почему в некоторых текстура прозрачность - это черный цвет, а в других - полная прозрачность - тоже.

Меши


Непонятные слова ниже искать на этой картинке
Изображение
С мешами интереснее всего. Они хранятся в виде набора комманд (батчей) для шины vif, которая грузит данные меша в память "геометрического" процессора vu1.
Т.е. мы знаем в какую ячейку памяти vu1 мы загрузим данные. А отличать тип данных можно как-раз по этим адресам памяти. Т.е. в файле у нас что-то типа (если перевести в человекочитаемый язык):
// установить что мы будем распаковывать данные в память vu1 с шагом (аналог аргумента stride в функциях opengl, только работает наоборот).
// например, у нас XYZW|XYZW|RGB|RGB|UV|UV, а в памяти vu1 мы хотим построить XYZW|RGB|UV|XYZW|RGB|UV.
Stcycl wl=01 cl=03
// то что это текстурные координаты я определил по target адресу, и да, не бойтесь что адреса такие маленькие, ведь vu1 работает с векторами 4х4float.
vif unpack [ uv2]: 65 elements: 51 components: 2 type: 16 target: 001 sign: true addr: true size: 000144
Stmod  mode=[pos] (1) // туфта для управления шиной
Strow  proc command
// xyzw, где w - это флаги для программы, исполняющейся на vu1, например, использовать ли вертекс для построение треугольника с предыдущими 2мя, или только запомнить его, и не строить треугольника
vif unpack [xyzw]: 6d elements: 51 components: 4 type: 16 target: 003 sign: true addr: true size: 000288
Stmod  mode= pos  (0)
// rgba per vertex
vif unpack [rgba]: 6e elements: 51 components: 4 type: 08 target: 002 sign: false addr: true size: 000144
// выключаем strip, теперь данные нам нужны подряд, друг за другом
Stcycl wl=01 cl=01
// загружаем разные флаги, например тут могут быть перечислены веса для jointов
vif unpack [vmta]: 6c elements: 01 components: 4 type: 32 target: 000 sign: true addr: true size: 000010
vif unpack [meta]: 6c elements: 01 components: 4 type: 32 target: 0f4 sign: true addr: true size: 000010
nop
// говорим vu1 процессору, что он может начать обрабатывать наши данные
Mscall proc command

Для парсинга таких структур приходится эмулировать обработку пакетов в памяти. По хорошему надо отреверсить код, который исполняется на vu1, но до этого руки не дошли (точнее дошли, но сломались об непонятную магию и 5 одновременно исполняющихся инструкций с иногда работающей синхронизацией), тогда прояснятся магические флаги, которые передаются в пакетах (хотя сейчас ясно что там передается наличие тех или иных данных о вертексах (позиция/цвет/текстура/нормаль) и их джойнты. Таких батчей может быть несколько, и они не могут быть больше, чем есть места у vu1. А в нем, кстати, одновременно должно поместиться 3 таких батча, что позволяет оптимизировать работу в 3 потока (1 - "ee core" считает анимацию и всякую лабуду, 2 - gif шина передает данные в памать vu1, 3 - vu1 обрабатывает данные в памяти и отправляет их в gs через path1).
В нашем батче можно заметить что у xyzw пакета стоит размер 16 и флаг sign - что в сумме дает нам int16, эта практика распространяется на всю игру. Я не могу поверить что хватает 2х байтов на координату для такой более-менее графики.
Насчет per vertex rgba можно сказать что он используется везде. На всех статичных объектах запечены тени, из этого кстати следует что одинаковые объекты на сцене, типа камней/дверей/стен будут сохранены в памяти и переданы по шине очень много раз, при этом отличаться они будут только цветом вертексов.
+ пример модели без текстуры

Батчи пакетов группируются по материалу в массив, потом еще по корневому joint в массив - на выходе получаем меш.

Модель


Модель содержит в себе:
- меши (может быть несколько)
- текстуры для мешей
- параметры эффектов (туман/скайбокс/веревка/ ...)

Объект


Дела с объектами не так плохо. Внутри себя содержат дерево костей с матрицами и другими няшками, при этом скелет предназначен не только для модели, но также и для дочерних объектов, типа еммитера, или камеры.
Определить где bind-pose матрицы для джойнтов не удается. Вроде как inverse bind-pose есть, но изредка они задаются не для всех джойнтов, и немного кривые. При этом для каждого джойнта обязательно есть local idle-pos матрица, дублированная позицией, вращением и размером. В общем in-progress.

Анимации


Анимации могут быть дочерними почти к любому типу, при этом, видимо, могут менять их почти любое свойство. Формат еще не ковырял.

Итог


Работы Развлечения еще много. Нужно реверсить/разбираться/фиксить. Камеры/коллайдеры/скрипты совсем еще не тронуты. Рал что проделал уже неплохую работу, все-таки это веселье на выходные, да и то с большими перерывами.
Не стесняемся задавать вопросы, особенно рода "как помочь и где форкать".
Хотя на самом деле к форкам репозиторий не готов, в отличии от звездочек (так вы выразите заинтерисованность и заставите меня продолжить работу)
https://github.com/mogaika/god_of_war_browser
Вот вам призрак спарты из главного меню, у которого натянули hipoly модель лица прямо поверх его lopoly-ingame прообраза (шов на голове)
+ Показать

Ах да, названия не было, и я позаимствовал идею у openLara.

Комментарии [11]
24 окт. 2016

Быстрее на 40%. Тестируем и отписываемся! Blend4Web prand
Быстрее на 40%. Тестируем и отписываемся!
Разработчики Blend4Web продолжают радовать оптимизацией движка. Кажется совсем недавно был посрамлен посрамлен вездесущий Unity, но новый релиз b4w принес еще некоторые неожиданности.

ferma2 | Быстрее на 40%. Тестируем и отписываемся!

Разработчики уверяют, что проведенная оптимизация графической части значительно повысила производительность системы. В целом были переписаны шейдеры, уменьшено количество отправляемых директив (куда и зачем я не понял — главное работает), улучшен алгоритм теней.

Так, по словам разработчиков, на тяжелой и объемной демо «Ферма» производительность выросла на 30-40%! А это очень тяжелый проект для веба. Большое пространство, сотни объектов, анимации и  т.д.

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

Похоже, Blend4Web становится лидирующей платформой для 3D WebGL. Тестируем и отписываемся на форуме разработчиков. Чем больше отзывов, тем лучше станет движок!

Комментарии [3]
30 сен. 2016

Unreal Engine 4.13 UE4 Community std::cin

Обновление 4.13Unreal Engine 4.13 доступен! В этой версии множество улучшений по всем направлениям.

Добавлено много новых функции рендеринга, такие, как mesh decals, рисование на Render Targets, GPU morph targets, оптимизированные функции шума для материалов. Кэширование карты теней позволяет использовать больше теней (shadow-casting) от динамических источников света на сцене, чем когда-либо прежде!

В Sequencer добавлено множество новых функций. Новый Physical Animation Component позволяет Вашим персонажам реалистично реагировать на физические воздействия.

Для разработчиков мобильных приложений: динамические тени были оптимизированы, поддерживаются материалы «полной» точности (Full Precision), и пользовательская пост-обработка (custom post-processing). Так же OpenGL ES 3.1 теперь может использовать на Android.

Хотите строить уровни, находясь VR? Обязательно посмотрите новый VR Template Project! Так же VR редактор Unreal был улучшен, поддерживается размещение Foliage инстанс мешей и рисование по мешам, новые transform gizmo и выбор цвета в VR. И, наконец, теперь Вы можете сразу запускать Вашу игру прямо в VR! Вы можете включить «Enable VR Editing» в секции Experimental в Editor Preferences.

Sequencer: запись в реальном времени

Sequencer добавлена новая возможность — Live Recording.

Sequence Recorder позволяет захватывать геймплей, записывая все анимации, аудио и эффекты в отдельный ассет, который можно редактировать с помощью Sequencer! Новые возможности в этой версии:

  • Быстрая запись выбранного актера и автоматическое создание cut треков камеры, если камера записывается.
  • Возможность задавать произвольные компоненты и свойства для записи.
  • Опциональная запись данных актера помещенного на уровень.
  • Запись трансформируется в мировые координаты, когда актер присоединен (attached), но не записывается.

Кеш теней освещения

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

На рисунке выше показаны 33 динамических источника света, с очень малыми затратами:

Результаты производительности на 970 GTX в разрешении 1920х1200:

  • 33 тени от точечных источников света без кэширования: 14.89ms.
  • С кэшированием карт теней: .9ms (в 16 раз быстрее!)
  • Обратите внимание, что 2ms тратится на 33 точечных источников света, которые могут быть оптимизированы другими способами, которые не затрагиваются этим изменением.
  • Память, используемую для кэширования можно увидеть с помощью ‘Stat ShadowRendering’ команды, для этой сцены использовалось 25.6Mb.
  • Максимальную память, используемую для кэширования можно задать с помощью ‘r.Shadow.WholeSceneShadowCacheMb’

По умолчанию кэширование будет, если:

  • У примитивов установлены параметры мобильности, Static или Stationary
  • В используемых материалах, не используются World Offset
  • Свет от Point или Spot Light, отбрасывает тени, с установленой мобильностью в Movable, но при этом сам источник не двигается
Материалы, которые используют анимированную тесселяцию или Pixel Depth Offset, могут привести к появлению артефактов, так как глубина их теней кэшируются.

Генератор шума Voronoi

Добавлена новая опция — Voronoi шум, доступная в узле Noise материала. Voronoi шум, также иногда называют Worley или Cellular шум. Он может быть полезен для создания процедурного материала.

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

В этом примере используется Вороной шум с методом, называемый «gradient mapping» для эмуляции мрамора.

Кроме того, была улучшена производительность функций в Noise Material Node.

Рисование по Render Target

Появился функционал в Блупринтах для рисования по RenderTarger текстурам. Это позволяет разнообразить рендер игровых спец. эффектов, которые будут работать без изменения исходного кода.

Это моделирование жидкой поверхности (fluid surface) реализованной с помощью Блупринтов и материалов. Персонажи и снаряды могут взаимодействовать с жидкостью!

Выше показан простой редактор карты высот, сделанный полностью на Блупринтах, накапливая значение высоты при взаимодействии с трейсом.

Превью сцена для Мешей

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

Новая панель Preview Scene Settings была добавлена в редактор Static Mesh и Skeletal Mesh. Здесь Вы можете настроить несколько профилей (сцены), для просмотра мешей, а также профили для изменения:

⦁  Directional light (цвет, интенсивность, поворот)

⦁  Sky light (HDRI карта окружжения, интенсивность, поворот)

⦁  Post processing settings (идентично размещаемому post process volume)

<a href="" http:="" s1.uploadpics.ru="" images="" wkfodabwd-.jpg=""></a>

Декали для мешей

Новая функция Mesh Decals позволяет Вам плавно накладывать различные материалы поверх Ваших статических мешей. Это как второй меш, который находится над профилем другого меша, с собственной топологией и материалами.

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

В отличие от обычных  декалей, где используется проекция, decal mesh тесно связана с поверхностью на которую накладывается, поэтому возможно, потребуется включить surface offset в материале. Кроме того, будьте осторожны, если у Вас есть LODы, то меш декали могут пересекать их.

Интерактивность с 3D виджетом (компонент)

С помощью widget interaction component, Вы можете имитировать входные аппаратные события с 3D виджетом на сцене.

Вы можете прикрепить его как лазерный луч на любой объект на сцене, чтобы взаимодействовать с помощью него с виджетами. Есть и некоторые другие варианты с большими настройками поведения. Когда стандартный сигнал поступит на контроллер игрока, Вы будете инструктировать interaction component для имитации определенного сигнала аппаратного устройства, такого как левая кнопка мыши, вниз/вверх на любом виджете, на который навел пользователь.

Взаимодействие с компонентами виджета на сцене с помощью мыши больше не поддерживается. Теперь необходимо присоединить interaction component (в режиме мыши — Mouse Mode) к игроку, затем входящий сигнал передается к interaction component, когда контроллер его получает.

Кастомная постобработка для моб. устройств

Материалы постобработки теперь можно использовать на мобильных устройствах! Вот «TV Static» эффект отображается с помощью mobile render.

  • Эта функция требует включения опции «Mobile HDR», в настройках проекта
  • Поддержка выбора в PostProcessInput0 (SceneColor) с позицией смешивания ‘Before Tonemapping’ и ‘After Tonemapping’
  • Эта функция не сможет работать на старых устройствах Android, которые требуют режима «mosaic» для рендеринга HDR.
  • Pixel depth информация пока не поддерживается.

Обрезание Procedural Mesh

Новая утилита в Procedural Mesh Component позволяет «резать» процедурный Mesh в режиме реального времени с помощью плоскости.

После разреза, мы поддерживаем добавление ‘capping’ геометрии, а также создание второго Procedural Mesh Component для «отрезанной части», если это необходимо.

Кроме того, Procedural Mesh теперь поддерживает простую коллизию, поэтому Simulate Physics можно включить! И, наконец, мы добавили утилиту для копирования данных из Static Mesh в Procedural Mesh («Allow CPU Access» параметр должен быть установлен в Static Mesh для этого, чтобы работать в запеченном проекте).

Заготовка проекта под VR

Мы добавили новый шаблон проекта, предназначенный для виртуальной реальности.

Для того, чтобы получить доступ к нему, просто выберите новый вариант VR в окне выбора New Project template.

Этот Blueprint проект имеет параметры, которые оптимизированы для работы в VR до 90 кадров в секунду. Для поддержки различных типов контроллеров шаблон включает в себя два способа передвижения, разделенных на два отдельных Pawn Blueprints. Первый предназначен для геймпадов, второй поддерживает контроллеры движения (motion controllers). При использовании контроллеров движения, Вы можете телепортироваться в разные места и хватать и бросать предметы. Вариант C++ этого шаблона будет добавлен в будущем обновлении. Мобильные шаблоны VR также будут доступны позже.

VR Инструмент размещения растительности

В этой версии Вы можете использовать контроллеры движения, чтобы рассаживать объекты растительности, находясь в VR.

Выберите меш, направьте лазер и нажмите на спусковой крючок, чтобы рассаживать растительность или прочие инстанс меши! Вы можете держать кнопку модификатора для удаления растительности. Чувствительность к давлению на спусковой крючок так же поддерживается. Foliage Editor был улучшен, стал немного более функциональным в VR, хотя некоторые функции, вроде lasso и select tool, все еще недоступны.

Pose Asset

Мы добавили новый тип анимационного актива называемого Pose Asset. Он содержит набор костей и поз, которые можно смешивать.

Один из вариантов использования – поддержка лицевой анимации в FACS (Facial Action Coding System) или кривые viseme, управляющие позами. Также, Вы можете использовать эту систему для создания новой анимации путем смешивания нескольких поз.

Вы можете создать Pose Asset из Anim Sequence с помощью контекстного меню Content Browser или меню Create Asset в Persona. При создании Pose Asset, имя позы будет автоматически сгенерировано. После этого Вы можете переименовать каждую позу вручную или использовать буфер вставки, чтобы переименовать их все сразу.

Позы приводятся в движение с помощью обычных анимационных кривых. Пока они существуют в анимации, Вы можете увидеть кривую. Чтобы предварительно просмотреть позу из кривой в Persona, Вам необходимо установить Preview Pose Asset.

В AnimGraph, Вы можете использовать Pose Blender Node (или Pose By Name) для вывода позы на основе поступающих кривых.

Для поддержки этой системы, мы улучшили обработку аддитивного смешивания. В будущем мы хотим ввести поддержку кривых других ассетов (например, звуковых волн), которые могут быть использованы для управления Pose Assets и Morph Targets.

Получение UV координат при результате трейсов

Мы добавили в project setting возможность включить информацию о текстурных координатах (UV) при трассировке.

Опция в разделе Project Settings -> Physics -> Optimizations. Когда эта опция включена, Вы можете использовать функцию «Find Collision UV’, в Hit Result и получить информацию о UV для любого UV-канала в точке. Включение этой функции использует дополнительную память, так как копия UV информации должны быть сохранена в памяти процессора.

По материалам сайта https://uengine.ru
Оригинал статьи: https://uengine.ru/news/4-13-update

8 сен. 2016

Экономия памяти в 80 раз! Blend4Web prand
Экономия памяти в 80 раз!
ris1_2 | Экономия памяти в 80 раз!
Разработчики фреймворка Blend4Web умудрились значительно уменьшить расход памяти при использовании множества копий объектов. Технология отнюдь не нова и многим известна, как инстансинг геометрии. Для WebGL 1.0 это возможно при использовании специального расширения  ANGLE_instanced_arrays. Теперь есть возможность создавать большие территории, насыщенные деревьями, травой и т.п. с относительно скромным расходом памяти, что очень важно для браузерных приложений (особенно на мобильных девайсах).

Для теста была создана несложная сценка, тем не менее насыщенная, подобными объектами. При использовании инстансинга, расход памяти уменьшался с 160 до 2 Мб!

Ссылка на демо!

Сам инстансинг пока доступен для системы частиц типа HAIR. Вполне вероятно, разработчики создадут нечто подобное и для других типов объектов. Для тестирования или использовании в своих проектах скачивайте новую версию Blend4Web 16.07. Подробности релиза здесь.

29 июля 2016

На Stackoverflow добавлена community-документация Unity3D Skyblade
На Stackoverflow в рамках проекта Documentation создан раздел для Unity.
Это позволяет пользоваться документацией к Unity, созданной сообществом.

У такой документации есть преимущества:

  • Любую недоработку в документации может исправить кто угодно.
  • В любой момент можно добавить недостающую информацию.
  • Карма, полученная в рамках этого проекта, идёт в общую карму stackoverflow.

Есть и недостатки:

  • Данный ресурс не является официальным источником информации.
  • Поиск нужного раздела может быть затруднён, так как проект страдает от последствий унификации интерфейса с основным сайтом stackoverflow.

Запросы на добавление недостающей документации можно добавлять через кнопку "Request Topic".
Также можно голосовать за добавление недостающих разделов на главной странице тега Unity.

24 июля 2016

2001—2017 © GameDev.ru — Разработка игр