LifeEXE | Unreal Engine | CG
1.94K subscribers
428 photos
539 videos
475 links
Download Telegram
🆓 Всем привет, всем привет! 🆓

Вышел бесплатный open-source плагин для Unreal Engine, который позволяет распределять «тяжёлые» задачи на несколько кадров ⬇️

📱 Gameplay Work Balancer

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

🔤Массивный спаун
🔤Процедурная генерация
🔤Обработка больших массивов данных
🔤Инициализация или очистка VFX/SFX
🔤Сложные расчеты AI

GWB не делает задачи асинхронными и не переносит их в другие потоки — они выполняются в основном игровом потоке, просто распределяются по кадрам (time-slicing).

🔤

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

📱 ue5coro

Плагин добавляет в движок полноценную поддержку C++20 корутин ⬇️

📕 coroutines

#gameplay_work_balancer #gwb #ue5coro #plugin #free #coroutine #cpp #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3614🦄52
📕 Всем привет, всем привет! 📕

В эфире рубрика выходного дня: Воскресный C++ 🦊

Numeric limits в стандарте C++ и в Unreal Engine
На Boosty и Patreon расширенная статья с множеством интерактивных примеров в Compiler Explorer


🔤🔤🔤🔤🔤🔤🔤🔤 🔤

std::numeric_limits в C++ — это стандартный шаблонный класс, который предоставляет информацию о свойствах числовых типов, например:

🔤Минимальные и максимальные значения.
🔤Точность в десятичных знаках.
🔤Специальные значения: infinity, quiet_NaN, signaling_NaN и другие.

Полная спецификация на cppreference.com

Простейший пример использования:
#include <limits>
#include <print> // C++23

int main()
{
std::println("Max int: {}", std::numeric_limits<int>::max());
std::println("Min double: {}", std::numeric_limits<double>::min());
std::println("Lowest float: {}", std::numeric_limits<float>::lowest());
std::println("Double epsilon: {}", std::numeric_limits<double>::epsilon());
return EXIT_SUCCESS;
}


Ключевые особенности
⬇️

Безопасность
🔤Использование шаблонов позволяет компилятору проверять корректность типов на этапе компиляции, предотвращая ошибки.

Вместо «магических чисел» (например, 2147483647 для int), вы используете std::numeric_limits<int>::max(). В итоге код становится более читаемым и переносимым (платформонезависимым).

Портируемость
🔤Работает с любым числовым типом — int, float, double, uint64_t, а также с пользовательскими числовыми типами, если для них существует специализация шаблона numeric_limits .

Чистота кода
🔤Сразу видно, что речь о границе типа.

Когда реально нужен ⬇️

🟢 Для инициализации переменных максимальным или минимальным значением типа. Например, при поиске минимума/максимума в массиве.
🟢 Для проверки переполнения или выхода за пределы диапазона.
🟢 Для шаблонного кода, где тип неизвестен заранее.
🟢 Спецзначения: бесконечность и NaN.

💡 Дополнительно полезно почитать про:
🔤Saturation arithmetic
🔤std::add_sat


🔤🔤🔤🔤🔤🔤 🔤🔤🔤🔤🔤🔤

В Unreal Engine имеется собственный шаблон TNumericLimits<T> — это аналог std::numeric_limits, реализованный в движке.

Заголовочный файл находится по адресу: Runtime/Core/Public/Limits.h

Применение абсолютно аналогичное, как и в стандартном C++:
#include "Math/NumericLimits.h"
#include "Logging/StructuredLog.h"

DEFINE_LOG_CATEGORY_STATIC(LogNumLimitsTest, All, All);

void NumLimitsTest()
{
const int32 MaxInt = TNumericLimits<int32>::Max();
const int32 MinInt = TNumericLimits<int32>::Min();

const float MaxFloat = TNumericLimits<float>::Max();
const float MinFloat = TNumericLimits<float>::Min();

UE_LOGFMT(LogNumLimitsTest, Display, "Int32: Min={0}, Max={1}", MinInt, MaxInt);
UE_LOGFMT(LogNumLimitsTest, Display, "Float: Min={0}, Max={1}", MinFloat, MaxFloat);
}


