LifeEXE | Unreal Engine | CG
2.1K subscribers
566 photos
812 videos
716 links
Download Telegram
🤘 Всем привет, всем привет! 🤘

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

🔗 https://youtu.be/jxMXtvZspHU

🔤🔤🔤🔤🔤🔤

🟢 Настраиваем пакетный менеджер conan
🟢 Подключаем библиотеку spdlog
🟢 Создаем класс лога и уровень логирования
🟢 Реализуем идиому pIpml
🟢 Используем синглтон Майерса
🟢 Добавляем NonCopyable класс
🟢 Рассматриваем std::format

Видео юбилейное #️⃣ 1️⃣🔤🔤


💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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
5122🔥16102👍1🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
🤘 Всем привет, всем привет! 🤘

Новое видео по игровому движку в эту пятницу! Продолжаем программировать систему логирования 🙃

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


🔤🔤🔤🔤🔤🔤

🟢 Создаем категорию логирования
🟢 Добавляем макрос DEFINE_LOG_CATEGORY_STATIC
🟢 Выводим лог в файл
🟢 Рассматриваем std::filesyatem и std::chrono

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | 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🔥1374🦄11
🤘 Всем вечерний привет! 🤘

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

🔗 https://youtu.be/JxQdOn2dmcY

🔤🔤🔤🔤🔤🔤

🟢 Создаем категорию логирования
🟢 Добавляем макрос DEFINE_LOG_CATEGORY_STATIC
🟢 Выводим лог в файл
🟢 Рассматриваем std::filesyatem и std::chrono

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | 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
5🔥307❤‍🔥7🦄32
🤘 Всем привет, всем привет! 🤘

📱 Новое видео по разработке игрового движка уже доступно на 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)
🟢 Работаем с Variadic Macros: эллипсис ..., __VA_ARGS__ и __VA_OPT__

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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🔥31107🦄111
📱 Всем вечерний привет! 📱

В 🎮nreal Engine имеется полезный спецификатор для работы со статическими массивами — 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];


💡 Чем он полезен ⬇️

🟢 В редакторе массив показывает названия элементов enum
🟢 Размер массива автоматически синхронизируется с enum
🟢 Типобезопасный и понятный доступ к элементам

‼️ Нюансы использования ⬇️

⚠️ Рекомендуется добавлять в enum элемент Count/MAX/Total с пометкой UMETA(Hidden) — так удобнее определять размер массива и этот элемент не будет виден в редакторе
⚠️ Нельзя использовать BlueprintReadWrite/BlueprintReadOnly
⚠️ Для Blueprint доступа создавайте getter функции
⚠️ В примере я применяю C-style cast для компактности кода, но лучше использовать современный подход со static_cast

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | 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🔥3211🦄6🐳22👍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;
}


⁉️ ЗАЧЕМ ЭТО НУЖНО ⁉️

1️⃣ КОНКАТЕНАЦИЯ СТРОК

Без string_literals нельзя просто взять и сложить два const char*➡️

std::string result = "Hello" + ", world";

// ОШИБКА компиляции!
// компилятор выдаст что-то такое ->
// error: invalid operands to binary expression

💡 Почему? Потому что в C++ нельзя складывать два указателя (адреса памяти). Это не имеет математического смысла. Указатели можно вычитать в контексте одного массива, но не складывать.

А вот с суффиксом 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;
}


2️⃣ ПЕРЕГРУЗКА ФУНКЦИЙ (Вот тут бывает больно!)

Что будет выведено в консоль? ➡️

#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") выведет bool
😉 process("hello"s) выведет string

Почему так? У компилятора есть два пути➡️

1️⃣От const char* к std::string через конструктор класса — это User-defined conversion.

2️⃣ От указателя к bool (любой не null указатель = true) — это Standard conversion.

🔗Пример в Compiler Explorer

В 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
527🔥1873👍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)
🟢 Работаем с Variadic Macros: эллипсис ..., __VA_ARGS__ и __VA_OPT__

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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
5521🔥1163🦄1
🙃 Всем вечерний привет! 🙃

Новое видео по разработке игрового движка на канале⬇️

🔗 https://youtu.be/1_7z2EqpVhw

🟢 Работаем с концептами
🟢 std::source_location
🟢 Пишем свой макрос LE_LOG по аналогии с UE
🟢 Включаем /Zc:preprocessor
🟢 Рассматриваем variadic macros

📱 Видео уже доступно на 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
5🔥2698👍2🦄1
🤘 Всем привет, всем привет! 🤘

Новая лекция по разработке игрового движка в эту пятницу на канале — активируем пайплайн тестирования 🤖

📱 Для желающих видео уже доступно на Boosty и Patreon


🔤🔤🔤🔤🔤🔤

🟢 Подключаем Google test
🟢 Пишем базовые тесты
🟢 Добавляем Github workflow для тестов

💡 Через одну лекцию переходим к графике — начинаем программировать окна!

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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🤩842🦄11
🙃 Всем вечерний привет! 🙃

Новое видео по разработке игрового движка на канале — активируем пайплайн тестирования⬇️

🔗 https://www.youtube.com/watch?v=PmZlNwS1EMA

🔤🔤🔤🔤🔤🔤

🟢 Подключаем Google test
🟢 Пишем базовые тесты
🟢 Добавляем Github workflow для тестов

💡 Через одну лекцию переходим к графике — начинаем программировать окна!

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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
🔥23👍11❤‍🔥831
▶️ Всем привет, всем привет! ▶️

Непостоянная рубрика: Воскресный C++ 🦊

➡️Raw String Literals: префикс R

📕 Полноценная статья доступна для подписчиков Boosty и Patreon


