Обновить
64K+

Unreal Engine *

Популярный игровой движок

6,35
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как рисовать игровые облака для чайников

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.3K

Ты — начинающий художник, который дорвался до Unreal Engine 5 и даже создал по гайду свою первую локацию. Но вот незадача: небо! Оно пустое и совсем не такое, как тебе хочется. А хочется, чтобы всё было «по красоте». Перерыв весь YouTube, ты нашёл кучу плохих роликов и парочку видео, где на протяжении 100 500 часов монотонный хмырь рассказывает художественную базу, от которой уши вянут.

Давай начнём с простого. Открываем Photoshop и создаём сцену 2048 x 2048 (можно и больше, тут стесняться не надо). Дальше нам нужно скачать два набора кистей. Вообще, их можно купить или найти официально, но мы — люди находчивые, поэтому ищем на «зелёном Ютубе под пиратским флагом».

Читать далее

Новости

Проклятие WASD: Как перенести консольный комфорт на клаву и мышь

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.4K

Недавняя волна обсуждений, в том числе статья на DTF, показала неприятную тенденцию: ПК-геймеры всё чаще используют геймпады. И причина не в переходе на консоли, а в ощущениях от игры.

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

Но как быть, если мы разрабатываем ПК-эксклюзив, а у игрока нет джойстика? Сегодня мы подумаем, как эмулировать геймпад с помощью клавиатуры и мыши, следуя индустриальным стандартам.

⬇️ ⬇️ ➡️ ➡️ 🅰️

Рефлексия в Unreal Engine или как движок знает о вашем коде всё

Уровень сложностиСложный
Время на прочтение27 мин
Охват и читатели4.7K

UHT сгенерировал 4294 строки кода из одного моего заголовочного файла. Имена свойств, смещения в памяти, флаги сериализации, exec thunks для каждой функции - всё, чтобы движок в runtime знал о классе то, что C++ забывает после компиляции. Это третья и последняя статья в серии про внутренности Unreal Engine: K2Node → Blueprint VM → рефлексия. Разбираем, что внутри этих четырёх тысяч строк, зачем каждая из них, и как ими пользуются Details panel, GC, репликация и сама Blueprint VM.

Читать далее

ProcessEvent на стероидах: сериализуемые вызовы функций в UE5 или как я готовлю материал для статей

Время на прочтение7 мин
Охват и читатели5.8K

В предыдущих двух статьях я разбирал K2Node - как устроены ноды Blueprint изнутри - и Blueprint VM: байткод, опкоды, стековую машину. Следующая на очереди - Reflection: UClass, UFunction, FProperty и вся система метаданных, на которой стоит движок.

Готовясь к ней, я решил, что лучше всего разобраться в теме поможет практика. И тут подвернулся юзкейс: мне нужен был способ сконфигурировать вызов произвольной функции в редакторе и выполнить его в рантайме. Без хардкода, без кодогенерации, без десятка одинаковых обёрток. Так появился FunctionHandler - плагин для UE 5.6, в котором пригодилось всё, о чём я писал раньше: CustomThunk'и, ExpandNode, работа с FFrame и MostRecentProperty.

Эта статья - про то, как всё сошлось в одном плагине, какие решения сработали, и на какие грабли я наступал.

Читать далее

Blueprint VM изнутри: ~80 инструкций, которые двигают вашу игру

Уровень сложностиСложный
Время на прочтение18 мин
Охват и читатели6.2K

Каждый раз, когда вы соединяете ноды в Blueprint и нажимаете Play, Unreal Engine запускает маленький процессор. У него свои инструкции, свой стек, своя защита от бесконечных циклов. Он написан в ~4000 строках C++ и живёт в одном файле. Через него проходит каждый Event Tick, каждый Event BeginPlay, каждый вызов Blueprint-функции.

Этот процессор - Blueprint VM (Virtual Machine). И сегодня мы разберём его по винтикам.

Читать далее

Unreal Engine 5.4 + C++ + MacOS Tahoe + Android build = Build Successful

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели8.2K

Небольшая инструкция для всех, кто работает в Unreal Engine и пишет на C++ или иных языках + компилирует файлы для Андроид.

Читать далее

DEVLOG 6: Диалоговая система встречает счётчик стиля из Devil May Cry

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.7K

Всем привет.
Сегодня будем обсуждать механику счётчика стиля из Devil May Cry, но в диалоговой системе!

Играя в DMC, я заметил, что момент, когда вы открываете счётчик комбо - а мне нравится это делать подкидыванием демонов в воздух - похож на то же ощущение, которое я испытываю при открытии сноски в диалоге. Это даёт ощущение перехода на более сегментированный аспект системы - сперва приёмы в воздухе, потом на земле и снова в воздухе. Или как у меня - диалог, сноска, диалог, сноска, сноска, диалог. Так что я решил попробовать добавить эту систему в свою демку.

Читать далее

Как в Unreal Engine генерируется Hierarchical Z Buffer

Уровень сложностиСложный
Время на прочтение18 мин
Охват и читатели7.6K

В этой статье разберём, как Unreal Engine строит Hierarchical Z Buffer (HZB).

Покажем, как вычисляются размеры mip-уровней, зачем нужно специальное округление float, как используются функции Gather, батчинг нескольких mip-уровней за один Dispatch, groupshared память, wave-операции и Morton Z Curve.

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

Читать далее