💡Согласно последним рекомендациям, в коде проектов под Unreal Engine можно использовать и стандартный std::numeric_limits — читаем раздел Use of standard libraries. Поэтому можно выбирать любой подходящий под вашу конкретную ситуацию шаблон.

Всем чистого кода 🤘

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | X | LifeEXE School | Itch | Wiki | Курс по UE

#code #cpp #code_hints #lifeexeEDU #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #best_practice #numeric_limits #clean_code
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥251610🦄22
📕 Всем привет, всем привет! 📕

В эфире рубрика выходного дня: Воскресный C++ 🦊

Написал большую статью на тему:
«Asserts в стандарте C++ и в Unreal Engine»

❗️ На Boosty и Patreon полная версия с множеством примеров!


По традиции сначала разбираем как все работает на чистом
C++, а потом смотрим, что происходит в Unreal Engine
.

🔤🔤🔤🔤🔤🔤

Assertions — это утверждения, проверяющие предположения программиста о корректности кода. Они помогают выявлять ошибки и документировать инварианты.

Инвариант — это условие, которое должно быть истинным всегда в определённом контексте.

Зачем нужны assertions?
🔤Раннее выявление логических ошибок
🔤Документация ожиданий внутри кода
🔤Обеспечение корректности API

Виды assertions
🔤Времени выполнения — runtime assertions
🔤Времени компиляции — compile-time assertions

🔤🔤🔤🔤🔤🔤🔤🔤 🔤

В стандартном C++ основной инструмент для реализации утверждений — это макрос препроцессора assert, определенный в заголовочном файле <cassert> :

🔤Если выражение истинно — ничего не происходит, и выполнение программы продолжается.
🔤Если выражение ложно — макрос assert выводит диагностическое сообщение в стандартный поток ошибок stderr и немедленно завершает программу путем вызова функции std::abort() ➡️

double div(double numerator, double denominator) 
{
assert(denominator != 0.0);
return numerator / denominator;
}


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

assert(divisor != 0 && "Divisor cannot be 0");
assert(("Divisor cannot be 0", divisor != 0));


Распространенная ошибка при использовании assert — это включение в проверяемое выражение кода с побочными эффектами.

Проблема в том, что когда определен макрос NDEBUG, все выражение внутри assert удаляется из кода. Это может привести к тому, что логика программы в отладочной и релизной сборках будет отличаться.

⚠️ Пример того, как делать НЕЛЬЗЯ:
assert(InitializeSubsystem());


✔️ Правильный подход — всегда отделяем действие от проверки:
[[maybe_unused]] const bool bSuccess = InitializeSubsystem();
assert(bSuccess);


🔤🔤🔤🔤🔤🔤 🔤🔤🔤🔤🔤🔤

Unreal Engine расширяет стандартный макрос assert , добавляя дополнительные возможности к рантайм проверкам, Имеются следующие семейства: check, verify, ensure.

🔤🔤🔤🔤🔤

Семейство check является прямым эквивалентом стандартного assert в Unreal Engine. Сбой check указывает на критическую ошибку в программе, и выполнение немедленно останавливается ➡️

void AMyActor::CalculateJumpVelocity(AActor* JumpTarget, FVector& JumpVelocity)
{
check(JumpTarget != nullptr);
}


Остальные макросы данного семейства: check, checkf, checkSlow, checkfSlow, checkCode, checkNoEntry, checkNoReentry, checkNoRecursion, unimplemented

🔤🔤🔤🔤🔤🔤

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

Полный список макросов: verify, verifyf, verifySlow

🔤🔤🔤🔤🔤🔤

Данное семейство макросов используется для сообщения о нефатальных ошибках. Программа не завершает работу, а отправляет отчет со стеком вызовов в Crash Reporter и продолжает выполнение: ensure, ensureAlways, ensureMsgf, ensureAlwaysMsgf

