Непостоянная рубрика: Воскресный 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❤25🔥17 6 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❤18🔥10 5 3🦄1
LifeEXE | Unreal Engine | CG
This media is not supported in your browser
VIEW IN TELEGRAM
Sprite Stacking («наслоение спрайтов») — техника имитации 3D в 2D
Объект нарезается на «ломтики» (слайсы) по вертикали, а движок отрисовывает их друг над другом с небольшим смещением
#gamedev #animation #2D #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18🔥11 6🦄1 1
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел большой туториал для новичков по Rive
Rive — приложение для создания интерактивных UI элементов, анимаций. Доступна как веб версия, так и десктопное приложение
У Rive имеется плагин для Unreal Engine
#rive #ui #plugin #flash #gamedev #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥22❤5 5👍2😱1🦄1 1
Media is too big
VIEW IN TELEGRAM
В Unreal Engine есть мощная команда консоли —
dumpGPUОна позволяет сдампить сырые бинарные данные промежуточных ресурсов с детализацией до конкретного прохода рендер-графа (render graph pass)
Результат дампа генерируется в виде 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
👌16 14❤11🔥6👍2🦄1 1
Мини tip для
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
🔥35 7 6🦄3❤🔥1
LifeEXE | Unreal Engine | CG
This media is not supported in your browser
VIEW IN TELEGRAM
Разработчики Hear Tell of Hauntings проигнорировали потрясный гайд по созданию реалистичных дробовиков и вот что из этого вышло
#gamedev #ue5 #unrealengine #humor #bugs #lifeexe #lifeexecode #friday
Please open Telegram to view this post
VIEW IN TELEGRAM
😁45🔥6👻5🦄1 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
0:24:59 Исправляем билд под linux#gameengine #log #logging #concepts #cpp #lifeexe #lifeexecode #lifeexeengine #unrealengine #gamedev #ue5 #unrealengine5
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/un…
Мой курс «Unreal Engine — полное руководство по разработке на С++»
https://www.udemy.com/course/un…
5🔥25 8❤6👍2🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
Value erosion в редакторе материалов Идеально подходит для дыма, магии или растворения материалов
#material #shader #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23 8 6🦄2 1
Мини tip для
Warning: или Error:Подробнее обо всех тонкостях тестирования в бесплатном курсе на моём ютуб канале — Тестирование в 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🔥30 11 5❤2🦄2
This media is not supported in your browser
VIEW IN TELEGRAM
Большой Niagara туториал по созданию VFX эффекта взрыва
#vfx #niagra #material #shader #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥30❤12 7🤯1🦄1 1
Кайфовая эстетика и механики в стиле Control и Severance в грядущей инди-игре
#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
🔥28❤7 6🦄1
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел свежий туториал по интеграции геометрии SpeedTree с новой системой Nanite Foliage и ветром в
Применяется Houdini для конвертации тяжелых альфа-карт в полноценную непрозрачную геометрию
#vfx #nanite #foliage #speedtree #houdini #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13 9❤7 2
Electronic Arts открыли исходный код
ShaderToHuman — полезного инструмента для разработки и отладки GLSL и HLSL шейдеровPrintf-стиль вывода данных прямо из шейдераImmediate-mode GUI внутри шейдеровHLSL и GLSLMIT лицензияДокументация
#graphics #opensource #shader #ea #hlsl #glsl #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22 10❤6🦄1
Media is too big
VIEW IN TELEGRAM
Гигантский свежий туториал по созданию процедурной анимации паука в
Нетекстурированную модель можно скачать бесплатно
С мехом
#animation #rig #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28 8❤7 3🦄1
Media is too big
VIEW IN TELEGRAM
Видео-игра недели — свежайший хоррор (релиз должен быть сегодня)
#gamedev #games #lifeexe #lifeexecode #coolgame
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👻7🦄5 2 1
This media is not supported in your browser
VIEW IN TELEGRAM
Художник по окружению Ben Macauley воссоздал культовую железнодорожную станцию из Half-Life 2 на
#techart #unrealengine #ue5 #gamedev #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27😱5❤3🦄2🎉1 1