LifeEXE | Unreal Engine | CG
1.93K subscribers
413 photos
516 videos
455 links
Download Telegram
🎮 Всем привет! 🎮

Новая лекция по серии игрового движка в эту пятницу.

Изучаем дополнительные топики CMAKE:
🟢 вложенные CMakelists
🟢 макросы
🟢 CMAKE файлы
🟢 новые CMAKE команды

Подключаем c помощью Conan графическую библиотеку Raylib

Видео уже доступно на Boosty и Patreon

Увидимся в пятницу 🤘

#conan #cpp #gamedev #lifeexe #gameengine #lifeexeengine #cmake
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5816👍8🎉2🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
🎮 Всем привет! 🎮

Новая лекция в эту пятницу.

🟢 Программируем DoodleJump с помощью Raylib
🟢 Рассматриваем дополнительные команды CMAKE
🟢 Настраиваем PCH в CMAKE
🟢 Пишем тесты. Используем паттерн стратегия
🟢 Применяем dependency injection

Видео уже доступно на Boosty и Patreon

Увидимся в конце недели 🤘

#conan #cpp #gamedev #lifeexe #gameengine #lifeexeengine #cmake
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍103311
🎮 Всем привет! 🎮

Поздравляю всех с днём числа π!

А новая лекция в сети:
https://youtu.be/mz7a0XIwhZc

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

Ресурсы:
GitHub | LifeEXE School | Itch | X | Wiki

#cmake #raylib #cpp #gamedev #lifeexe #gameengine #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🔥2511🏆2❤‍🔥1
🆕 Всем привет! 🆕

Вышла beta версия NOESIS studio:
https://www.noesisengine.com/studio

Noesis Studio — это WYSIWYG-редактор, который позволяет создавать, управлять и просматривать XAML-интерфейсы без необходимости писать код вручную.

Имеется отдельный плагин для Unreal Engine и Unity:
https://www.noesisengine.com/developers/downloads.php

Можно попробовать онлайн в XAMLtoy
В примерах есть упрощенный интерфейс Detroit: Become Human

Документация

C помощью NOESIS были сделаны интерфейсы для Senua’s Saga: Hellblade II и Baldur's Gate 3

#ui #noesis #cpp #gamedev #lifeexe #unrealengine #ue5 #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1396🤯2
🎮 Всем привет! 🎮

Новая жирная лекция по серии игрового движка в эту пятницу.
Автоматизируем буквально ВСЁ ⚙️

🟢 Интегрируем Conan и CMAKE
🟢 Создаем linux и windows conan профили
🟢 Исправляем linux и windows билды на github
🟢 Рассматриваем github actions
🟢 Разбираемся с матрицами параметров — matrix strategy
🟢 Собираем несколько таргетов одновременно
🟢 Автоматизируем форматирование кода clang-format
🟢 Запускаем тесты на github и публикуем отчет по тестированию в виде таблицы
🟢 Рассматриваем полезные расширения VS Code
🟢 Настраиваем PCH в CMAKE с помощью target_precompile_headers

Видео уже доступно на Boosty и Patreon

Это заключительная лекция перед стартом кода самого движка.
Увидимся в конце недели 🤘

#cmake #conan #cpp #github #gamedev #lifeexe #gameengine #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
21🔥83❤‍🔥96👍62🐳1
🎮 Всем привет, всем привет! 🎮

Новая лекция в сети:

https://youtu.be/lc61fQQKnkE

Автоматизируем процессы с помощью Github Actions

Бесплатным аккаунтам GitHub предоставляется 2000 минут работы облачных машин в месяц. Для персонального использования (как мы сегодня убедимся) этого вполне достаточно.

Репозиторий текущего проекта:
👉 https://github.com/life-exe/FIghtClubCppCMAKE

Кстати, поскольку VS Code иcпользует стек Typescript/Electron, то VS Code можно запустить напрямую в браузере и серфить код там. Меняем com на dev:
👉 https://github.dev/life-exe/FIghtClubCppCMAKE

Дополнительно:
👉 https://vscode.dev
👉 https://github.com/features/codespaces

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

Ресурсы:
GitHub | LifeEXE School | Itch | X | Wiki

