Godot. Unique Scene Name

Всем привет, затрону один важный момент касающийся организации кода. По моим наблюдениям новички туторами обмажутся, а потом у них возникают проблемы, а все из-за использования абсолютных путей. Я про два конкретных способа get_parent() и get_node().

Создам тестовый проект для наглядности.

Godot. Unique Scene Name Gamedev, Инди, Godot, Godot Engine, Видео, YouTube, Длиннопост

Вроде бы все хорошо, никаких проблем нету, мы же ничего не собираемся менять никогда в структуре этой сцены<sarcasm> 100% можно быть уверенным только в одном, что изменения будут, в геймдеве особенно)
Немножко изменим структуру сцены.

Godot. Unique Scene Name Gamedev, Инди, Godot, Godot Engine, Видео, YouTube, Длиннопост

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

Godot. Unique Scene Name Gamedev, Инди, Godot, Godot Engine, Видео, YouTube, Длиннопост

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

Если потомку надо знать своего родителя, то пусть родитель и сообщает ему об этом.

Godot. Unique Scene Name Gamedev, Инди, Godot, Godot Engine, Видео, YouTube, Длиннопост
Godot. Unique Scene Name Gamedev, Инди, Godot, Godot Engine, Видео, YouTube, Длиннопост

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

Особенно это удобно при создании GUI, адаптивный интерфейс как правило требует много разнообразных вложений и родительских сцен, чтобы все там само красивенько расползалось по экрану, с таким подходом сэкономите себе кучу нервов и времени)

И обещанное про get_parent()
Для наглядности в _physics_process добавил 3 get_parent()

на картинке ниже видно, что _physics_process выполняется на 30% дольше чем _velocity_computed

Godot. Unique Scene Name Gamedev, Инди, Godot, Godot Engine, Видео, YouTube, Длиннопост

А теперь скрин профайлера без этих 3-х get_parent()

Godot. Unique Scene Name Gamedev, Инди, Godot, Godot Engine, Видео, YouTube, Длиннопост

Как видите на 25% быстрее стал выполняться, чем _velocity_computed
Если вам кажется что это пустяк, то вот видосик. Ролик коротенький, но 60мб получился, заль. ютуб. В первом случае у меня фпс начинал падать ниже 60 уже после спавна 600 человечков, во втором это число выросло до почти 2100.

https://youtu.be/jd3pMYHGYYM

Всем спасибо за внимание.
Небольшой и уютный чатик нашего сообщества https://t.me/Godot_pikabu

Частенько действительно полезные вещи подсказывают, удобно, с любым затупом можно просто спросить))

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

85 постов312 подписчиков

Правила сообщества

Нельзя писать плохой про Godot и можно писать хороший про Godot. Borat.jpg
Упоминание других движков допустимо только в технических сравнениях иначе - вы юнитист и бог вам судья.