И такое бывает в коде движка
Engine\Source\Runtime\Core\Public\Delegates\MulticastDelegateBase.h
Почему const важен? Читаем по ссылкам
Const serves several purposes which I believe too many programmers ignore. My rule is "everything should always be const unless it can't be". I wish all variables in C++ were const by default.
#пятничное #const #friday #unrealengine #ue5 #gamedev #lifeexe #lifeexecode #meme #humor
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22🔥16❤5🫡1🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
Пятничная видео-игра сегодня
Мочилово в заброшенном парк развлечений 🎢
#gamedev #games #lifeexe #lifeexecode #fridaygame #coolgame
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍10❤6🤯1🦄1
Epic Games выкатили ежемесячную подборку бесплатных курсов
#learn #course #tutorial #free #epic #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
🔥16❤6 5👍2⚡1🦄1
В эфире рубрика выходного дня: Воскресный C++
Написал большую статью на тему:
«Asserts в стандарте C++ и в Unreal Engine»
❗️ На Boosty и Patreon полная версия с множеством примеров!
По традиции сначала разбираем как все работает на чистом
C++, а потом смотрим, что происходит в Unreal Engine.
Assertions — это утверждения, проверяющие предположения программиста о корректности кода. Они помогают выявлять ошибки и документировать инварианты.
Инвариант — это условие, которое должно быть истинным всегда в определённом контексте.
Зачем нужны assertions?
Виды assertions
В стандартном C++ основной инструмент для реализации утверждений — это макрос препроцессора
assert
, определенный в заголовочном файле <cassert>
: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🔥38 10👍9❤5🦄1 1
Поздравляю с началом нового учебного года!
Забирайте бесплатный купон на 100 мест на мой курс «Unreal Engine — полное руководство по разработке на С++»
Статистика по курсу на сегодня следующая
Студенты из
Всем спасибо за отзывы и прохождение!
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
Udemy
Unreal Engine — полное руководство по разработке на С++
Раскройте возможности C++ для разработки игр в Unreal Engine
🔥76❤21 6❤🔥3⚡2🦄1 1
Epic Games опубликовали док с улучшениями редактора материалов, которые появились в Unreal Engine 5.6
Shift
#material #ue_tips #shader #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍19🔥14 6❤4🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
Полноценный брейкдаун спецэффекта падающего болида!
В качестве тренировки можно реализовать в
#vfx #material #shader #gamedev #unrealengine #ue5 #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34❤8😱5 2🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Полноценный VFX breakdown с бесплатными исходниками по созданию стилизованного эффекта
#niagara #vfx #material #shader #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
🔥36 6❤5🦄1 1