Да что эта ваша штука под названием сон... У меня дедлайны
Но кстати, я все успел прям в срок :)
(И Акира с такой же грустью смотрит на время..)
А кто думал, что проект загнулся? Нее. Раньше я мог показывать какие-то простые/базовые механики, а сейчас боюсь все стало таким классным, что лучше придержим это ) 👀
Но кстати, я все успел прям в срок :)
(И Акира с такой же грустью смотрит на время..)
А кто думал, что проект загнулся? Нее. Раньше я мог показывать какие-то простые/базовые механики, а сейчас боюсь все стало таким классным, что лучше придержим это ) 👀
❤6🤔1🫡1
This media is not supported in your browser
VIEW IN TELEGRAM
[Владелец канала получил некритические серьезные повреждения мозга]
🥰7
Такс, немного проясню ситуацию:
Я живой. Мы живы. Проект существует.
В первую очередь хотелось бы наконец-то поздравить наш блог уже с 50-ю подписчиками! Для меня большая честь видеть всех вас тут, в своем скромном канальчике про программирование
Во вторых спустя почти 7 дней прокрастинации после школы (вытянул литературу и английский язык из балла 2.3 в 3-ку за год, ура.......), и отдохнувв лесу я наконец могу рассказать что происходит сейчас в проекте - а тут есть о чем рассказать
Сделаю полный редизайн постов, чтобы было что вспомнить. Надеюсь начинающим программистам это будет полезно (та и вы не стесняйтесь спрашивать у меня под постами..)
И под конец заспойлерю - будет немало кода и много рассказа про разные компоненты и классы в проекте, поэтому от объективной критики я не откажусь =)
Я живой. Мы живы. Проект существует.
В первую очередь хотелось бы наконец-то поздравить наш блог уже с 50-ю подписчиками! Для меня большая честь видеть всех вас тут, в своем скромном канальчике про программирование
Во вторых спустя почти 7 дней прокрастинации после школы (вытянул литературу и английский язык из балла 2.3 в 3-ку за год, ура.......), и отдохнув
Сделаю полный редизайн постов, чтобы было что вспомнить. Надеюсь начинающим программистам это будет полезно (та и вы не стесняйтесь спрашивать у меня под постами..)
И под конец заспойлерю - будет немало кода и много рассказа про разные компоненты и классы в проекте, поэтому от объективной критики я не откажусь =)
❤6🔥1🤝1
APS_WorldSettings
Родительский класс: AWorldSettings
Описание: Родительский класс является актором (первая буква говорит, что это актор и он хранится на уровне). Родительский класс находится на каждом уровне. Его нельзя настроить через viewport, а доступ к нему происходит от окна "World Settings"
Как понятно из названия, он хранит лишь настройки для каждого уровня (а.к.а. World), а настраивается через окно в самом движке. Конкретно мой класс добавляет пару постоянных опций, по типу "Включен ли Солвер Ган? Фонарик? Загрузчик уровней?", а также через него настраивается состояние Discord Rich Presence (это та штука в дискорде, показывающая во что играет твой кент сейчас)
Так как я работаю не один, то для команды добавлено предупреждение, что отключение загрузчика уровня может повлечь за собой серьезные баги при переходе между уровнями.
А вот нечего было отключать, работает не трогай ;]
(P.S. Отключение загрузчика полезно для быстрого теста определенного уровня, без необходимости ждать пока он прогрузится)
Функции:
- Хранения параметров для данного уровня (и для последующего доступа к ним извне)
- Обновление состояния Discord Rich Presence.
- Настройка фоновой музыки на уровне (плейлист из нескольких аудиофайлов, запущенных поочерёдно)
Особенности: После создания класса и успешной компиляции, в настройках проекта (Project Settings) есть графа "World Settings Class", если все сделано правильно - то кроме стандартного класса World Settings, можно выбрать собственный/кастомный класс. Затем перезапустите движок и бинго!
Про что рассказать в следующий раз?
Родительский класс: AWorldSettings
Описание: Родительский класс является актором (первая буква говорит, что это актор и он хранится на уровне). Родительский класс находится на каждом уровне. Его нельзя настроить через viewport, а доступ к нему происходит от окна "World Settings"
Как понятно из названия, он хранит лишь настройки для каждого уровня (а.к.а. World), а настраивается через окно в самом движке. Конкретно мой класс добавляет пару постоянных опций, по типу "Включен ли Солвер Ган? Фонарик? Загрузчик уровней?", а также через него настраивается состояние Discord Rich Presence (это та штука в дискорде, показывающая во что играет твой кент сейчас)
Так как я работаю не один, то для команды добавлено предупреждение, что отключение загрузчика уровня может повлечь за собой серьезные баги при переходе между уровнями.
(P.S. Отключение загрузчика полезно для быстрого теста определенного уровня, без необходимости ждать пока он прогрузится)
Функции:
- Хранения параметров для данного уровня (и для последующего доступа к ним извне)
- Обновление состояния Discord Rich Presence.
- Настройка фоновой музыки на уровне (плейлист из нескольких аудиофайлов, запущенных поочерёдно)
Особенности: После создания класса и успешной компиляции, в настройках проекта (Project Settings) есть графа "World Settings Class", если все сделано правильно - то кроме стандартного класса World Settings, можно выбрать собственный/кастомный класс. Затем перезапустите движок и бинго!
Про что рассказать в следующий раз?
❤🔥4🔥1💋1
Лайфхак №0
Упрощенный способ вызов анимаций через код
Так вот, т.к.я ленивая жэпа это долго, то есть такой интересный способ:
- Будем использовать USkeletalMeshComponent, в котором уже есть необходимые инструменты для запуска анимаций (Закреп 1)
- Выставляем анимацию и запускаем (Закреп 2)
И результат на закрепе 3
Всем спасибо, хорошего дня!
Но это старый вариант - анимация будет вечно перезапускаться и странно себя вести если не доиграет (А я напомню - мы тут без сверхъестественного Animation Blueprint), так что введем небольшой хотфикс (Закреп 4):
- Перед заменой анимации на новую, с текущей анимации сохраняем позицию (на каком кадре)
- Заменяем анимацию на новую, выставляем ей скорость-направление
- И после (перед запуском) выставляем сохраненную позицию на новой анимации (Т.К. При выставлении новой анимации, позиция сбрасывается в 0, то есть в начало анимации)
- А затем можно и запустить проигрывание анимации
Как видно - новый вариант гораздо приятнее на глаз (Закреп 5), и реализуется без всяких Animation Blueprint и State Machines (Вот бы я знал это год назад, еще в Демо, эх...)
Упрощенный способ вызов анимаций через код
Знаете то осознание, когда нужно написать код для какой-нибудь кнопки, выдвижному ящику, дверной ручке или окну, а голову лезят идеи использовать Animation Blueprint, State Machines и десятки костылей?
Так вот, т.к.
- Будем использовать USkeletalMeshComponent, в котором уже есть необходимые инструменты для запуска анимаций (Закреп 1)
- Выставляем анимацию и запускаем (Закреп 2)
И результат на закрепе 3
Но это старый вариант - анимация будет вечно перезапускаться и странно себя вести если не доиграет (А я напомню - мы тут без сверхъестественного Animation Blueprint), так что введем небольшой хотфикс (Закреп 4):
- Перед заменой анимации на новую, с текущей анимации сохраняем позицию (на каком кадре)
- Заменяем анимацию на новую, выставляем ей скорость-направление
- И после (перед запуском) выставляем сохраненную позицию на новой анимации (Т.К. При выставлении новой анимации, позиция сбрасывается в 0, то есть в начало анимации)
- А затем можно и запустить проигрывание анимации
Как видно - новый вариант гораздо приятнее на глаз (Закреп 5), и реализуется без всяких Animation Blueprint и State Machines (Вот бы я знал это год назад, еще в Демо, эх...)
Я так заюзал почти во всех элементах игры, где нужен вызов простых анимаций (Панели, двери, кнопки и т.д.)
Но а так как я тот еще редкий вид активно-прокрастинирующих, то анимации на Солвер Гане тоже работаю через код - если новый формат постов приживется, то как-нибудь расскажу про это =]
🔥4
Абсолютно неожиданна ночная поездка на велосипеде
А потом спрашивают, почему я такой сонный :D
А потом спрашивают, почему я такой сонный :D
❤🔥8😁2😴1🆒1
Лайфхак №1
Выставление материалов прямо в редакторе
Фича проста до безумия (Закреп 1) - объявляем OnContruction (Закреп 2), в котором задаем материал, НО - если материала нет, то задаем какую-нибудь пустышку (WorldGrid или свою)
В целом все, но от себя добавлю: Так как опыт в С++ у меня уже был, то со временем стиль написания условий if-else стал более упрощенно-профессиональным (Финальный вариант в закрепе 3), поэтому не удивляйтесь таким фокусам :]
Такие условия называются if-with-initializer, а завезли нам эту подкормку в С++17 (2017). Поэтому чтобы сделать код немного читабельнее, подгрузку обьекта выношу прямо в условие if и там-же его сравниваю (смог ли я подгрузить объект?) и если да - то работаю с подгруженным объектом внутри.
Выставление материалов прямо в редакторе
Это не прям что-то сверхъестественное, но такая фича очень будет удобной для дизайнеров, а также решает одну особенность Unreal Engine - если на сцене изменить какой-нибудь компонент внутри блюпринта, то этот блюпринт перестает как-либо обновляться (не смотря на изменения основного в Content Browser)
Фича проста до безумия (Закреп 1) - объявляем OnContruction (Закреп 2), в котором задаем материал, НО - если материала нет, то задаем какую-нибудь пустышку (WorldGrid или свою)
В целом все, но от себя добавлю: Так как опыт в С++ у меня уже был, то со временем стиль написания условий if-else стал более упрощенно-профессиональным (Финальный вариант в закрепе 3), поэтому не удивляйтесь таким фокусам :]
Такие условия называются if-with-initializer, а завезли нам эту подкормку в С++17 (2017). Поэтому чтобы сделать код немного читабельнее, подгрузку обьекта выношу прямо в условие if и там-же его сравниваю (смог ли я подгрузить объект?) и если да - то работаю с подгруженным объектом внутри.
❤3🥰1💯1
Нашел небольшую интересную статью, советую почитать:
https://unrealengine.monster/take-your-time-wait-for-the-transition-to-ue-5-6/
https://unrealengine.monster/take-your-time-wait-for-the-transition-to-ue-5-6/
Unreal Monster
Не спеши: подожди с переходом на UE 5.6
Если ты увидел свежий релиз Unreal Engine 5.6 и сразу подумал: "Всё, пора обновляться!", — остановись.Я тоже так думал. Но давай поговорим честно: переход на новую версию движка не всегда даёт больше пользы, чем головной боли.
❤3🔥1