LifeEXE | Unreal Engine | CG – Telegram
▶️ Всем привет, всем привет! ▶️

Непостоянная рубрика: Воскресный 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
525🔥1763👍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
5518🔥1053🦄1
LifeEXE | Unreal Engine | CG
🔝 Всем вечерний привет! 🔝 Полноценный брейкдаун создания анимации фиктивной 3D-лестницы в 2D для игры ➡️ 📱 Detective Fantasia: EXCALIMURDER #gamedev #animation #games #lifeexe #lifeexecode
This media is not supported in your browser
VIEW IN TELEGRAM
🆒 Всем привет, всем привет! 🆒

Sprite Stacking («наслоение спрайтов») — техника имитации 3D в 2D 🔥

Объект нарезается на «ломтики» (слайсы) по вертикали, а движок отрисовывает их друг над другом с небольшим смещением 👀

📱 Detective Fantasia: EXCALIMURDER

#gamedev #animation #2D #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥116🦄11
This media is not supported in your browser
VIEW IN TELEGRAM
🙃 Всем привет, всем привет! 🙃

Вышел большой туториал для новичков по Rive ➡️

🔗 QUICK-START TUTORIAL - INTERACTIVE MENU

Rive — приложение для создания интерактивных UI элементов, анимаций. Доступна как веб версия, так и десктопное приложение


У Rive имеется плагин для Unreal Engine ⬇️
🔗https://rive.app/docs/game-runtimes/unreal/unreal
🔗https://github.com/rive-app/rive-unreal

💡 И совсем недавно Rive дропнули Scripting

#rive #ui #plugin #flash #gamedev #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥2255👍2😱1🦄11
Media is too big
VIEW IN TELEGRAM
📱 Всем привет, всем привет! 📱

В Unreal Engine есть мощная команда консоли — dumpGPU

Она позволяет сдампить сырые бинарные данные промежуточных ресурсов с детализацией до конкретного прохода рендер-графа (render graph pass) ➡️

🔗 GPUDump Viewer Tool

Результат дампа генерируется в виде HTML-страницы, которую можно открыть в любом браузере.

Самая интересная фишка инструмента — встроенный вьюер текстур. Он работает на базе WebGL и позволяет вам писать кастомные пиксельные шейдеры прямо в браузере. Это дает возможность визуализировать каналы текстур, проверять значения и распаковывать данные именно так, как вам нужно для отладки 🔥

Примеры из видео ⬇️

vec3 texel = fetchTexel(uv);
display.rgb = 1.0 - texel;


vec3 texel = fetchTexel(uv);
display.rgb = texel * 0.5 + vec3(uv.x, uv.y, 0.0) * 0.5;


🔤🔤🔤💶

#rendering #debug #gpu #tips_and_tricks #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
👌161411🔥6👍2🦄11
📱 Всем привет, всем привет! 📱

Мини tip для 🎮nreal Engine — мета спефицикатор ReadOnlyKeys позволяет блокировать редактирование ключей ассоциативного массива в блюпринтах 😎

Обычная TMap — ключи можно случайно изменить ⬇️
UPROPERTY(EditAnywhere)
TMap<ECharStat, float> RegularStats;


✔️ Ключи заблокированы! Можно менять только значения ⬇️
UPROPERTY(EditAnywhere, meta = (ReadOnlyKeys))
TMap<ECharStat, float> StatsWithReadOnlyKeys;


🔤🔤🔤🔤🔤🔤🔤

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

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

#code #tips_and_tricks #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3576🦄3❤‍🔥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🔥2586👍2🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Всем привет, все привет! 📱

Value erosion в редакторе материалов 🎮nreal Engine позволяет получить более тонкий контроль над тем, как исчезает или распадается ваша текстура в шейдере ➡️

Идеально подходит для дыма, магии или растворения материалов 😶‍🌫️

#material #shader #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2386🦄21
📱 Всем вечерний привет! 📱

Мини tip для 🎮nreal Engine — для вывода в консоль сообщений из блюпринтов с цветовым кодированием Error или ⚠️Warning достаточно добавить подстроку Warning: или Error:

💡 Работает в любой позиции строки, не только в начале