🔤🔤🔤🔤🔤 🔤🔤🔤🔤

🔤Можно проверить на этапе компиляции → static_assert
🔤Критическая ошибка + нет побочных эффектов → check
🔤Критическая ошибка + есть побочные эффекты → verify
🔤Дорогая проверка только для отладки → checkSlow
🔤Некритическая ошибка, продолжаем работу → ensure
🔤Недостижимый код → checkNoEntry или unimplemented
🔤Защита от рекурсии → checkNoRecursion
🔤Защита от повторного вызова → checkNoReentry

В статье на Boosty и Patreon подробнее про каждый из макросов и static_assert


Всем чистого кода 🤘

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | X | LifeEXE School | Itch | Wiki | Курс по UE

#code #cpp #code_hints #lifeexeEDU #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #best_practice #assert #clean_code
Please open Telegram to view this post
VIEW IN TELEGRAM
21🔥42👍11116🦄11
📕 Всем привет, всем привет! 📕

Поздравляю с началом нового учебного года! 👩‍🎓

Забирайте бесплатный купон на 100 мест на мой курс «Unreal Engine — полное руководство по разработке на С++»


🔗 https://www.udemy.com/course/unrealengine/?couponCode=00250F448AD817219C30

📣 Распространение купона приветствуется! 📣

🔤🔤🔤🔤🔤

Статистика по курсу на сегодня следующая ⬇️

6️⃣9️⃣0️⃣0️⃣студентов

1️⃣5️⃣0️⃣0️⃣ отзывов

Студенты из 7️⃣6️⃣ стран, знающие 1️⃣9️⃣ языков

3️⃣.3️⃣7️⃣9️⃣.8️⃣6️⃣3️⃣ минут просмотров6️⃣ лет

‼️ Курс находится на 15 месте среди всех курсов на русском языке по разработке программного обеспечения на Udemy — на первой странице!

Всем спасибо за отзывы и прохождение!

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | X | LifeEXE School | Itch | Wiki | Курс по UE

#code #cpp #lifeexeEDU #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #udemy #course #shooter #free #coupon
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥78247❤‍🔥42🦄11
🤘 Всем пятничный йоу! 🤘

Детей без присмотра не оставляем 🤱

#пятничное #friday #cpp #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #meme #humor
Please open Telegram to view this post
VIEW IN TELEGRAM
😁381672🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Всем привет, всем привет! 📱

Вышла Visual Studio 2026 Insiders — так теперь называется preview сборка. Скачать бесплатную Community версию можно по ссылке ⬇️

🔗 Visual Studio 2026 Insiders

Внутри:
🔤Обновленный интерфейс
🔤Улучшения редактора
🔤Подсветка C++ атрибутов
🔤.NET 10 и C# 14 поддерживаются «из коробки»
🔤Ещё более глубокая AI-интеграция 🙂 конечно же

Подробнее можно почитать в блоге ⬇️

🔗 Visual Studio 2026 Insiders is here!

💡 В Release Notes больше информации о фичах. Появился, например, встроенный Code coverage. Видео на данную тему имеется на моём канале ⬇️

🔗 Тестирование в Unreal Engine. Метрики тестирования. Тестовое покрытие. OpenCppCoverage + Jenkins

и также в тему⬇️

🔗 ТОП-50 горячих клавиш Visual Studio для навигации, редактирования кода и дебагинга

#vs #code #cpp #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2510👍7🦄11
🤘 Всем привет, всем привет! 🤘

С днём программиста всех причастных! 👨‍💻

И да.. стандарт 🔤1️⃣2️⃣8️⃣ уже на подходе..

#day256 #code #cpp #programmer_day #gamedev #lifeexe #lifeexecode #humor
Please open Telegram to view this post
VIEW IN TELEGRAM
32😁27🔥10🎉8🤯4👍33🦄2
Media is too big
VIEW IN TELEGRAM
👨‍💻 Всем вечерний привет! 👨‍💻

В новый Unreal Engine 5.7 завезли ИИ ассистента — плагин AIAssistant, который находится по адресу: Engine\Plugins\Experimental\AIAssistant

