Вайбкодеры изобрели новую нотацию TOON — Token-Oriented Object Notation
Формат создан для экономии количества токенов. Очень всё это напоминает обычный CSV.
#toon #notaion #protocol #vibe_coding #ai #code #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Подборка плагинов для прожарки VS CODE
#code #vs_code #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥23😎11 7😱3 3🦄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
Мини 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
🔥36 8 7🦄3❤1❤🔥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🔥32 12 6❤2🦄2
Непостоянная рубрика: Воскресный 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
Непостоянная рубрика: 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
Поколение вайбкодеров на подходе — более 3 тысяч лайков у этого поста прямо пугает
Это буквально определение из стандарта C/C++ (C11 §6.5.2.1)
The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2)))Просто LOL
arr не в счёт). Поздравляем — для std::vector это работать не будет, поскольку vec[i] — это вызов метода vec.operator[](i) Парочка ещё более шокирующих новостей для твиторских
-> это синтаксический сахар:ptr->fn() эквивалентно (*ptr).fn()int main()
{
https://in6months.com
goto https;
}
#lol #code #gamedev #lifeexe #lifeexecode #friday #videcoding
Please open Telegram to view this post
VIEW IN TELEGRAM
2😁22😱19 6🫡4👻3❤1👏1🦄1
Отличный вводный материал для тех, кто хочет разобраться как работает Ray Marching
#graphics #shaders #raymarching #sdf #gamedev #code #cool_article #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥25❤9 7🦄2 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
Отличная новая статья по современным техникам culling'а в рендеринге — от классических подходов до GPU-driven пайплайнов
Автор разбирает ключевые методы отсечения невидимой геометрии:
#rendering #graphics #gpu #culling #nanite #code #unrealengine #ue5 #gamedev #games #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥26❤6 5 4 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
Новый
UPD: Перестал быть бесплатным к моменту публикации поста
#plugin #code #tools #unrealengine #ue5 #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥21👍10 9❤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
В C++23 стек вызовов можно получить в несколько строк кода с помощью
std::stacktrace::current()Это избавляет от необходимости писать костыли под разные ОС и сильно упрощает сбор логов или написание кастомных систем краш-репортов
#include <print>
#include <stacktrace>
auto printStacktrace() -> void
{
const auto tr = std::stacktrace::current();
for (const auto& e : tr)
{
std::print("Func: {} ", e.description());
std::print("File: {} ", e.source_file());
std::println("Line: {}", e.source_line());
}
}
auto someFunc() -> void
{
printStacktrace();
}
auto main() -> int
{
someFunc();
return EXIT_SUCCESS;
}
#stacktrace #code #cpp #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍18❤17🦄7🔥1 1
Большая техническая статья про сферические гармоники — Spherical Harmonics, SH
Сферические гармоники — это способ разложить сложную функцию, заданную на сфере, например окружающее освещение вокруг точки, в набор коэффициентов базисных функций
Любую непрерывную функцию на сфере можно представить как бесконечную сумму специальных многочленов, что позволяет
#math #graphics #rendering #sh #gamedev #code #cool_article #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17 11🥰6 2❤1👍1🦄1
Интересные конечно есть примеры на cppreference
Вполне себе хардкорный generative art! В вики имеется подборка инструментов на тему
#include <iostream>
#include <string_view>
int main()
{
#define A "▀"
#define B "▄"
#define C "─"
constexpr std::string_view blocks[]{A B C, B A C, A C B, B C A};
for (int y{}, p{}; y != 8; ++y, p = ((p + 1) / 4))
{
for (char x{}; x != 29; ++x)
std::cout << blocks[p];
std::cout << '\n';
}
}
#code #cpp #rendering #generative #art #procedural #gamedev #lifeexe #lifeexecode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥10🥰5🤯4👍3🦄1