#cmake #conan #cpp #github #gamedev #lifeexe #gameengine #lifeexeengine
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3664👍3❤‍🔥2
▶️ Всем привет, всем привет! ▶️

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

Сегодня в меню очевидный, но не всегда применяемый подход:
Immediately Invoked Lambda Expression (IILE)

🔗 Текст поста также добавил в статьи в вики

Почему const — это важно?
Неизменяемость (immutability) — залог надежного и понятного кода. Использование const там, где это возможно, помогает компилятору отлавливать ошибки и показывает намерения программиста яснее. Когда другой человек читает ваш код и видит const, снижается когнитивная нагрузка на мозг — «запоминать изменения данного значения не надо — расслабься». Const correctness является важной практикой в C++.

Проблематика
В простых случаях инициализация констант не вызывает проблем:
const int c_maxPlayers = 100;
const double c_scale = getScaleFactor() * 1.5;
const bool c_enabled = check() || FORCE_ENABLE;
const int c_healthModifier = bHealing ? 20 : 0;


Но что делать, если для вычисления значения константы требуется несколько шагов, временные переменные, циклы или условия?
float c_calculatedDamage = getBaseDamageValue();
if (targetAimed(calculatedDamage)) {
for (int i = 0; i < c_effectCount; ++i) {
calculatedDamage += getBonusDamage(i);
}
}


Традиционные подходы — вынести логику в отдельную именованную функцию или отказаться от const — не всегда идеальны. Создание отдельной функции может быть избыточным, если логика используется только один раз. Отказ от const снижает безопасность и выразительность кода.

Immediately Invoked Lambda Expression (IILE)
Здесь на помощь приходит использование немедленно вызываемого лямбда-выражения (IILE). Мы определяем лямбда-функцию, которая инкапсулирует всю сложную логику инициализации, и тут же вызываем её. Результат этого вызова и присваивается нашей константе.

Как это выглядит:
const auto myLambda = [](){ return 13; }();


Скобочки форева 🤪 Последние круглые скобки () после фигурных скобок лямбды — это и есть немедленный вызов. Они заставляют лямбду выполниться прямо в месте определения. То есть мы можем проинициализировать сложный объект и сохранить константность:
const auto c_calculatedDamage = [&]() {
float tempDamage = getBaseDamageValue();
if (targetAimed(tempDamage)) {
for (int i = 0; i < c_effectCount; ++i) {
tempDamage += getBonusDamage(i);
}
}
return tempDamage;
}();


Преимущества IILE для инициализации
🟢Инкапсуляция — вся логика инициализации собрана в одном месте.
🟢Локальность — временные переменные, используемые для вычисления, не «загрязняют» внешнюю область видимости.
🟢Сonst сorrectness — позволяет объявить переменную как const (или даже constexpr, если лямбда соответствует требованиям), даже если её вычисление многоэтапное.
🟢Чистота кода — избавляет от необходимости создавать отдельные, одноразовые именованные функции.

Альтернативный синтаксис (C++17)
В C++17 можно использовать std::invoke, хотя для IILE прямой вызов () обычно предпочтительнее и понятнее:
#include <functional> 
// ...
const auto c_anotherConstant = std::invoke([] {
// ...
return 13;
});


Ссылки
🔗ES.28: Use lambdas for complex initialization, especially of const variables
🔗Article in english

🔤🔤🔤🔤🔤🔤🔤

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

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

#cpp #tipsandtricks #code #fun #lifeexe #lifeexecode #lifeexeEDU
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8316👍9❤‍🔥2
📕 Всем привет, всем привет! 📕

Зацените чувство юмора авторов книги по C++ 1997 года от Bell Labs

🔗 Ruminations on C++: A Decade of Programming Insight and Experience

Слово ruminate в английском языке имеет два значения:
— жевать жвачку, буквально, как делают коровы 🤠
— размышлять глубоко и вдумчиво 👨‍💻

Фамилия Барбары — Му

Обложка рекурсивная: женщина на обложке (походу Барбара) читает книгу, на которой изображена она сама.

#code #book #cpp #gamedev #lifeexe #lifeexecode #humor
Please open Telegram to view this post
VIEW IN TELEGRAM
😁38👍8❤‍🔥521🤯1👌1👾11