С++ и его небольшой "грязный" хак
Вызов функции из ничего =)
Пишите чтобы вы такое положили до запуска движка 👀
Не волнуйтесь, статьей на всех хватит
Вызов функции из ничего =)
static bool _AutoRegister - Это статическая локальная переменная, инициализация которой происходит один раз при загрузке программы (перед началом main())
Вроде бы - и что с этого? Но именно в static переменную можно подложить свой код и он выполнится еще до загрузки всей программы! Хвхвхвххв, небольшой грязный трюк, но работает же)
Пишите чтобы вы такое положили до запуска движка 👀
❤5🔥2
𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Чтобы блог не пустовал, решил с вами начать разработку движка. Шутка. Я точно не знаю какая точка с запятой застряла во мне, но решил начать писать собственный движок на С++ Да не просто движок, а с особой системой представления классов - смесь унаследованной…
Я говорил, что реализую создание систем без унаследования? Я сделал
Системы помечаются как RCLASS(System)
А затем на стадии компиляции регистрируются в движке (с небольшим хаком компилятора, а кому сейчас жить легко? хвхвхвх)
Я обещал - я сделал
Да, конечно сегодня планы были написать World и настроить камеру (чтобы камера хранила лишь основные данные, а дальше все камеры прогонялись через Render Pipeline, считайте система-компонент)
Но потерпел, завтра еще допишу регистрацию компонентов и.... Бинго! ГКМ будет написана и тогда можно будет реализовать все оставшиеся вещи
Напишу RObject - стандартный объект движка, RWorldObject - объект, который будет спавниться в мире (может еще подумаю над названием)
А позиции, физика, коллизия, рендер модели и камеры? Все будет компонентно и обрабатываться системами. От чего тот же RWorldObject может просто лежать в мире, или же иметь позицию
В общем ладно, день был необычным, всем спокойной ночи
Системы помечаются как RCLASS(System)
А затем на стадии компиляции регистрируются в движке (с небольшим хаком компилятора, а кому сейчас жить легко? хвхвхвх)
Я обещал - я сделал
Да, конечно сегодня планы были написать World и настроить камеру (чтобы камера хранила лишь основные данные, а дальше все камеры прогонялись через Render Pipeline, считайте система-компонент)
Но потерпел, завтра еще допишу регистрацию компонентов и.... Бинго! ГКМ будет написана и тогда можно будет реализовать все оставшиеся вещи
Напишу RObject - стандартный объект движка, RWorldObject - объект, который будет спавниться в мире (может еще подумаю над названием)
А позиции, физика, коллизия, рендер модели и камеры? Все будет компонентно и обрабатываться системами. От чего тот же RWorldObject может просто лежать в мире, или же иметь позицию
В общем ладно, день был необычным, всем спокойной ночи
👍5⚡1🤝1
Есть хочу...
То есть о чем я? Первый прототип ГКМ сделан и уже реализованы первые вещи. Знакомьтесь - FTransformComponent и FCameraComponent
К FCameraComponent создана система FCameraSystem, которая получает список камер, рассчитывает матрицу и передает их в общий Render Pipeline
Да, как-то так они реализуются, через RCLASS(System, Requires=...) и RCLASS(Component), а самое главное - все работает по ссылка, обновляется в реальном времени и не требует базовых классов. ООП идет нафиг одним словом :)
А вообще - не спрашивайте у женщин - их возраст, у мужчин - их ЗП, а Романова - как он реализовал чертовую регистрацию компонентов в движок!
Главное что работает :)
А так по мелочам - сделал RLevel - "контейнер" для миров, RWorld - мир, который хранит в себе RSceneObject, и от него унаследовал AActor - объект с вшитой в него компонентом трансформацией
Также думаю оставить возможность прикреплять компоненты в RObject, или перенести в RSceneObject, что думаете?
То есть о чем я? Первый прототип ГКМ сделан и уже реализованы первые вещи. Знакомьтесь - FTransformComponent и FCameraComponent
К FCameraComponent создана система FCameraSystem, которая получает список камер, рассчитывает матрицу и передает их в общий Render Pipeline
Да, как-то так они реализуются, через RCLASS(System, Requires=...) и RCLASS(Component), а самое главное - все работает по ссылка, обновляется в реальном времени и не требует базовых классов. ООП идет нафиг одним словом :)
А вообще - не спрашивайте у женщин - их возраст, у мужчин - их ЗП, а Романова - как он реализовал чертовую регистрацию компонентов в движок!
Главное что работает :)
А так по мелочам - сделал RLevel - "контейнер" для миров, RWorld - мир, который хранит в себе RSceneObject, и от него унаследовал AActor - объект с вшитой в него компонентом трансформацией
Также думаю оставить возможность прикреплять компоненты в RObject, или перенести в RSceneObject, что думаете?
❤5⚡1❤🔥1
Спустя год без личной жизни на плюсах поры бы изучить что-то новенькое. Поэтому нашел интересный гайд по UK2Node
Вообще:
Как-то так, ссылочка: тык
Вообще:
UK2Node = Kismet 2 - Старая библиотека для визуального скриптинга в Unreal Engine (Начиная еще с UE3/UE4)
Хоть вы и можете сказать, что мол "воспользуйся UFUNCTION(BlueprintCallable)". И вы будете правы, но от части. UFUNCTION - крайне примитивен и ограничен в своем функционале, да так еще вы не сможете создавать свои кастомные Exec-пины (Это те белые исполнительные пины, и да, я пытался...)
Как-то так, ссылочка: тык
❤3🔥1
Неожиданный дроп, месяц работы и встречайте - A Cold Love Story Remaster (V1.1)
Да-да, хоть кто-то спустя 10 лет взялся за игру Лиама Викерса (Серьезно, он выпустил ее в 2015-м)
Чем можем порадовать?
- Подчистка от лишних файлов - залог оптимизации (Вес уменьшился с 2.5 ГБ до 2 ГБ)
- Обновленный UI (Спасибо At0m'у за дизайн)
- Исправленный перевод (Спасибо Ponder_Static'у за корректировку)
Обожаю эту яндерскую новеллу хвххвв
Ссылочка: тык
(Windows/Android)
Да-да, хоть кто-то спустя 10 лет взялся за игру Лиама Викерса (Серьезно, он выпустил ее в 2015-м)
Чем можем порадовать?
- Подчистка от лишних файлов - залог оптимизации (Вес уменьшился с 2.5 ГБ до 2 ГБ)
- Обновленный UI (Спасибо At0m'у за дизайн)
- Исправленный перевод (Спасибо Ponder_Static'у за корректировку)
Обожаю эту яндерскую новеллу хвххвв
Ссылочка: тык
(Windows/Android)
❤4🔥2🤩2
+1 папка Input в RootEngine/Source/Core
А в целом - держите небольшую накидку того, как работает система ввода. Надеюсь понятно что тут понаписано
Самое запарное наверное было с Callback'ами. Особенно когда из-за них весь движок падал хвхвхвхв
(И да все регистрируется через системы. Мой движок - мои правила)
А в целом - держите небольшую накидку того, как работает система ввода. Надеюсь понятно что тут понаписано
Самое запарное наверное было с Callback'ами. Особенно когда из-за них весь движок падал хвхвхвхв
(И да все регистрируется через системы. Мой движок - мои правила)
❤2🔥1
Прапрадедушка Blueprints...?
Именно, Kismet - старейшая, как вселенная, система визуального скриптинга в Unreal Engine!
И минутка истории с нашего любимого (нет) бекенда:
В целом я рассказал это не чтобы посмеяться над UE3, это... Лишь пример того, как выглядело начало у великих историй
Так что если вдруг Ваши первые шаги выглядят странно, запутанно и местами убито, не отчаивайтесь:
Возможно, это Ваш первый шаг к чему-то великому. Даже великое когда-то выглядело как костыль :)
Именно, Kismet - старейшая, как вселенная, система визуального скриптинга в Unreal Engine!
Зародилась она еще в UE3 и имела.... слегка сомнительный интерфейс, но работала же! Да, там не было ни переменных. ни классов, НИЧЕГО! Лишь простая логика для дизайнеров по типу "Включи лампочку, открой дверь по триггеру"
Да блин, у них было всего-то около 100-150 нод! (В 4.0 - 300-500 нод, под конец в 4.27 более 1500, а в 5-ке так вообще перевалило за 3000 и продолжает расти :D)
И дизайн, по нашим меркам как любителям темной темы - вырви глаз (Ага, а мы еще жалуемся что в 4-ке кнопочки слишком яркие, чем в 5-ке...)
И минутка истории с нашего любимого (нет) бекенда:
- Как говорилось ранее, Kismet 1 была первой системой визуального скриптинга
- В UE4 Kismet обновили и дали название Kismet 2, а затем она внешне переименовалась в... Blueprints! Да, те самые наши любимые Блюпринты
- В файлах Анрила еще сохранилось устоявшееся название как UK2Node, что можно расшифровать как Unreal Kismet 2 Node, или еще пример: UKismetMathLibrary - так скажем, общая библиотека с математикой и логикой для Блюпринтов, и С++
- А еще Kismet 1 был капец как жестко привязан к уровню, не то что наши Блюпринты сейчас - сиди, таскай, переименовывай - вообще по барабану
В целом я рассказал это не чтобы посмеяться над UE3, это... Лишь пример того, как выглядело начало у великих историй
Кто бы мог подумать в 2010-м, что эта слегка убитая система, похожая на странный конструктор для дизайнеров (Scratch нервно курит), однажды станет лицом Анрила, что снизит планку входа в геймдев по всему миру?
Так что если вдруг Ваши первые шаги выглядят странно, запутанно и местами убито, не отчаивайтесь:
Возможно, это Ваш первый шаг к чему-то великому. Даже великое когда-то выглядело как костыль :)
🔥4❤1⚡1😍1