Новое видео по движку на канале
conanspdlogpIpmlсинглтон МайерсаNonCopyable классstd::formatВидео юбилейное —#️⃣ 1️⃣ 🔤 🔤
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#log #logging #gameengine #gameengine14 #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
51 22🔥16❤10 2👍1🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
Новое видео по игровому движку в эту пятницу! Продолжаем программировать систему логирования
Ранняя премьера уже доступна на Boosty и Patreon
DEFINE_LOG_CATEGORY_STATIC
std::filesyatem и std::chronoPatreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#log #logging #gameengine #gameengine15 #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍19🔥13❤7 4🦄1 1
Новое видео по движку на канале
DEFINE_LOG_CATEGORY_STATIC
std::filesyatem и std::chronoPatreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#log #logging #gameengine #gameengine15 #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
15.🕹️ Game Engine. Система логирования. Day2: категория логирования, файл лога, debug break
#log #logging #gameengine #cmake #cpp #lifeexe #lifeexecode #lifeexeengine #unrealengine #gamedev #ue5 #unrealengine5
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
5🔥30❤7❤🔥7🦄3 2
📱 Новое видео по разработке игрового движка уже доступно на Boosty и Patreon
Лекция очень насыщенная — финально полируем систему логирования
C++20 ConceptsРазбираемся с концептами на практике
std::constructible_from
std::convertible_to
std::same_as
Другие темы выпуска
std::source_location (C++20) — автоматический вывод имени функции и номера строкиLE_LOG по аналогии с Unreal Engine
do{}while(0)if constexpr (C++17) для compile-time проверокdebugbreak под Linux /Zc:preprocessor (стандартный препроцессор в MSVC) ..., __VA_ARGS__ и __VA_OPT__Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#concepts #log #logging #gameengine #gameengine16 #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥31❤10 7🦄1 1 1
В
ArraySizeEnum UENUM(BlueprintType)
enum class ECharacterClass : uint8
{
Warrior UMETA(DisplayName = "Warrior"),
Priest UMETA(DisplayName = "Priest"),
Ranger UMETA(DisplayName = "Ranger"),
Druid UMETA(DisplayName = "Druid"),
Count UMETA(Hidden)
};
// UI цвета для каждого класса
UPROPERTY(EditAnywhere, meta = (ArraySizeEnum = "ECharacterClass"))
FColor UIColors[(uint8)ECharacterClass::Count];
// Базовое здоровье для каждого класса
UPROPERTY(EditAnywhere, meta = (ArraySizeEnum = "ECharacterClass"))
float BaseHealth[(uint8)ECharacterClass::Count];
enumenumenum элемент Count/MAX/Total с пометкой UMETA(Hidden) — так удобнее определять размер массива и этот элемент не будет виден в редактореBlueprintReadWrite/BlueprintReadOnlyC-style cast для компактности кода, но лучше использовать современный подход со static_castPatreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#tips_and_tricks #unrealengine #ue5 #code #cpp #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
55🔥32 11🦄6🐳2 2👍1
Непостоянная рубрика: Воскресный C++
Типизация и применение
std::string_literals в современном C++📕 Полноценная статья доступна для подписчиков Boosty и Patreon
using namespace std::string_literals; — это директива в C++, которая позволяет использовать суффикс s для создания объектов std::string напрямую из строковых литералов.Эта возможность появилась в стандарте C++14.
В «классическом» C++ строковый литерал
"Hello" имеет тип const char* — C-style массив символов, а не std::string#include <string>
int main()
{
auto str1 = "Hello"; // Тип: const char*
using namespace std::string_literals;
auto str2 = "Hello"s; // Тип: std::string
return EXIT_SUCCESS;
}
Без
string_literals нельзя просто взять и сложить два const char*std::string result = "Hello" + ", world";
// ОШИБКА компиляции!
// компилятор выдаст что-то такое ->
// error: invalid operands to binary expression
А вот с суффиксом
s это работает, так как вызывается перегруженный operator+ для класса string #include <print>
#include <string>
int main()
{
using namespace std::string_literals;
auto result = "Hello"s + ", world"s;
std::println("{}", result);
return EXIT_SUCCESS;
}
Что будет выведено в консоль?
#include <print>
#include <string>
void process(bool param)
{
std::println("bool");
}
void process(const std::string& str)
{
std::println("string");
}
int main()
{
using namespace std::string_literals;
process("hello"); // ?
process("hello"s); // ?
return EXIT_SUCCESS;
}
Ответ может удивить:
process("hello") выведет boolprocess("hello"s) выведет stringПочему так? У компилятора есть два пути
const char* к std::string через конструктор класса — это User-defined conversion.bool (любой не null указатель = true) — это Standard conversion.В C++ стандартные преобразования имеют приоритет. Поэтому строка молча превращается в
true, и вы попадаете не в ту функцию — суффикс s решает эту проблему.📕 Больше информации, ньюансов и примеров со ссылками на Compiler Explorer в полноценной статье на Boosty и Patreon
Patreon | Boosty | PayPal
GitHub | LifeEXE School | Itch | X | Wiki | Курс по UE
#cpp #tips_and_tricks #code #lifeexe #lifeexecode #lifeexeEDU
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤27🔥18 7 3👍1🦄1
Новая лекция по разработке игрового движка в эту пятницу на канале — финально полируем систему логирования
📱 Для желающих видео уже доступно на Boosty и Patreon
C++20 ConceptsКонцепты — это именованные требования к типам, которые делают ограничения шаблонов читаемыми и служат современной альтернативой идиоме SFINAE.
Можно сказать, что это эволюция метапрограммирования: «сырые» type traits превращаются в выразительные интерфейсы.
Разбираемся со следующими концептами на практике
std::constructible_from
std::convertible_to
std::same_as
Другие темы выпуска
std::source_location (C++20) — автоматический вывод имени функции и номера строкиLE_LOG по аналогии с Unreal Engine
do{}while(0)if constexpr (C++17) для compile-time проверокdebugbreak под Linux /Zc:preprocessor (стандартный препроцессор в MSVC) ..., __VA_ARGS__ и __VA_OPT__Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#concepts #log #logging #gameengine #gameengine16 #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
55❤21🔥11 6 3🦄1
Новое видео по разработке игрового движка на канале
std::source_location LE_LOG по аналогии с UE
/Zc:preprocessor📱 Видео уже доступно на Boosty и Patreon
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#log #gameengine #cpp #gamedev #lifeexe #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
16.🕹️ Game Engine. Система логирования. Day3: c++ concepts, std::source_location, variadic macros
#gameengine #log #logging #concepts #cpp #lifeexe #lifeexecode #lifeexeengine #unrealengine #gamedev #ue5 #unrealengine5
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
5🔥26 9❤8👍2🦄1
Новая лекция по разработке игрового движка в эту пятницу на канале — активируем пайплайн тестирования
📱 Для желающих видео уже доступно на Boosty и Patreon
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#tests #gameengine #gameengine17 #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥23🤩8❤4 2🦄1 1
Новое видео по разработке игрового движка на канале — активируем пайплайн тестирования
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#tests #gameengine #gameengine17 #cmake #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
17.🕹️ Game Engine. Google test. Базовые юнит тесты. Github workflow отчета по тестированию
#gameengine #unittests #googletest #lifeexe #lifeexecode #lifeexeengine #unrealengine #gamedev #ue5 #unrealengine5
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
🔥23👍11❤🔥8❤3⚡1
Непостоянная рубрика: Воскресный C++
📕 Полноценная статья доступна для подписчиков Boosty и Patreon
Raw String Literals (префикс R) — это необработанные строковые литералы
(raw string literals), появившиеся в C++11.Внутри
R"(...)" все символы интерпретируются буквально — не нужно экранировать специальные символы и переносы строк R"(HelloWorld)" // Базовый синтаксис
R"delimiter(HelloWorld)delimiter" // С delimiter
const std::regex pattern("\\d{3}-\\d{2}-\\d{4}");
const std::regex pattern(R"(\d{3}-\d{2}-\d{4})");const auto config = R"({
"server": {
"host": "localhost",
"port": 8080
},
"debug": true
})"s;const auto path1 = "C:\\Program Files\\MyApp\\config.ini"s;
const auto path2 = R"(C:\Program Files\MyApp\config.ini)"s;
Raw string literals — это compile-time фича. Все три варианта генерируют ИДЕНТИЧНЫЙ машинный код const auto s1 = "hello\\nworld"s;
const auto s2 = R"(hello\nworld)"s;
const auto s3 = std::string("hello\\nworld");
R"(\n)" — это буквально два символа \ и n, а не перенос строки!📕 Больше информации, ньюансов и примеров со ссылками на Compiler Explorer в полноценной статье на Boosty и Patreon
Patreon | Boosty | PayPal
GitHub | LifeEXE School | Itch | X | Wiki | Курс по UE
#cpp #tips_and_tricks #code #lifeexe #lifeexecode #lifeexeEDU
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥31 11🦄7👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Новая лекция по разработке игрового движка на следующей неделе — приступаем к графике — создаем наше первое окно и оконный менеджер
📱 Для желающих видео уже доступно на Boosty и Patreon
std::expected и std::hash<=> spaceshipPatreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#glfw #graphics #gameengine #gameengine18 #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥29❤8👍3 1 1
Новая лекция по разработке игрового движка уже завтра на канале (в этот раз в четверг) —
приступаем к графике — создаем наше первое окно https://youtu.be/5EjLzkQchgE
📱 Для желающих видео уже доступно на Boosty и Patreon
std::expected и std::hash<=> spaceshipPatreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#glfw #graphics #gameengine #gameengine18 #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
18.🕹️ Программируем Игровой Движок. Создаем GLFW окно. Пишем свой оконный менеджер #gamedev #code
#gameengine #glfw #graphics #lifeexe #lifeexeengine #unrealengine #gamedev #ue5 #unrealengine5 #opengl #directx
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
15🔥26 15❤8🦄2 2👍1
Том Луман выложил отличный гайд по первоначальной настройке Rider для C++ и Unreal Engine
Дополнения
📱 Новое видео по игровому движку уже на канале➡️ https://youtu.be/5EjLzkQchgE
#rider #ide #cpp #unrealengine #ue5 #gamedev #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥37 9 8👍2🦄1
Новая лекция по разработке игрового движка на этой неделе на канале — продолжаем работать с оконным
https://youtu.be/ceb7Yoqyfsk
📱 Для желающих поддержать канал — видео уже доступно на Boosty и Patreon
IWindowWinAPI окнаPatreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#glfw #graphics #gameengine #gameengine19 #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
10🎉25🔥15🦄6❤2 2 2 1
Новая лекция по разработке игрового уже сегодня вечером
https://youtu.be/ceb7Yoqyfsk
📱 Для желающих поддержать канал — видео уже доступно на Boosty и Patreon
IWindowWinAPI окнаПодключайтесь вечером к чату — буду рад всех видеть💭
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | LifeEXE School
#glfw #graphics #gameengine #gameengine19 #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
19.🕹️ Game Engine. Интерфейс окна IWindow. Абстракции. Внедрение зависимостей - Dependency Injection
#gameengine #glfw #graphics #lifeexe #lifeexeengine #unrealengine #gamedev #ue5 #unrealengine5 #opengl #directx
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
5🔥17❤8 4 2🦄1 1
Непостоянная рубрика: C++ по понедельникам
std::string_view — легковесный взгляд на строки📕 Полноценная статья доступна для подписчиков Boosty и Patreon
std::string_view — это легковесный неизменяемый объект из C++17, который смотрит на строковые данные, не владея ими. Внутри это просто указатель и размер.Одна функция принимает любые строковые типы без аллокаций
void printLength(std::string_view sv)
{
std::println("Length: {}", sv.size());
}
int main()
{
using namespace std::string_view_literals;
printLength("hello");
printLength("world"s);
printLength("raw string"sv);
}
substr у string_view не копирует строку — просто создаёт новый «вид» с другим указателем и длиной std::string_view text = "one,two,three";
process(text.substr(0, 3)); // 0 аллокаций
process(text.substr(4, 3)); // 0 аллокаций
process(text.substr(8, 5)); // 0 аллокаций
// std::string::substr() — каждый вызов выделяет память!
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki | Курс по UE
#cpp #tips_and_tricks #code #lifeexe #lifeexecode #lifeexeEDU
Please open Telegram to view this post
VIEW IN TELEGRAM
11❤22🔥14👍7🦄2
Новая лекция по разработке игрового движка на следующей неделе на канале — разбираемся
с событиями окна, мыши и клавиатуры!📱 Для желающих поддержать канал — видео уже доступно на Boosty и Patreon
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki
#glfw #graphics #events #gameengine #gameengine20 #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
20🔥19❤6 6👍1🦄1
Новая лекция по разработке игрового движка сегодня вечером на канале
📱 Для желающих поддержать канал — видео уже доступно на Boosty и Patreon
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki
#glfw #graphics #events #gameengine #gameengine20 #cpp #github #gamedev #lifeexe #lifeexecode #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
20.🕹️ Game Engine /// GLFW /// События окна, клавиатуры, мыши #gameengine #gamedev
#gameengine #glfw #graphics #lifeexe #lifeexeengine #unrealengine #gamedev #ue5 #unrealengine5 #opengl #directx
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/unrealengine/?referralCode=1DEBE7F013238C387B46…
2🔥25❤10 7 3👍1
Непостоянная рубрика — Воскресный Си
Перед вами один из самых знаменитых и «вирусных» фрагментов кода на
C за всю историю языка На первый взгляд кажется, что это синтаксическая ошибка — ведь здесь
switch буквально переплетён с циклом do-while. Но нет, это абсолютно валидный, стандартный C-код void fastCopy(short* to, short* from, int count)
{
if (count <= 0) return;
int n = (count + 7) / 8;
switch (count % 8)
{
case 0: do { *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
} while (--n > 0);
}
}
Приём назван в честь Тома Даффа, который придумал его в 1983 году, работая в Lucasfilm
Его задача была ускорить копирование данных при работе над программой для анимации и он нашёл элегантное и слегка безумное решение, которое сочетает в себе механизм
switch и раскрутку цикла loop unrolling Секрет в том, что в
C метки case — это обычные метки перехода, и они могут находиться внутри управляющих конструкций (do/while/for/if), лежащих в теле того же switchswitchdo-whilewhile, и цикл продолжает крутиться уже целикомПодробнее с примером Compiler Explorer в моей открытой заметке Duff's Device
Patreon | Boosty | PayPal
GitHub | Itch | X | Wiki
#c #duff_device #cpp #code #lifeexe #lifeexecode #lifeexeEDU
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥33 11❤8 2👍1🦄1
Media is too big
VIEW IN TELEGRAM
Вышло большое интервью с Бьёрном Страуструпом — создателем С++
Он неплохо прошелся по AI
AI-generated code isn't ready — it generates more bugs, more bloat, more security holes, and is nearly impossible to validate
senior developers are already retiring rather than deal with it
The problem is that even a small prompt change can shift the entire codebase in unpredictable ways
В комментах кто-то написал, что он просто не умеет в промты
Была ли это пост ирония — история умалчивает
#legend #code #cpp #ai #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥22🔥12 6🦄3👻2👍1😱1