Плагин элементарный: он просто открывает веб-морду Epic Developer Assistant в отдельном окне редактора движка, и, кстати, работает без логина:
🔗 https://dev.epicgames.com/community/assistant/embedded

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


Лапидарно — несколько моментов, которые прямо бросаются в глаза 👀

🚨 Структура — всё в кучу, как в гостях у Облонских: и бизнес-логика, и Slate UI, и конфиги, и тесты.

💡 Один из способов организации кода плагина можно посмотреть в моём open-source UnrealOpenAIPlugin — простейшее разделение исходников на 3 модуля:

🔤Core классы — ядро
🔤Пользовательский интерфейс — Slate/UMG
🔤Тесты

🔴 Использование TSet в простейшем случае для 14 символов? Возможно, конечно автор изучал структуры данных на данном коде — кто знает:
FString FAIAssistantConfig::GetMainUrlAsRegexString() const
{
static const TSet<FString::ElementType> CharactersToEscape{
'.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '^', '$', '|', '\\',
};
FString Escaped;
Escaped.Reserve((MainUrl.Len() * 2) + 2 /* Allow for regex anchors */);
Escaped += FString::ElementType('^');
for (const FString::ElementType Character : MainUrl)
{
if (CharactersToEscape.Contains(Character))
{
Escaped += FString::ElementType('\\');
}
Escaped += Character;
}
Escaped += FString::ElementType('$');
Escaped.Shrink();
return Escaped;
}


💡 TSet тут избыточен — создаётся хеш-таблица с бакетами и метаданными для всего нескольких статических символов. Хватит switch/if или простейшей строки-набора:
static const FString CharsToEsc = TEXT(".+*?()[]{}^$|\\");


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

🔴 FString::ElementType в данном случае только усложняет читаемость — можно смело использовать TCHAR.

🟢 Напоминаю, что тип FString имеет методы Append и AppendChar, которые аккуратно избавят от громоздких конструкций вида += FString::ElementType
⬇️
Escaped += FString::ElementType('^');

⬇️
Escaped.AppendChar('^');


💡 Сама функция GetMainUrlAsRegexString привязана к классу. Очевидно, её можно освободить или оформить как часть библиотеки утилит, передавая MainUrl параметром. Это разблокирует (помимо славы выдающегося архитектора ПО):

🔤Переиспользование
🔤Простоту тестирования — изолированные unit-тесты
🔤Композицию — можно комбинировать функции
🔤Single Responsibility Principe (SRP) — принцип единственной ответственности: функция делает ровно свою работу, а не «висит» на конфиг-классе, к которому относится лишь косвенно

🔴 Тесты написаны в старых нотациях IMPLEMENT_SIMPLE_AUTOMATION_TEST, хотя Automation Spec уже давно доступен. Ничего критичного, но зачем тянуть старое в новом плагине.

💡В курсе по тестированию на канале мы рассматриванием оба подхода.

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | X | LifeEXE School | Itch | Wiki | Курс по UE

#code #cpp #plugin #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #ai #ai_assistant #tests #code_review
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3612🦄742😁21👍1
Media is too big
VIEW IN TELEGRAM
🆕 Всем привет, всем привет! 🆕

Новое видео в эту пятницу на канале — код-ревью плагина AI Assistant, о котором недавно был пост.

В ноябре возвращаемся к разработке игрового движка 🤘 Материалы в постпродакшне. Об этом рассказываю в начале код-ревью 😎


🔽 Ролик уже доступен на Boosty и Patreon 🔽

Увидимся в конце рабочей недели на канале!

💡Плейлист code review

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | Itch | X | Wiki | LifeEXE School

#code #cpp #plugin #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #lifeexe_youtube #ai #ai_assistant #code_review
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3184👍1🦄11
💥 Всем привет, всем привет! 💥

Видео с код-ревью AI Assistant плагина сегодня вечером на канале ⬇️

🔗 https://youtu.be/Cfj8774H1sU

