Объекты совпали на экране, но столкновения между ними нет
В Defold это возможно, если объекты принадлежат разным мирам, загруженным через collection proxy. У каждого такого мира собственная физика. Коллизии, триггеры и ray casts работают только внутри него, даже при одинаковых координатах объектов из двух миров.
Здесь важна разница двух компонентов:
Collection factory создаёт экземпляры содержимого коллекции в текущем мире.
Collection proxy загружает отдельный мир. После load или async_load приходит proxy_loaded, затем можно выполнить init и enable.
Миры могут обмениваться сообщениями по полному URL объекта. А напрямую вызвать go.get_position для объекта из другого мира нельзя. Для передачи ввода в загруженную коллекцию объект с proxy должен приобрести ввод.
Руководство Defold отмечает и расход памяти: новый мир обходится заметно дороже обычного экземпляра иерархии. Для множества однотипных объектов уместнее collection factory, а proxy полезен там, где нужна именно отдельная коллекция со своим миром.
Эвристика расстояния видит близкую цель, но не знает, что дорога к ней начинается с обхода в другую сторону. В разборе Red Blob Games Амит Патель показывает другой источник оценки: заранее рассчитанные расстояния до ориентиров, или landmarks.
Для каждого ориентира сохраняют стоимость кратчайшего пути от узлов карты. В неориентированном графе разность расстояний от двух узлов до одного ориентира даёт нижнюю оценку пути между ними:
h(B, X) = |d(B, L) - d(X, L)|
Можно взять максимум по нескольким ориентирам и допустимой исходной эвристике. Сам A* менять не нужно. Расчёт используется повторно в запросах с разными целями, но требует памяти: число ориентиров × число узлов × размер числа. Удачное расположение ориентиров тоже зависит от карты.
Для направленного графа нельзя просто перенести формулу с модулем. А если изменение карты уменьшило стоимость ребра, старая таблица может завысить оценку. До её обновления гарантия кратчайшего пути теряется.
На странице есть интерактивные карты, в том числе лабиринты и уровни Cogmind. Материал датирован июлем 2026 года, и автор прямо отмечает, что ещё не применял метод в реальном проекте. По демо можно изучить поведение эвристики, но производственного замера здесь нет.
Музыка продолжает играть, но регулятор её громкости больше не действует? Если перед этим переименовали аудиошину в Godot, проверьте, куда теперь направлен AudioStreamPlayer.
По описанию Audio buses в документации 4.5, player хранит имя шины. Перестановка шин связь сохраняет, а переименование её теряет. Тогда звук направляется в Master. После смены имени нужно заново проверить назначение у проигрывателей.
Отсутствие эффекта в Web-сборке может иметь другую причину. Режим Sample не поддерживает эффекты шин, для них нужен Stream. Если потоки не включены, у этого режима выше задержка. Сами эффекты применяются в порядке их расположения на шине, а молчащие несколько секунд шины и эффекты Godot отключает автоматически.
Страница помечена Work in progress: её ещё не обновили для 4.5, и описание может быть устаревшим. Это ориентир для диагностики, поведение нужно проверить в версии своего проекта.
Для зоны обнаружения без физического толчка в Box2D используется sensor. На одном body можно совместить обычные формы и сенсорные. Но одного isSensor = true недостаточно, чтобы получать события.
В документации Box2D 3.2.0 флаг enableSensorEvents по умолчанию выключен. Включить его нужно у обеих участвующих форм, включая обычную форму, входящую в сенсор.
Дальше порядок такой: выполнить b2World_Step, получить b2World_GetSensorEvents, обработать массивы begin и end. Событие end может прийти из-за уничтожения формы, поэтому перед обращением к ней проверьте ID через b2Shape_IsValid.
Ещё две детали из официального руководства. Сенсорная форма может вносить вклад в массу, для исключения этого вклада задают нулевую плотность. А при быстром движении и сенсора, и другой формы надёжные события перекрытия не гарантированы. Для такого случая автор рекомендует ray cast или shape cast.
Проверяйте версию своего физического движка: эти флаги и поведение относятся к Box2D 3.2.0, их нельзя автоматически переносить на 2.x или любой встроенный порт.
Для Steam Auto-Cloud важны не только маски файлов, но и соответствие путей между ОС. В актуальной документации Valve у нового Root Path значение OS Restriction по умолчанию — Cross-Platform. Valve советует оставить его даже игре, которая пока выходит на одной платформе. Привязка к отдельной ОС ограничит дальнейшую синхронизацию этих файлов.
Если сохранения в Windows, macOS и Linux лежат в разных каталогах, настройте Root Overrides. Они сопоставляют исходный путь с расположением файлов на другой ОС. У исходного Root для этого должен стоять Cross-Platform.
Сами сейвы стоит разделять по пользователям Steam. А настройки графики и другие параметры конкретной машины лучше не синхронизировать вместе с прогрессом.
Auto-Cloud переносит выбранные файлы перед сессией и после неё. Совместимость формата сейва между сборками остаётся задачей игры. Dynamic Cloud Sync, позволяющая получать изменения во время сессии, требует отдельной обработки и не включается в игру одной настройкой путей.
Субботний скриншотник! Принесите в комментарии кусочек своей игры: скриншот, гифку, видео, демку или ссылку. Можно показать и свой канал.
Что сдвинулось за неделю: анимация, меню, новая механика? Незаконченный прототип тоже подходит. Добавьте пару слов о том, над чем работаете, и загляните к другим авторам: спросите о решении или поддержите понравившуюся работу.
Один коридор может быть проходимым для мыши и слишком узким для человека. В Recast навигационная сетка строится под размеры и возможности конкретного агента, а не просто по свободному месту на уровне.
Четыре параметра задают эту разницу:
— радиус отвечает за ширину агента
— высота определяет, под каким потолком он поместится
— максимальный уклон ограничивает крутизну поверхности
— высота шага задаёт препятствия, на которые он способен подняться
Для нескольких типов персонажей в одном окружении могут понадобиться разные сетки. При построении Recast переводит геометрию в воксели, фильтрует их и снова получает полигональную сетку. Размер вокселя позволяет менять точность и время построения.
Введение Recast Navigation отдельно напоминает: navmesh упрощает геометрию для поиска пути. Полученный коридор полигонов уточняется в маршрут через string pulling. Ни сетка, ни этот маршрут не заменяют геометрию коллизий или сплайн анимации.