Сообщество - Свидетели Godot'овы
Добавить пост

Свидетели Godot'овы

84 поста 289 подписчиков

Популярные теги в сообществе:

Godot 4. SceneTree root access speed test

Какой самый быстрый способ доступа к общему корню дерева сцен? Давайте потестируем...

Не самое популярное место для тем по Godot, но видос снимать лень, а поделиться инфой хочется. Тем более это такой олдскул, встречающийся, например, на офф. сайте php или на разных форумах, где в сообщениях десятилетней+ давности люди тестили скорость тех или иных команд и именно так определялось, чем лучше пользоваться.

В общем, задался я вопросом доступа к глобальному корню, начал тестить 4 известных мне способа это сделать и получил неожиданный результат. Выполним сначала прогон с вызовами всех четырёх вариантов, закончим одиночными. Для теста использовалась пустая 2D сцена с кнопкой и скриптом на корне сцены, выглядит вот так.

Godot 4. SceneTree root access speed test Godot Engine, Godot, Длиннопост

Структура сцены, показан сигнал на кнопке

Конечно, такой цикл следует оборачивать в функцию и вызывать её, а не тупо копипастить весь цикл, но... Я так и сделал и это замедлило общую скорость в 2 раза! Хотя соотношение результатов не изменилось, поэтому вот финальный вариант нашего тестового скрипта.

Godot 4. SceneTree root access speed test Godot Engine, Godot, Длиннопост

Как бы вы написали такой код?

Строка №12 написана с нарушение стайлгайда, там не рекомендуется использовать однострочную запись, но оказалось, что так цикл работает незначительно быстрее...

После первых прогонов выяснилось, что фукция, вызываемая первой, почти всегда работает медленнее, хотя изредка бывает так, что замедления не происходит. Поэтому пришлось прогнать в разных вариантах порядка. Тут как раз помогла обёртка в лямбду.

Godot 4. SceneTree root access speed test Godot Engine, Godot, Длиннопост

Не знаю, как бы я выкручивался без функций первого класса, добавленных в Godot 4.

Количество шагов цикла выбрано в 100 000, т.к. это достаточно, чтобы результаты были заметными, с учётом замедления от лямбда функций. При большем шаге разлёт в скорости каждого из вариантов сглаживается, эффект замедления первого test становится незаметен, а это нам не нужно. В самом конце (на скриншоте не видно) я повторил порядок 1,2,3,4, чтобы сравнить его с самой первой группой. Прогнав несколько раз, стало понятно, что во всех вызовах, кроме самого первого, порядок вызовов не влияет на результат. Отсюда, достаточно вызвать 3 одинаковых группы и отбросить результаты в первой четвёрке.

Godot 4. SceneTree root access speed test Godot Engine, Godot, Длиннопост

Финальный вариант группового теста

Результаты:

1 место - f1 = 0.032 - 0.037
2 место = 3 место - f3 и f4 = 0.033 - 0.050
4 место - f2 = 0.038 - 0.063

Стабильно хуже всех работает get_tree().root. Это прямой доступ к полю root объекта SceneTree, возвращаемого методом get_tree(). Видимо из-за итерации по объекту, которой, видимо, не происходит в таком объёме при других вариантах. Между остальными тремя различие ситуативно, поэтому я бы просто везде использовал $/root.

Одиночный тест я решил не проводить из-за всё того же замедления первого вызова. Провёл сдвоенный как на скриншоте и так для каждого из четырёх.

Godot 4. SceneTree root access speed test Godot Engine, Godot, Длиннопост

f1 = 0.034
f2 = 0.040
f3 = 0.035
f4 = 0.035

В среднем, f1 и здесь оказался быстрее. Спорный результат у f3 и f4. Понятно, что одно является сокращённой записью (не люблю слово синтаксический сахар) другого. Повторение в строенном варианте тоже ничего не дело. Вроде как действительно различия нет. Но, есть ещё один вариант тестирования, приближенный к реальным кейсам, т.к. связан он с записью результата любого из четырёх методов в переменную и доступа к этой переменной.

