Godot game engine: оптимизация

Различные принципы, которые должен понимать разработчик, чтобы повысить производительность игры. Многое из перечисленного касается не только движка Godot.

Godot game engine: оптимизация
6.1K6.1K показов
1.8K1.8K открытий

Минимизировать тяжелые вычисления в циклахНапример, мы хотим закончить уровень, когда все враги умерли

Я пока только осваиваю годо(т), но появилась мысль: а нельзя ли обойтись без цикла, без проверки в каждом тике? Например через сигналы.

Подписались на child_entered_tree (когда заспавнили моба и он на сцене) и child_exiting_tree (убили моба и удалили со сцены). Обнулили счётчик мобов на сцене, вышли на геймовер.

Ссылки на объекты через $ кажется вообще не очень хорошая штука.

Ответить

При спавне объекта у тебя конечно возникает ссылка на него, и ты можешь в этот момент его на что-то подписать. Или пробросить какие-то сигналы от фиксированных элементов руками, в редакторе.
Тем не менее, заводить ссылки на разные объекты через $ так или иначе приходится, так как вряд ли человек используя визуальный редактор хочет спавнить вобще всё вслепую, как в "доредакторную" эпоху игроделания. Поэтому большая часть элементов будет уже расставлена в сцене заранее и какому-либо скрипту сцены понадобятся ссылки на эти элементы, чтобы двигать их, включать/выключать, показывать /скрывать, передать кому-то ещё и так далее.

Ответить

Вобще есть разные варианты. Допустим, со временем я пришёл к тому, что если делаю однотипные интерактивные элементы - кнопки интерфейса, например, то вероятно заведу под них массив ссылок в глобальном скрипте, а в скрипте самой кнопки она заносит ссылку на себя, по своему ID, в тот массив при первом появлении на сцене.
Это понадобится в том случае если потребуется скрывать/показывать эти кнопки откуда-то ещё, или если нажатие одной кнопки означает скрытие всех прочих (то есть ей самой как-то надо скрыть остальные) или в ещё каких-то таких ситуациях. Если это просто кнопки включающие что-то независимое, то и отправлять ссылку на себя в общий массив им незачем.

Ответить