‼️ Напоминаю, что вывод сообщений с конкретным verbosity должен быть семантически корректным (не просто для классной подсветки), иначе можно завалить тесты или статический анализатор в продакшне

Подробнее обо всех тонкостях тестирования в бесплатном курсе на моём ютуб канале — Тестирование в Unreal Engine

#code #tips_and_tricks #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
1🔥301152🦄2
This media is not supported in your browser
VIEW IN TELEGRAM
🆒 Всем привет, всем привет! 🆒

Большой Niagara туториал по созданию VFX эффекта взрыва 💥 в 🎮nreal Engine 🔥 с бесплатными исходниками ➡️

🔗 VFX Tutorial - Shockwave FX
🔗 Project files

#vfx #niagra #material #shader #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥30127🤯1🦄11
🎮 Всем вечерний привет! 🎮

Кайфовая эстетика и механики в стиле Control и Severance в грядущей инди-игре ➡️

📱 Psych Rift

💡 Больше майндблоуа по хэштегу #escher

#gamedev #games #lifeexe #lifeexecode #coolgame #escher
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2876🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
📕 Всем привет, всем привет! 📕

Вышел свежий туториал по интеграции геометрии SpeedTree с новой системой Nanite Foliage и ветром в 🎮nreal Engine 5.7

Применяется Houdini для конвертации тяжелых альфа-карт в полноценную непрозрачную геометрию ➡️

🔗 SpeedTree to Nanite foliage with Wind! Unreal Engine 5.7
🔗 Assets

#vfx #nanite #foliage #speedtree #houdini #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13972
🆒 Всем привет, всем привет! 🆒

Electronic Arts
открыли исходный код ShaderToHuman — полезного инструмента для разработки и отладки GLSL и HLSL шейдеров⬇️

🔗 https://github.com/electronicarts/ShaderToHuman

✍️ Printf-стиль вывода данных прямо из шейдера
💻 Immediate-mode GUI внутри шейдеров
😎 Поддержка HLSL и GLSL
🆓 MIT лицензия

Документация⬇️
📕 https://electronicarts.github.io/ShaderToHuman

💡 Quick tip: в редакторе материалов в Unreal Engine можно выводить debug значения с помощью ноды DebugScalarValues

#graphics #opensource #shader #ea #hlsl #glsl #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22106🦄1
Media is too big
VIEW IN TELEGRAM
🆒 Всем привет, всем привет! 🆒

Гигантский свежий туториал по созданию процедурной анимации паука в 🎮nreal Engine ➡️

🔗 Step by step procedural animation

Нетекстурированную модель можно скачать бесплатно ➡️ Blockout mesh free download

С мехом (повезло, что не анимация шиншиллы) — 5 баксов ➡️ Spider Skeletal Mesh

🕷 🕸

#animation #rig #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28873🦄1
🤘 Всем пятничный йоу! 🤘

На этой неделе умельцы запустили 🔤🔤🔤🔤 на.. печатной машинке 😂

#gamedev #doom #meme #humor #lifeexe #lifeexecode #friday
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2775😱3🦄1
Media is too big
VIEW IN TELEGRAM
🎮 Всем вечерний привет! 🎮

Видео-игра недели — свежайший хоррор (релиз должен быть сегодня)⬇️

📱 The 18th Attic - Paranormal Anomaly Hunting Game

🏠 Вы заперты на старом чердаке
🔫 Из оружия — только фотоаппарат
👀 Из поддержки — шерстяной негодник

🩸🩸🩸🩸 🩸🫵🩸🩸 ⭐️

#gamedev #games #lifeexe #lifeexecode #coolgame
Please open Telegram to view this post
VIEW IN TELEGRAM
11👻7🦄521
This media is not supported in your browser
VIEW IN TELEGRAM
🆒 Всем привет, всем привет! 🆒

Художник по окружению Ben Macauley воссоздал культовую железнодорожную станцию из Half-Life 2 на 🎮nreal Engine ➡️

🔗 I remastered the Half Life 2 Trainstation in Unreal in 1 Month

🔤🔤🔤🔤

#techart #unrealengine #ue5 #gamedev #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27😱53🦄2🎉11