Прапрадедушка 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
Это проверочный пост на спам ботов
Чат уже разблокирован, но возможно временно
Чат уже разблокирован, но возможно временно
🎉5❤1
ЧТО БЛИН ВЧЕРА ПРОИЗОШЛО?!
Для начала, чтобы у нас не было недопонимания - я не заказывал себе накрутку (оно мне не надо)
Во-вторых - за это могут снести мне канал (четкого правила в тг нет, но модераторы могут заметить и прикрыть нашу лавочку)
Ну и в-третьих... Я правда не понял чего это все стоило, но боюсь я не знаю кто это сделал и с какими намерениями 👍
и какая яндере за этим стоит
Для начала, чтобы у нас не было недопонимания - я не заказывал себе накрутку (оно мне не надо)
Во-вторых - за это могут снести мне канал (четкого правила в тг нет, но модераторы могут заметить и прикрыть нашу лавочку)
Ну и в-третьих... Я правда не понял чего это все стоило, но боюсь я не знаю кто это сделал и с какими намерениями 👍
❤4🔥1🕊1
Даааа, она приехала!
Джейсон Грегори - опытный геймдев-программист, специализирующийся на низкоуровневой архитектуре движка (Темный лес движка одним словом 💀)
Видел/слышал, что многие программисты хвалят ее, поэтому немедленно заказал эту шедевро-книгу. Что ж, теперь есть что почитать на лето/учебный год и писать Root Engine. А интересные моменты буду рассказывать здесь в блоге
и охренеть она толстая...
Джейсон Грегори - опытный геймдев-программист, специализирующийся на низкоуровневой архитектуре движка (Темный лес движка одним словом 💀)
Видел/слышал, что многие программисты хвалят ее, поэтому немедленно заказал эту шедевро-книгу. Что ж, теперь есть что почитать на лето/учебный год и писать Root Engine. А интересные моменты буду рассказывать здесь в блоге
❤9👍1🔥1🎉1🕊1🫡1
(Ладно, ладно, я знаю чего вы ждете. Но завтра-завтра... Дайте впервые нормально поспать хвхвхв)
🤓4
𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Неожиданный дроп, месяц работы и встречайте - A Cold Love Story Remaster (V1.1) Да-да, хоть кто-то спустя 10 лет взялся за игру Лиама Викерса (Серьезно, он выпустил ее в 2015-м) Чем можем порадовать? - Подчистка от лишних файлов - залог оптимизации (Вес…
A Cold Love Story
Делюсь с вами роликом товарища по SSTWL про криппипасту/новеллу Лиама Викерса - A Cold Love Story
(Делюсь ночью, потому что так атмосфернее)
Ролик получился хорошим, длинным и интересным
А также он хорошо пересказал оригинальную крипипасту (которую я собственно не читал), поэтому узнал от нее некоторые новые моменты
Ссылочка: тык
(Ролик с трудом делался аж 3 месяца, поддержите его как никак)
Делюсь с вами роликом товарища по SSTWL про криппипасту/новеллу Лиама Викерса - A Cold Love Story
(Делюсь ночью, потому что так атмосфернее)
Ролик получился хорошим, длинным и интересным
А также он хорошо пересказал оригинальную крипипасту (которую я собственно не читал), поэтому узнал от нее некоторые новые моменты
Ссылочка: тык
(Ролик с трудом делался аж 3 месяца, поддержите его как никак)
YouTube
Визуальная Новелла от Создателя Дронов-Убийц
A Cold Love Story - одна из первых криппипаст Лиама Викерса, создателя Дронов-Убийц, которая в последствие стала основой для всех дальнейших его проектов. И в этом ролике мы пройдёмся настолько подробно по этой криппипасте, насколько это возможно. Приятного…
🔥3❤1
🎶Солнце мое, взгляни на меня🎶
🎶Моя ладонь превратилась в кулак🎶
Что ж.... Что ж.... Прошли недели, улетели месяцы, 1 год разработки и вот она - Портал Солвер Альфа
Безусловно, это не конец. Это далеко не конец
Но кого хотелось бы поблагодарить - вас. И каждого, кого я встретил в такое короткое время. Конечно, время не вернешь, моменты что были так и останутся в памяти
Но все равно, было весело проводить время вместе. Конечно кого-то перегнула внутренняя гордыня, кто-то не поделил любовный треугольник а кто-то еще просто не подрос лол
Даже если мы больше не увидимся - то помните, что было весело провести время с вами
А еще было приятно встретить вас на релизе Альфы! Я честно и не думал что вам так все понравится. Да, были баги, хотя фичи тоже были - кататься на лазерном релее это сильно)
Очень высоко оценили саундтреки, меню, оптимизацию (вау) и кастомизацию Солвера
Собственно еще раз благодарю команду, ее бывших участников и вообще всех тех, кого когда-либо встречал. Без вас бы этот день не случился!
🎶Моя ладонь превратилась в кулак🎶
Что ж.... Что ж.... Прошли недели, улетели месяцы, 1 год разработки и вот она - Портал Солвер Альфа
Безусловно, это не конец. Это далеко не конец
Но кого хотелось бы поблагодарить - вас. И каждого, кого я встретил в такое короткое время. Конечно, время не вернешь, моменты что были так и останутся в памяти
Но все равно, было весело проводить время вместе. Конечно кого-то перегнула внутренняя гордыня, кто-то не поделил любовный треугольник а кто-то еще просто не подрос лол
Даже если мы больше не увидимся - то помните, что было весело провести время с вами
А еще было приятно встретить вас на релизе Альфы! Я честно и не думал что вам так все понравится. Да, были баги, хотя фичи тоже были - кататься на лазерном релее это сильно)
Очень высоко оценили саундтреки, меню, оптимизацию (вау) и кастомизацию Солвера
Собственно еще раз благодарю команду, ее бывших участников и вообще всех тех, кого когда-либо встречал. Без вас бы этот день не случился!
❤🔥3❤1🔥1🎉1
Опыт штука прикольная, жаль только приходит со временем
Удивительно, но сегодня начнем с Portal De Solverio
Точнее - БЕКЕНД 💀
Иронично, что в Альфе есть оптимизация, но дьявол скрыт в деталях...
Примерно чтобы вы понимали спектр моей работы сейчас - мне нужно как хирург аккуратно работать с существующей кодовой базой Альфы, перестраивать ее, переписывать, дак еще выпускать патчи
А причина?
- Во-первых... код написан сомнительно, а за год разработки я не один раз наступал на грабли, так еще сроки - нужно было усердно все заматывать изолентой, чтобы это хотя бы запустилось хвхвхвхв)
- Та и во-вторых редактор карт, да! К нему мы стремимся! От чего нужно очень сильно изменить структуру текущего бекенда Альфы. Думаете только мне одному стремно?
Сейчас конечно я начал переписывать лазеры, хотя что значит переписывать... Логика не изменится, они как работали так и будут, но само взаимодействие очень сильно изменится, с опытом тут я могу выделить пару вещей:
-
UCLASS(MinimalAPI) - удобнейшая штучка для оптимизации. Говоря простым языком - в компиляцию пойдет не весь класс, а только то, что используется. То есть если будут какие-то функции, которые "просто оставлены", но никто с ними не работают - то они не пойдут в финальный билд. Уменьшает время компиляции!-
UInterface - Интерфейсы... Да В свое время я допустил большую ошибку, когда мне нужно было обновлять лазерные компоненты по-очереди (просто потому что так надо), я накатал небольшую подсистему ULaserSubsystem от UTickableWorldSubsystem (Подсистема, живущая в текущем мире и имеющая тик), и в ней я хранил ссылки на акторы лазерных элементов и там же обновлял их состояние в нужном порядке (TX -> RX -> Cube -> Relay).
Сами понимаете, хранить ссылки на каждый класс это... не круто как-то? Так еще у меня был САМЫЙ НЕЛЮБИМЫЙ КЛАСС в Портал Солвере - LaserClass.cpp, это была тупо затычка, которая всегда багалась и вылетала из-за ТУПЕЙШЕЙ рефлексии Анрила. То компонент удалялся, то неправильно регистрировал все, то вообще... да... Нет слов одни рыданья (Интересно как Альфа еще жива хвхвхв)
Поэтому сейчас начал жествую перепись кода и теперь все строится на абстрактных интерфейсах - на деле это жесть какая удобная штука!
Хотя возникает вопрос - как хранить интерфейсы в массиве? Сделать TArray<AActor*> и каждый тик делать каст на нужный интерфейс? Ха, размечтались...
-
TScriptInterface<T> - Контейнер интерфейсов. Обычно интерфейсы являются самостоятельными классами и трудно как-то "взять их", но тут Эпики на удивление постарались и сделали нам TScriptInterface - контейнер, что хранит ссылку на интерфейс, прикрепленный к определенному обьекту. И как бы сложите это и выше сказанное и у вас получится красивенький TArray<TScriptInterface<T>> - именно так и реализовано сейчас. А так как это массив, то его можно спокойно перебрать и делать то, что хотите (вот на примере моего интерфейса ILaserInterface):for (const TScriptInterface<ILaserInterface>& Laser : LaserArray) // Перебираем каждый элемент массива
if (Laser && IsValid(Laser.GetObject())) // Если сам интерфейс и его родитель существуют (проверяйте, ибо частенько спасает от вылетов в финальной сборке)
Laser->TickLaser(DeltaTime); // То выполняем функцию через интерфейс (В моем случае тик лазера)
(Скоро будет второй пост, ибо есть что рассказать)
❤🔥3❤1🎉1🤩1🫡1