Raw String Literals (префикс R)
— это необработанные строковые литералы (raw string literals), появившиеся в C++11.

Внутри R"(...)" все символы интерпретируются буквально — не нужно экранировать специальные символы и переносы строк ⬇️
R"(HelloWorld)" // Базовый синтаксис
R"delimiter(HelloWorld)delimiter" // С delimiter


⁉️ ЗАЧЕМ ЭТО НУЖНО ⁉️

1️⃣ РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

const std::regex pattern("\\d{3}-\\d{2}-\\d{4}");
const std::regex pattern(R"(\d{3}-\d{2}-\d{4})");


2️⃣ МНОГОСТРОЧНЫЙ JSON

const auto config = R"({
"server": {
"host": "localhost",
"port": 8080
},
"debug": true
})"s;


3️⃣ ПУТИ WINDOWS

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, а не перенос строки!

💡 Предыдущая статья «Типизация и применение std::string_literals в современном C++»

📕 Больше информации, ньюансов и примеров со ссылками на 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🔥3111🦄7👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🤘 Всем привет, всем привет! 🤘

Новая лекция по разработке игрового движка на следующей неделе — приступаем к графике — создаем наше первое окно и оконный менеджер 🤖

📱 Для желающих видео уже доступно на Boosty и Patreon


🔤🔤🔤🔤🔤🔤

🟢 Подключаем библиотеку GLFW
🟢 Разбираем std::expected и std::hash
🟢 Рассматриваем оператор <=> spaceship

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | 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🔥298👍311
🤘 Всем привет, всем привет! 🤘

Новая лекция по разработке игрового движка уже завтра на канале (в этот раз в четверг) — приступаем к графике — создаем наше первое окно 🪟 и оконный менеджер ➡️

https://youtu.be/5EjLzkQchgE

📱 Для желающих видео уже доступно на Boosty и Patreon


🔤🔤🔤🔤🔤🔤

🟢 Подключаем библиотеку GLFW
🟢 Разбираем std::expected и std::hash
🟢 Рассматриваем оператор <=> spaceship

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

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
Patreon | 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
15🔥26158🦄22👍1
📕 Всем привет, всем привет! 📕

Том Луман выложил отличный гайд по первоначальной настройке Rider для C++ и Unreal Engine ➡️

🔗 Setting up Rider for C++ and Unreal Engine

Дополнения ➡️

🔤 Visual Studio поддерживает import/export конфигурационных файлов, поэтому лучше выкладывать необходимый json файл вместо скриншотов. Обсуждали этот момент в комментах на ютьюб канале

🔤 Ещё одна хорошая статья про автоматизацию VS — Fixed Windows

🔤 Напоминаю, что на моём канале имеется видео с код-ревью курса Тома

📱 Новое видео по игровому движку уже на канале➡️ https://youtu.be/5EjLzkQchgE


#rider #ide #cpp #unrealengine #ue5 #gamedev #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥3798👍2🦄1
🤘 Всем привет, всем привет! 🤘

Новая лекция по разработке игрового движка на этой неделе на канале — продолжаем работать с оконным 🪟 менеджером ➡️

https://youtu.be/ceb7Yoqyfsk

📱 Для желающих поддержать канал — видео уже доступно на Boosty и Patreon


🔤🔤🔤🔤🔤🔤

🟢 Создаем абстракцию окна IWindow
🟢 Внедряем оконные зависимости в наш движок
🟢 Пишем тесты
🟢 Создаем классы-заглушки для самописного WinAPI окна

🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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🦄62221
🤘 Всем привет, всем привет! 🤘

Новая лекция по разработке игрового уже сегодня вечером ➡️

https://youtu.be/ceb7Yoqyfsk

📱 Для желающих поддержать канал — видео уже доступно на Boosty и Patreon


🔤🔤🔤🔤🔤🔤

🟢 Создаем абстракцию окна IWindow
🟢 Внедряем оконные зависимости в наш движок
🟢 Пишем тесты
🟢 Создаем классы-заглушки для самописного WinAPI окна

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


🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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
5🔥17842🦄11
▶️ Всем привет, всем привет! ▶️

Непостоянная рубрика: C++ по понедельникам 🦊

➡️std::string_view — легковесный взгляд на строки

📕 Полноценная статья доступна для подписчиков Boosty и Patreon


std::string_view — это легковесный неизменяемый объект из C++17, который смотрит на строковые данные, не владея ими. Внутри это просто указатель и размер.

⁉️ ЗАЧЕМ ЭТО НУЖНО ⁉️

1️⃣ Универсальность без копий

Одна функция принимает любые строковые типы без аллокаций ➡️
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);
}


2️⃣ Подстроки без выделения памяти

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() — каждый вызов выделяет память!


‼️ Для тех, кто хочет поддержать канал — можно приобрести коллекции со статьями по строками в современном C++ и вообще все статьи по ссылкам ➡️

🟢 Boosty — cтроки в современном C++
🟢 Patreon — cтроки в современном C++

🟢 Boosty — все статьи по C++ и Unreal Engine
🟢 Patreon — все статьи по C++ и Unreal Engine

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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
1122🔥14👍7🦄2
🤘 Всем привет, всем привет! 🤘

Новая лекция по разработке игрового движка на следующей неделе на канале — разбираемся с событиями окна, мыши и клавиатуры!

📱 Для желающих поддержать канал — видео уже доступно на Boosty и Patreon


🔤🔤🔤🔤🔤

💡 Плейлист серии GAME ENGINE
💡 Вики проекта
💡 Репозиторий движка

🔤🔤🔤🔤🔤🔤🔤

🤝 Поддержать:
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🔥1966👍1🦄1