K2Node: магия Blueprint или что на самом деле скрывается за нодами в C++

Уровень сложностиСложный
Время на прочтение25 мин
Охват и читатели5.7K

Каждый, кто имел дело с Unreal Engine после 2014, наверняка слышал про скриптовый язык Blueprint. Но что реально происходит под капотом, когда вы таскаете ноды? Как создать свою ноду (и надо ли это вам вообще?) В данной статье я бы хотел разобрать K2Node

Читать далее

Бюджета нет — но вы держитесь

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели9.1K

Я сейчас собираю маркетинговую кампанию для своей первой игры. Денег на рекламу — ноль. И это, на самом деле, не редкость: большинство инди на старте живут в режиме «или делаем игру, или делаем маркетинг».

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

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

Читать далее

Документ, которого не существует: боль тестовых заданий в геймдеве

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели7.9K

— Нам нужен дизайн-док. — Какой именно? — Ну...ГДД.

Пожалуй, это одна из самых частых ситуаций, с которыми я столкнулся, начав искать работу в студиях.

Я уже более трёх лет в геймдеве — пусть и как инди-разработчик. У меня своя команда, собранная с нуля. Я учусь в магистратуре по профилю «геймдизайн», прошёл ряд курсов от западных университетов, написал десятки тысяч диалогов, GDD, питч-доков, фич-доков и множество других документов.

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

Под «дизайн-доком» может скрываться что угодно: от one-pager на одну страницу до многостраничного системного описания с метриками, балансом и техническими ограничениями.

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

Итак, попробуем разобраться.

Читать далее

DEVLOG 5: Система World State

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели6.9K

Всем привет!
Сегодня говорим про систему world state — она позволяет делать вариативность, запоминать решения игрока и делать реплики/ответы на основе флагов.

Читать далее

Геймдизайн начинается с двери

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели5K

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

Представьте: вы делаете свою первую игру. Вы добавляете дверь. Казалось бы, что может быть проще? Но тут же возникает куча вопросов.

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

А что, если дверь открывается только с одной стороны? Игрок проходит через неё, оборачивается - и видит, что обратно пройти нельзя. Это намеренное ограничение? Или баг? Как вы донесете до игрока, что это часть замысла, а не недоделка?

Или вот ещё: дверь закрывается за спиной. Это должно вызывать напряжение - как в Resident Evil. Но если игрок не был готов к этому, он может подумать, что застрял. Где тут грань между атмосферой и плохим UX?

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

Читать далее

Ближайшие события

DEVLOG 4: сноски. Часть 2: нарративные трюки

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.1K

Всем привет! Сегодня снова говорим про ключевую фичу проекта — сноски Дэвида Фостера Уоллеса. В этот раз без технической части.

Читать далее

Игра Сапёр на Unreal Engine > UMG > только C++ > Никаких Блупринтов

Время на прочтение5 мин
Охват и читатели11K

Захотелось мне как-то написать что-нибудь на UMG в Unreal Engine 5 и исключительно на С++ (без использования блупринтов). Заодно было любопытно краем глаза взглянуть на QT. “Пахнет небольшим проектом”, - подумал я и избрал для вдохновения игру “Сапёр” из сего репозитория -> https://github.com/Bollos00/LibreMines. Моё почтение автору той репы!

Началось всё с бездумного и медитативного переписывания… простите, портирования структуры и логики на анриловский UMG и параллельного просмотра любимых шоу на ютьюбе. Чудесное было время! Далее чуть подрефачил код, упростил его, убрал ненужное, и получилось то, что получилось. 

А ну-ка...

Одиночное и групповое движение NPC по произвольной кривой

Уровень сложностиСредний
Время на прочтение25 мин
Охват и читатели7.5K

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

— А по точкам вот прям вообще не подойдет?
— Не, ну, конечно, на крайняк подойдет, но хочу чтобы было по кривой. Да и на прошлой игре где я работал такое было, почему у нас нет?

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

Читать далее

DEVLOG 3: Сноски

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели8.4K

Всем привет!
Этот пост будет предновогодним и потому мы обсудим самую мякотку.

Сегодня обсудим ключевую фичу проекта - сноски Дэвида Фостера Уоллеса! Это автор с уникальным подходом к написанию - как понятно из названия, там что-то любопытное придумал Уоллес со сносками. Его открытие: Сноски могут быть самостоятельным сюжетным битом, ироничным и харизматичным замечанием, они могут быть большие и огромные - некоторые его сноски достигают размера целой главы и создают ощущение бесконечного текста*(это сноска, листайте в конец чтобы оценить задумку).

Читать далее

DEVLOG 2: Кубы и анимация броска

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.2K

Всем привет!
Сегодня поговорим о том как выглядит бросок кубика и как он работает.

Кубики бывают разные (СКРИН_1).
Они нужны чтобы ролевая система могла обрабатывать геймплей - бросок кубика направляет историю, делает ее непредсказуемой (или умеренно предсказуемой) и в целом является тем что оживляет характеристики персонажа, позволяет играть в игру.

Читать далее

DEVLOG 1: Работа с ARTICY

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.9K

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

Если вы достаточно информированный фанат, то знаете что Дискач делали с помощью ARTICY, что у них были такие большие деревья диалогов, что программа буквально крашилась.

Читать далее

Field of Enemies — за 3 месяца в релиз

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели9.7K

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

Читать далее
1
23 ...