Godot 4. SceneTree root access speed test Godot Engine, Godot, Длиннопост

Изменён код на строке 13, и в функции, принимающей сигнал кнопки.

Результат ожидаемо одинаковый в пределах погрешности измерений и случайного разброса: от 0.004 до 0.011, что кратно быстрее доступа к корню через любой из четырёх методов. Отсюда можно сделать вывод, что в скриптах Godot 4, где нужен доступ к глобальному корню, стоит создать переменную с помощью синтаксиса вроде "@onready var root = get_tree().get_root()", т.к. такой код будет наиболее быстрым, и использовать уже её. Применение $/root по месту удобно и хорошо читаемо, но работать будет незначительно медленнее. Насколько это будет заметно в проекте? Зависит от частоты вызовов, но скорее всего незаметно. Однако, задача этой статьи - найти наиболее быстрый способ доступа и она выполнена, это вариант f1 записанный в переменную.

Показать полностью 5

Godot. Градиентные переливы)

Всем привет, давно ничего не постил, вечно некогда)
Странное название, но я хз как это назвать ещё, но вот пример, это по работе делал анимашку пока идет поиск противника, про партиклы тут вроде особо нечего рассказывать, уже и так эти моменты пояснял, а вот фон на заднем плане, раньше не знал как сделать подобное, долго голову ломал)) Но нашел решение)

Ну в целом, мне кажется можно проще решение найти, но не хочется покадровую анимацию, не знаю, думаю ещё пока, но в целом этот задник сделан шейдером. И кому интересно я записал видос, как подобного плана делать эффекты, можно и лучше сделать конечно, я ещё только учусь, но базовой концепцией поделюсь) Может пригодится кому)


Может не все хорошо получилось, вернусь ещё к этой теме, можно и партиклами добиться примерно такого-же эффекта. Посмотрим ещё.

Спасибо, за внимание.

Показать полностью 1

Дамы с праздником)

Цветочек на партиклах в Godot4

Как говорится, от гиков бабам!!))
Всего вам наилучшего, поверьте даже IT-шникам без женщин трудно)

А кто не согласен, ну бог ему судья.

Поиграем в бизнесменов?

Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.

СДЕЛАТЬ ВЫБОР

Почему плохо работать в геймдеве!

Всем привет, возник спор за работу курьером и почему геймдев лучше, а мне тут есть что сказать и потому напишу свое мнение. Заголовок не бейт, это реально так и есть, щас попробую кратенько объяснить почему.

@LeonIlich, беседа с тобой надоумила написать пост, продолжу тут если ты не против)

За Геймдев:
Плюсы: Неплохо платят, учишься новому, в целом интересно.
Минусы: Забудь, что есть что-то остальное, ты всецело на одном проекте, особенно в предрелизе. Даже играть уже некогда будет. Кранчи, Кранчи, Кранчи!!!
Я два года даже не загорал, на рыбалке не был ещё больше)

За Курьера:
Голова всегда свободна!

Много чего хочется написать, но когда я работал продавцом и курьером, я делал игру своей мечты. Мой странный микс MOO2, космических рейнджеров и моей любимой Eve Online, тут и суть астероиды копать. Это примерно месяц разработки фултайм в одно лицо.

Сейчас я на работе пытаюсь сделать стилизованные трейлы и они суммарно у меня съели больше времени, чем предыдущая разработка, хотя опытные юнитисты, скажут, что тут делов-то на две копейки, в целом так, но мне надо на Godot) И у меня мало ещё опыта в VFX)

Вот как думаете интересно мне это делать вместо своих космических корабликов?
В целом мне тоже нравится, интересно.

Вот GameArtTeaser c работы,
на 50 секунде два моих эффекта попали в ролик даже)

Это прикольно, занятный проект, играется интересно, скоро будет альфатест, что интереснее всего для моих подписчиков и этой группы, это проект на Godot версия 4.1.1, много было сложностей, но много интересных решений, Godot походу годен не только для индиков на коленке собранных.

