UHT... UHT... Unreal Header Tool... Что если я вам скажу, что я накатал его за 1 вечер?
Правильно - у тебя лично жизни вообще нет? Нет)
Root Header Tool - полностью открытый аналог Unreal Header Tool, работающий с редактором и генерирующий тот самый ".generated.h" код!
И что мы получаем? Та абсолютно все! GENERATED_BODY, RPROPERY, RFUNCTION, RCLASS и многое-многое другое! А самое наверное крутое - Super:: - такая маленькая штучка, которая имеет ссылку на родительский класс. Я ее тоже реализовал
Теперь код все больше похож на Анриловский, а моим достижением можно считать привязку RHT к Rider'у (Кстати привязка к VS у них разная, но принцип один и тот же)
И да, первый прототип написан на Питоне, но мне уже ничего не мешает переписать его на С++ и скомпилировать в .exe файл, но займусь как-нибудь.. попозже. Сейчас и этого достаточно
В общем вы рассматривайте этот шедевр по кусочкам, а я пойду отпраздную хвхвххв
Правильно - у тебя лично жизни вообще нет? Нет)
Root Header Tool - полностью открытый аналог Unreal Header Tool, работающий с редактором и генерирующий тот самый ".generated.h" код!
И что мы получаем? Та абсолютно все! GENERATED_BODY, RPROPERY, RFUNCTION, RCLASS и многое-многое другое! А самое наверное крутое - Super:: - такая маленькая штучка, которая имеет ссылку на родительский класс. Я ее тоже реализовал
Теперь код все больше похож на Анриловский, а моим достижением можно считать привязку RHT к Rider'у (Кстати привязка к VS у них разная, но принцип один и тот же)
И да, первый прототип написан на Питоне, но мне уже ничего не мешает переписать его на С++ и скомпилировать в .exe файл, но займусь как-нибудь.. попозже. Сейчас и этого достаточно
В общем вы рассматривайте этот шедевр по кусочкам, а я пойду отпраздную хвхвххв
🎉3❤1🔥1
Наука рулит, сэр! Матеша
В общем хоть что-то закончено за день. Накинуты большинство типов данных, а также приступил к написанию RMesh, RRenderPipeline и тд.
Прогресс? Спокойная музыка, полный багаж матеши (Матрицы самое 💀) и попытка поболтать с OpenGL. Ему то GLAD подавай, то GLFW ему не нравится, то еще что-то... жесть просто
В общем хоть что-то закончено за день. Накинуты большинство типов данных, а также приступил к написанию RMesh, RRenderPipeline и тд.
Прогресс? Спокойная музыка, полный багаж матеши (Матрицы самое 💀) и попытка поболтать с OpenGL. Ему то GLAD подавай, то GLFW ему не нравится, то еще что-то... жесть просто
❤🔥4🤔1💋1
С++ и его небольшой "грязный" хак
Вызов функции из ничего =)
Пишите чтобы вы такое положили до запуска движка 👀
Не волнуйтесь, статьей на всех хватит
Вызов функции из ничего =)
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