🔤Посмотрим как работает плагин
🔤Проведём несколько рефакторингов
🔤Расскажу про ближайшие планы

Подключайтесь вечером в чат премьеры
— буду рад всех видеть 🤘

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | Itch | X | Wiki | LifeEXE School

#code #cpp #plugin #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #lifeexe_youtube #ai #ai_assistant #code_review
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍7🦄511
This media is not supported in your browser
VIEW IN TELEGRAM
🤘 Всем привет, всем привет! 🤘

Серия по разработке игрового движка возвращается в эту субботу 🚀


🔽 Ранняя премьера уже доступна на Boosty и Patreon 🔽

Начинаем работу над самим движком 🤘

🟢 Настраиваем основной CMAKE проект движка
🟢 Генерируем версию движка
🟢 Создаем Windows и Linux пайплайны сборки
🟢 Подключаем precompiled header files — PCH
🟢 Генерируем фильтры-директории в Visual Studio

Увидимся в конце недели на канале!

💡 Плейлист серии GAME ENGINE
💡 Вики проекта

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | Itch | X | Wiki | LifeEXE School

#gameengine #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥55751👍1🦄1
🤘 Всем привет, всем привет! 🤘

Новое видео по движку на канале ⬇️

🔗 https://youtu.be/ohEXEPYESSE

Репозиторий on air ▶️

🔗 https://github.com/life-exe/LifeExeEngine

Начинаем работу над самим движком (НАКОНЕЦ-ТО) 🤖

🟢 Настраиваем основной CMAKE проект движка
🟢 Генерируем версию движка
🟢 Создаем Windows и Linux пайплайны сборки
🟢 Подключаем precompiled header files — PCH
🟢 Генерируем фильтры-директории в Visual Studio

💡 Плейлист серии GAME ENGINE
💡 Вики проекта

Хэш-ID видео сгенерировался легендарный 😆

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | Boosty | PayPal

Ресурсы:
GitHub | Itch | X | Wiki | LifeEXE School

#gameengine #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥267🐳4211
LifeEXE | Unreal Engine | CG
📱 Всем привет, всем привет! 📱 Вышла Visual Studio 2026 Insiders — так теперь называется preview сборка. Скачать бесплатную Community версию можно по ссылке ⬇️ 🔗 Visual Studio 2026 Insiders Внутри: 🔤Обновленный интерфейс 🔤Улучшения редактора 🔤Подсветка…
📱 Всем привет, всем привет! 📱

Вышел официальный релиз Visual Studio 2026 ⬇️

🔗 https://visualstudio.microsoft.com/downloads

Много интересного для C++ разработчиков (для нас 😆) ➡️

🔤Обновлённый интерфейс + добавлено 11 новых тем
🔤Новый набор инструментов сборки: Microsoft C++ Build Tools v14.50 — улучшена поддержка стандартов C++23
🔤Предварительная поддержка AddressSanitizer для ARM64
🔤Новые хоткеи: например, Ctrl+W закрывает вкладку
🔤Подсветка атрибутов C++
🔤Возможность генерировать препроцессированный вывод файла прямо из Solution Explorer
🔤Новый проект по умолчанию для MSBuild теперь C++20
🔤Улучшен Copilot Chat
🔤Рендеринг Mermaid chart

Активно развивают поддержку Unreal Engine проектов ➡️

🔤Аргументы командной строки можно предавать и для UE проектов через верхний toolbar
🔤Performance улучшен. Имеются результаты benchmark для Unreal Engine City Sample

Все подробности в блоге Visual Studio ⬇️

🔗 What’s New for C++ Developers in Visual Studio 2026 version 18.0

На моем канале имеется научно-популярные видео в тему⬇️

🔗 ТОП-50 горячих клавиш Visual Studio для навигации, редактирования кода и дебагинга
🔗 OpenAI демо «Vision + Text To Speech» в CitySample от Unreal Engine

🔤🔤🔤🔤🔤

#vs #visual_studio #vs2026 #code #cpp #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥106👾1