Все офигенно, но есть один минус! Последний коммит в своей разработке, я сделал в июне, аккурат перед тем, как перейти на фултайм в студию, да я работаю удаленно, но у меня нету сил и энергии сидеть на двух стульях, я или там или там, потому мне любопытен был вариант подработки курьером, но подработкой, там и 20к не заработаешь, там потеть и пыхтеть надо.
Лучше сосредоточится на чем-то одном, я на пятом десятке решил начать специализироваться на VFX, не успеваю я за программистами, но мне хватает бекграунда, чтобы с ними нормально сотрудничать) Собаки лают, караван идет, со временем все лучше и лучше получается уже.
Вот вам и путь из продавца, три года назад кажись я писал первый пост про шейдеры, и на пятом десятке обрел новую профессию с шестизначным окладом в не самом популярном пока движке)

Ругайте, критикуйте, ну я старался делиться всем чем мог и писал о чуть ли не каждом шаге, иногда срывало и бухал и дичал, но ровная дорога редко бывает. Может мне чаще надо было писать, о том, как не получалось то или другое, может действительно чаще буду писать теперь, не о конкретных реализациях, а больше о концепциях, чтобы на мысль верную навести, мои реализации далеки от идеала, меня тут много хейтили за них, но концепции были верные, а реализации, это дело наживное) Вопрос опыта, всего-лишь)

Спасибо за внимание, всем удачи!! Осилит дорогу идущий!

Показать полностью 3

Godot. Простая молния на базе Line2D

Всем привет, кратенько, как сделать такую молнию, расширеная версия по созданию цепной молнии, будет позже, не знаю даже когда)

Спасибо за внимание!

Первые пробы в After Effects

Делаю VFX для игр в Godot, ну как делаю учусь ещё по сути, но звучу в трудовой солидно))
Начал и AE осваивать, запилил себе логототип, теперь точно надо будет записать видос по созданию цепной молнии в Godot)

Кринжовенько, но это мой первый эффект в AE, мне нравится)))

Немножко черновых наработок бонусом)

Спасибо за внимание)

Показать полностью 1

Godot. VFX Lighting

Всем привет, давно кроме дичи ничего не постил, нечего было, был творческий застой, нового делать не учился, работал работу, на том что умел до этого.

Небольшой прорыв для меня случился за три месяца, я понял, как могу сделать годную, нетормозящую цепную молнию, без всяких шейдеров и тд, будет работать шустро и в вебе и на гавномобилках. Снег пикабушный может мотивировал, а может просто допер наконец-то, про фаерболл уже писал, это для меня этапы. Сначала научится делать фаербол, вроде ок получаются) С молниями было сложно)

Такая была, но это простая, это просто покадровая анимация, жена нарисовала я добавил, а вот чтобы била откуда надо и куда надо и не была покадровой или партиклы использовала, ну вот первый видос, к ней конечно добавлю ещё искр партиклами при касании, но тут она технически другая и так просто на самом деле.

Я все одно наверное заморочусь и запишу видос, да наверное и сюда тоже выложу не только на ютюб, просто захотелось поделиться, что наконец-то это случилось и молнии, тоже скоро походу научусь делать годные)

Всем удачи, с наступающим. Сорян за зехера мои периодические, когда долго что-то не получается, в уныние впадаю(

P.S. Эта молния не будет тормозить, как снег на пикабу, это вообще по сути Line2D простой)

Показать полностью 1

Готовы к Евро-2024? А ну-ка, проверим!

Для всех поклонников футбола Hisense подготовил крутой конкурс в соцсетях. Попытайте удачу, чтобы получить классный мерч и технику от глобального партнера чемпионата.

А если не любите полагаться на случай и сразу отправляетесь за техникой Hisense, не прячьте далеко чек. Загрузите на сайт и получите подписку на Wink на 3 месяца в подарок.

Готовы к Евро-2024? А ну-ка, проверим! Футбол, Тест, Евро 2024, Болельщики, ВКонтакте (ссылка)

Реклама ООО «Горенье БТ», ИНН: 7704722037

Малюсенькая гроза на Godot 3.5

Всем привет, не тутор, просто запилил концептик за полчаса и самому нравится) А когда самому нравится, надо делиться)

Отличная работа, все прочитано!