Как разрушение зданий меняет тактику в Brigador Killers
Если игрок может пробить стену, дверь перестаёт быть единственным входом. А вместе с ней перестают работать привычные способы направлять игрока по уровню.
В интервью Stellar Jockeys разрушение Brigador Killers разобрано как взаимодействие систем. Пули пробивают объекты, взрывы наносят убывающий с расстоянием урон, повреждённые части зданий провоцируют обрушение соседних.
Для объектов команда готовит отдельные наборы эффектов — частицы, спрайты, свет и звук, срабатывающие вместе. Они помогают показать масштаб повреждений и сделать цепную реакцию понятной.
Полностью разрушаемое окружение требует учить игрока создавать собственные проходы. Поэтому здесь полезно смотреть и на физику, и на планировку: какие маршруты появятся после взрыва и сможет ли игрок понять последствия своего действия.
#геймдизайн #разрушения
Если игрок может пробить стену, дверь перестаёт быть единственным входом. А вместе с ней перестают работать привычные способы направлять игрока по уровню.
В интервью Stellar Jockeys разрушение Brigador Killers разобрано как взаимодействие систем. Пули пробивают объекты, взрывы наносят убывающий с расстоянием урон, повреждённые части зданий провоцируют обрушение соседних.
Для объектов команда готовит отдельные наборы эффектов — частицы, спрайты, свет и звук, срабатывающие вместе. Они помогают показать масштаб повреждений и сделать цепную реакцию понятной.
Полностью разрушаемое окружение требует учить игрока создавать собственные проходы. Поэтому здесь полезно смотреть и на физику, и на планировку: какие маршруты появятся после взрыва и сможет ли игрок понять последствия своего действия.
#геймдизайн #разрушения
Субботний скриншотник снова открыт!
Показывайте в комментариях, над чем работали: скриншоты, гифки, видео, демки и ссылки на свои игры. Новая механика, переделанное меню или первый рабочий прототип — всё годится. Ссылки на свои каналы разрешены.
Посмотрим, что у кого получилось, и зададим авторам вопросы. Если застряли, расскажите на чём — возможно, кто-то уже решал похожую задачу.
@make_game
Показывайте в комментариях, над чем работали: скриншоты, гифки, видео, демки и ссылки на свои игры. Новая механика, переделанное меню или первый рабочий прототип — всё годится. Ссылки на свои каналы разрешены.
Посмотрим, что у кого получилось, и зададим авторам вопросы. Если застряли, расскажите на чём — возможно, кто-то уже решал похожую задачу.
@make_game
⚡1
Как собрать стилизованный маяк из модулей
Альберт Серрано начал сцену маяка с простых форм в Blender и перенёс их в Unreal Engine. До детализации он проверил пропорции, расстояние до камеры и композицию.
В разборе окружения показано, как повторное использование помогает расширять сцену. Деревянные детали собраны в модульный набор, повторяющиеся поверхности используют тайловые материалы, растения — общий атлас.
Для перехода между камнем и штукатуркой художник добавил промежуточный оттенок той же штукатурки через отдельный канал Vertex Color. Так границу можно подкрашивать прямо на геометрии и варьировать по сцене.
Когда понадобился второй ракурс, большая часть материалов и объектов уже существовала. Новую зону удалось собрать без полного повторения работы. Хороший пример того, как ещё на этапе первой композиции подготовить детали для дальнейшего использования.
#окружение #unrealengine
Альберт Серрано начал сцену маяка с простых форм в Blender и перенёс их в Unreal Engine. До детализации он проверил пропорции, расстояние до камеры и композицию.
В разборе окружения показано, как повторное использование помогает расширять сцену. Деревянные детали собраны в модульный набор, повторяющиеся поверхности используют тайловые материалы, растения — общий атлас.
Для перехода между камнем и штукатуркой художник добавил промежуточный оттенок той же штукатурки через отдельный канал Vertex Color. Так границу можно подкрашивать прямо на геометрии и варьировать по сцене.
Когда понадобился второй ракурс, большая часть материалов и объектов уже существовала. Новую зону удалось собрать без полного повторения работы. Хороший пример того, как ещё на этапе первой композиции подготовить детали для дальнейшего использования.
#окружение #unrealengine
Defold 1.14: рендеринг в кубическую карту
В Defold 1.14.0 появились cubemap render targets: сцену можно отрисовать на шесть граней кубической карты вокруг выбранной точки.
В описании релиза показаны два способа создать такую цель рендеринга: через render script или ресурс
На этой основе можно реализовывать отражения, захват окружения и другие эффекты, которым нужны несколько направлений обзора. Сам эффект при этом остаётся частью вашей системы рендеринга: новый тип цели не включает готовые отражения автоматически.
У первой реализации есть ограничения: грани должны быть квадратными и одинакового размера, сглаживание MSAA для cubemap не поддерживается. В статье есть ссылка на демонстрацию создания карты и передачи результата в шейдер.
#defold #рендеринг
В Defold 1.14.0 появились cubemap render targets: сцену можно отрисовать на шесть граней кубической карты вокруг выбранной точки.
В описании релиза показаны два способа создать такую цель рендеринга: через render script или ресурс
.render_target. Затем выбирается грань, в которую нужно выполнить отрисовку. Цветовое содержимое доступно шейдеру через samplerCube.На этой основе можно реализовывать отражения, захват окружения и другие эффекты, которым нужны несколько направлений обзора. Сам эффект при этом остаётся частью вашей системы рендеринга: новый тип цели не включает готовые отражения автоматически.
У первой реализации есть ограничения: грани должны быть квадратными и одинакового размера, сглаживание MSAA для cubemap не поддерживается. В статье есть ссылка на демонстрацию создания карты и передачи результата в шейдер.
#defold #рендеринг
Как связать движение и анимации персонажа в Godot
Персонаж уже прыгает, но продолжает перебирать ногами в воздухе? Выбор анимации стоит связать с состоянием движения после обработки столкновений.
В уроке для Godot 4.3+ используется
Если персонаж не на полу, знак вертикальной скорости определяет прыжок или падение. На земле направление ввода переключает бег и покой. Поворот спрайта выполняется через
Весь пример помещён в один скрипт: он также создаёт платформы и собирает анимации из горизонтальных полос кадров. Это удобный учебный стенд для разбора состояний, который дальше можно разделить на сцены и компоненты. Для точного воспроизведения нужны файлы набора, указанного автором.
#godot #анимация
Персонаж уже прыгает, но продолжает перебирать ногами в воздухе? Выбор анимации стоит связать с состоянием движения после обработки столкновений.
В уроке для Godot 4.3+ используется
CharacterBody2D с AnimatedSprite2D. Скрипт обновляет скорость, применяет гравитацию, вызывает move_and_slide(), затем выбирает анимацию.Если персонаж не на полу, знак вертикальной скорости определяет прыжок или падение. На земле направление ввода переключает бег и покой. Поворот спрайта выполняется через
flip_h.Весь пример помещён в один скрипт: он также создаёт платформы и собирает анимации из горизонтальных полос кадров. Это удобный учебный стенд для разбора состояний, который дальше можно разделить на сцены и компоненты. Для точного воспроизведения нужны файлы набора, указанного автором.
#godot #анимация
😍1
Как сделать ржавчину сложнее оранжевого шума
У ржавого металла меняется не только цвет. Зернистость, углубления, отслаивающаяся краска и шероховатость вместе создают ощущение поверхности.
В разборе Лоика Анкетиля работа над материалами Substance 3D Designer начинается с изучения этой структуры. Художник снимал собственные референсы, потому что общие фотографии часто не показывали нужных деталей коррозии.
Базовый материал Coarse Rust Pitting помог выстроить связь между рисунком повреждений, высотой, шероховатостью и цветом. После этого на той же основе появились варианты с облупившейся краской, разными стадиями коррозии и загрязнениями.
Отдельное внимание автор уделяет структуре графа: параметры и логические группы должны быть понятны другим художникам. Полезный ориентир для своего материала — возможность менять степень износа, сохраняя согласованность всех карт поверхности.
#материалы #substance
У ржавого металла меняется не только цвет. Зернистость, углубления, отслаивающаяся краска и шероховатость вместе создают ощущение поверхности.
В разборе Лоика Анкетиля работа над материалами Substance 3D Designer начинается с изучения этой структуры. Художник снимал собственные референсы, потому что общие фотографии часто не показывали нужных деталей коррозии.
Базовый материал Coarse Rust Pitting помог выстроить связь между рисунком повреждений, высотой, шероховатостью и цветом. После этого на той же основе появились варианты с облупившейся краской, разными стадиями коррозии и загрязнениями.
Отдельное внимание автор уделяет структуре графа: параметры и логические группы должны быть понятны другим художникам. Полезный ориентир для своего материала — возможность менять степень износа, сохраняя согласованность всех карт поверхности.
#материалы #substance
❤2
Unity 7 и CoreCLR: что уже можно проверить
Первая альфа Unity 7.0 получила редактор на CoreCLR вместо Mono. Но переход на новую среду выполнения ещё не означает, что проекту доступны все новые возможности C# и .NET.
В обновлении команды Unity прямо указано: начальная альфа пока использует C# 9 и API .NET Standard 2.1. C# 14 и .NET 10 остаются целью разработки; публичную дату их появления команда не называет.
Для первого поддерживаемого выпуска приоритет — совместимость и стабильность на уровне Unity 6.7 LTS. Основные улучшения производительности запланированы на следующий этап.
Сейчас альфа полезна для проверки совместимости проекта, пакетов и инструментов на отдельной копии. Изменившееся название среды выполнения само по себе не обещает ускорения игры или перезагрузки кода. Команда рекомендует эту версию для тестирования, а не производственной работы.
#unity #движки
Первая альфа Unity 7.0 получила редактор на CoreCLR вместо Mono. Но переход на новую среду выполнения ещё не означает, что проекту доступны все новые возможности C# и .NET.
В обновлении команды Unity прямо указано: начальная альфа пока использует C# 9 и API .NET Standard 2.1. C# 14 и .NET 10 остаются целью разработки; публичную дату их появления команда не называет.
Для первого поддерживаемого выпуска приоритет — совместимость и стабильность на уровне Unity 6.7 LTS. Основные улучшения производительности запланированы на следующий этап.
Сейчас альфа полезна для проверки совместимости проекта, пакетов и инструментов на отдельной копии. Изменившееся название среды выполнения само по себе не обещает ускорения игры или перезагрузки кода. Команда рекомендует эту версию для тестирования, а не производственной работы.
#unity #движки
👍3
Как детализировать разрушение без пересчёта всей сцены
Движение обломков уже согласовано, но в одном участке нужны более мелкие трещины. Полный пересчёт может изменить и те части разрушения, которые всех устраивали.
В интервью FX-художника Jae Jun Yi описан многослойный подход к RBD-симуляциям в Houdini. Сначала создаётся базовая симуляция, определяющая крупное движение и композицию.
Затем выбранные фрагменты дробятся подробнее. Новые части наследуют движение родительского объекта, а в самостоятельную симуляцию переходят по заданному условию: например, при столкновении или достижении нужной скорости.
Так художник сохраняет утверждённую основу и уточняет отдельные участки. В статье разобраны идентификаторы частей, трансформации и ограничения метода. Это процесс подготовки эффектов; перенос такого подхода в интерактивное разрушение игры потребует отдельного решения.
#houdini #vfx
Движение обломков уже согласовано, но в одном участке нужны более мелкие трещины. Полный пересчёт может изменить и те части разрушения, которые всех устраивали.
В интервью FX-художника Jae Jun Yi описан многослойный подход к RBD-симуляциям в Houdini. Сначала создаётся базовая симуляция, определяющая крупное движение и композицию.
Затем выбранные фрагменты дробятся подробнее. Новые части наследуют движение родительского объекта, а в самостоятельную симуляцию переходят по заданному условию: например, при столкновении или достижении нужной скорости.
Так художник сохраняет утверждённую основу и уточняет отдельные участки. В статье разобраны идентификаторы частей, трансформации и ограничения метода. Это процесс подготовки эффектов; перенос такого подхода в интерактивное разрушение игры потребует отдельного решения.
#houdini #vfx
❤1
Godot 4.8 beta: следы за объектами через Trail3D
След за оружием или движущимся объектом требует геометрии, которая меняется во времени. В Godot 4.8 для таких эффектов появился встроенный
В обзоре первой беты команда выделяет его как способ создавать следы без самостоятельной сборки меша и расчёта UV. Это позволяет быстрее перейти к настройке самого визуального эффекта.
Для пробной сцены можно начать с одного движущегося объекта: проверить вид следа на поворотах, при остановке и с разных ракурсов камеры. Затем оценить, как эффект сочетается с материалом и освещением вашей игры.
Godot 4.8 пока в бете. Набор возможностей уже заморожен, команда сосредоточена на исправлении ошибок. Trail3D входит в общий обзор версии, а не появился впервые именно в beta 1. Проверять его стоит в отдельной ветке проекта, учитывая возможные изменения совместимости.
#godot #эффекты
След за оружием или движущимся объектом требует геометрии, которая меняется во времени. В Godot 4.8 для таких эффектов появился встроенный
Trail3D.В обзоре первой беты команда выделяет его как способ создавать следы без самостоятельной сборки меша и расчёта UV. Это позволяет быстрее перейти к настройке самого визуального эффекта.
Для пробной сцены можно начать с одного движущегося объекта: проверить вид следа на поворотах, при остановке и с разных ракурсов камеры. Затем оценить, как эффект сочетается с материалом и освещением вашей игры.
Godot 4.8 пока в бете. Набор возможностей уже заморожен, команда сосредоточена на исправлении ошибок. Trail3D входит в общий обзор версии, а не появился впервые именно в beta 1. Проверять его стоит в отдельной ветке проекта, учитывая возможные изменения совместимости.
#godot #эффекты
❤3
Почему генератор описаний ошибается на a и an
Генератор предметов собрал название
В заметке Red Blob Games разобран этот небольшой случай процедурного текста. Правильно
Автор исследовал список из 32 455 слов и обнаружил 129 слов, требующих исключений из простого правила по букве. Внутри есть ссылка на проект с анализом и визуализациями.
Для генератора игровых описаний это повод проверять результат целиком, включая добавляемые прилагательные. Артикль относится к следующему произносимому слову: подстановка нового определения может изменить выбор. Подобные языковые правила лучше учитывать в системе текста до того, как шаблоны разойдутся по контенту.
#процедурнаягенерация #локализация
Генератор предметов собрал название
unicorn, выбрал артикль по первой букве и выдал an unicorn. Проверка на гласную букву выглядит логично, но английский ориентируется на начальный звук.В заметке Red Blob Games разобран этот небольшой случай процедурного текста. Правильно
a unicorn: слово начинается со звука /j/. И наоборот, an hour, хотя первая буква согласная.Автор исследовал список из 32 455 слов и обнаружил 129 слов, требующих исключений из простого правила по букве. Внутри есть ссылка на проект с анализом и визуализациями.
Для генератора игровых описаний это повод проверять результат целиком, включая добавляемые прилагательные. Артикль относится к следующему произносимому слову: подстановка нового определения может изменить выбор. Подобные языковые правила лучше учитывать в системе текста до того, как шаблоны разойдутся по контенту.
#процедурнаягенерация #локализация
❤1
Как подготовить Unity-проект к переходу на URP
Unity движется к единому варианту рендеринга на основе URP. Для существующего проекта важно учитывать разные сроки изменений Built-In и HDRP.
По плану команды графики, Built-In не будет доступен в Unity 7.0. HDRP получит статус устаревающего, но сохранит поддержку в первом Unity 7 LTS. Это разные этапы перехода.
Для миграции с Built-In в Unity 6.7, начиная с 6000.7.0b3, появился мастер в
Unity 6.7 в момент публикации была бетой. Проверять переход стоит на копии проекта: сравнить материалы, освещение и собственные шейдеры в характерных сценах. Запуск мастера — начало проверки результата, а не подтверждение полной совместимости.
#unity #рендеринг
Unity движется к единому варианту рендеринга на основе URP. Для существующего проекта важно учитывать разные сроки изменений Built-In и HDRP.
По плану команды графики, Built-In не будет доступен в Unity 7.0. HDRP получит статус устаревающего, но сохранит поддержку в первом Unity 7 LTS. Это разные этапы перехода.
Для миграции с Built-In в Unity 6.7, начиная с 6000.7.0b3, появился мастер в
Window > Analysis > Project Auditor, вкладка Migrate to URP. Он подготавливает пакет и ресурсы рендеринга, затем передаёт преобразование материалов Render Pipeline Converter. Найденные проблемы собираются в Project Auditor.Unity 6.7 в момент публикации была бетой. Проверять переход стоит на копии проекта: сравнить материалы, освещение и собственные шейдеры в характерных сценах. Запуск мастера — начало проверки результата, а не подтверждение полной совместимости.
#unity #рендеринг
❤1👍1
Как сохранить масштаб реального кафе в 3D-сцене
Красивые отдельные предметы ещё не делают интерьер убедительным. Если дверь, потолок и столы не согласованы по масштабу, помещение будет ощущаться странно.
В разборе Mido Cafe художница Soyun Kang сначала собрала простые модели стен, окон и пола по фотографиям. Затем добавила фигуру человека ростом 180 см и по ней уточнила размеры предметов и высоту помещения.
Похожие поверхности используют повторяющиеся текстуры. Для вариантов плитки автор меняла цвет уже созданного материала вместо изготовления нового. Провода, трубы и плакаты добавлялись после основной расстановки.
Свет из окон помог выстроить композицию и выделить нужные зоны. Финальные изображения получены с трассировкой путей, поэтому по ним нельзя судить о скорости сцены в игре. Сам приём проверки масштаба с фигурой человека пригодится ещё до детальной работы с ассетами.
#окружение #unrealengine
Красивые отдельные предметы ещё не делают интерьер убедительным. Если дверь, потолок и столы не согласованы по масштабу, помещение будет ощущаться странно.
В разборе Mido Cafe художница Soyun Kang сначала собрала простые модели стен, окон и пола по фотографиям. Затем добавила фигуру человека ростом 180 см и по ней уточнила размеры предметов и высоту помещения.
Похожие поверхности используют повторяющиеся текстуры. Для вариантов плитки автор меняла цвет уже созданного материала вместо изготовления нового. Провода, трубы и плакаты добавлялись после основной расстановки.
Свет из окон помог выстроить композицию и выделить нужные зоны. Финальные изображения получены с трассировкой путей, поэтому по ним нельзя судить о скорости сцены в игре. Сам приём проверки масштаба с фигурой человека пригодится ещё до детальной работы с ассетами.
#окружение #unrealengine
Unity Spark: создание игр в браузере пока на этапе анонса
Unity представила Spark — браузерный инструмент для создания и совместного редактирования игр без обязательного опыта работы в редакторе Unity.
В анонсе Мэтта Бромберга акцент сделан на работе с ассетами художников из Unity Asset Store и постепенном развитии собственной идеи. Среди предполагаемых пользователей — художники, моддеры и игроки, хорошо знающие свой жанр.
Для разработчика здесь интересен потенциальный способ быстро обсудить интерактивную идею с участником команды, который не пишет код. Но это пока предполагаемый сценарий: публикация объясняет замысел продукта, а не демонстрирует проверенный процесс производства игры.
На странице анонса предлагается записаться в лист ожидания. Перед использованием в проекте ещё предстоит оценить доступные инструменты, ограничения и условия работы. Обещание более низкого порога входа не отменяет доработку механик, визуального языка и удобства управления.
#unity #инструменты
Unity представила Spark — браузерный инструмент для создания и совместного редактирования игр без обязательного опыта работы в редакторе Unity.
В анонсе Мэтта Бромберга акцент сделан на работе с ассетами художников из Unity Asset Store и постепенном развитии собственной идеи. Среди предполагаемых пользователей — художники, моддеры и игроки, хорошо знающие свой жанр.
Для разработчика здесь интересен потенциальный способ быстро обсудить интерактивную идею с участником команды, который не пишет код. Но это пока предполагаемый сценарий: публикация объясняет замысел продукта, а не демонстрирует проверенный процесс производства игры.
На странице анонса предлагается записаться в лист ожидания. Перед использованием в проекте ещё предстоит оценить доступные инструменты, ограничения и условия работы. Обещание более низкого порога входа не отменяет доработку механик, визуального языка и удобства управления.
#unity #инструменты
После hot reload init() не запускается
Поменяли начальные значения в скрипте Defold, перезагрузили файл, а объект остался в прежнем состоянии? Hot reload повторно исполняет Lua-файл, но не запускает жизненный цикл компонента заново. Новая версия
Для действий именно после перезагрузки есть
С модулями есть отдельная ловушка. Если модуль возвращает новую локальную таблицу
Руководство Defold разбирает оба случая. На устройстве для hot reload нужна debug-сборка или development app, выбранная целью в редакторе. А перезагрузку шейдеров стоит делать осторожно: ошибка в GLSL может уронить весь движок.
Поменяли начальные значения в скрипте Defold, перезагрузили файл, а объект остался в прежнем состоянии? Hot reload повторно исполняет Lua-файл, но не запускает жизненный цикл компонента заново. Новая версия
update() начнёт работать, а init() сама по себе не вызовется.Для действий именно после перезагрузки есть
on_reload(self). В нём можно проверить состояние, обновить данные или отправить сообщение другому компоненту. Этот обработчик и обычная инициализация решают разные задачи.С модулями есть отдельная ловушка. Если модуль возвращает новую локальную таблицу
M, другой скрипт может продолжить хранить ссылку на старую таблицу. Перезагрузка файла модуля не заменит эту ссылку автоматически.Руководство Defold разбирает оба случая. На устройстве для hot reload нужна debug-сборка или development app, выбранная целью в редакторе. А перезагрузку шейдеров стоит делать осторожно: ошибка в GLSL может уронить весь движок.
❤1
Геймпад PlayStation, а подсказки Xbox
При Steam Input Gamepad Emulation игра видит эмулируемый Xbox-контроллер. Поэтому по одному XInput-вводу нельзя выбрать правильные значки для устройства, которое игрок держит в руках.
У Valve есть цепочка для получения значков из Steam:
1.
2.
3.
Если значки нарисованы в своём стиле, предусмотрите запасной вариант для незнакомого origin. Можно взять изображение Steam или через
В справочнике API есть важная оговорка: перевод Xbox-кнопки не учитывает переназначения пользователя. Эта схема относится к Gamepad Emulation. Для контроллера, работающего через полноценный Steam Input API,
При Steam Input Gamepad Emulation игра видит эмулируемый Xbox-контроллер. Поэтому по одному XInput-вводу нельзя выбрать правильные значки для устройства, которое игрок держит в руках.
У Valve есть цепочка для получения значков из Steam:
1.
GetControllerForGamepadIndex связывает XInput-слот с handle контроллера Steam Input.2.
GetActionOriginFromXboxOrigin переводит исходную Xbox-кнопку в origin реального устройства.3.
GetGlyphPNGForActionOrigin возвращает путь к локальному PNG. Его ещё нужно загрузить как текстуру игры.Если значки нарисованы в своём стиле, предусмотрите запасной вариант для незнакомого origin. Можно взять изображение Steam или через
TranslateActionOrigin подобрать ближайший известный вариант.В справочнике API есть важная оговорка: перевод Xbox-кнопки не учитывает переназначения пользователя. Эта схема относится к Gamepad Emulation. Для контроллера, работающего через полноценный Steam Input API,
GetControllerForGamepadIndex handle не вернёт.Большая стена полезнее мелкого декора
При occlusion culling в Godot 4.5 объект убирается из отрисовки, только когда окклюдер полностью закрывает его AABB — ограничивающий прямоугольный параллелепипед. Поэтому стена между комнатами хорошо подходит для occlusion culling, а мелкий декор часто почти ничего не скрывает.
Проверка тоже стоит ресурсов. Движок растеризует упрощённую геометрию окклюдеров в буфер низкого разрешения на CPU с помощью Embree. GPU получает меньше геометрии, но CPU выполняет дополнительную работу. В открытой сцене без хороших перекрытий затраты могут перевесить выигрыш.
Для настройки включите
В документации 4.5 есть режим просмотра буфера и сравнение числа draw calls. Перемещать сам
При occlusion culling в Godot 4.5 объект убирается из отрисовки, только когда окклюдер полностью закрывает его AABB — ограничивающий прямоугольный параллелепипед. Поэтому стена между комнатами хорошо подходит для occlusion culling, а мелкий декор часто почти ничего не скрывает.
Проверка тоже стоит ресурсов. Движок растеризует упрощённую геометрию окклюдеров в буфер низкого разрешения на CPU с помощью Embree. GPU получает меньше геометрии, но CPU выполняет дополнительную работу. В открытой сцене без хороших перекрытий затраты могут перевесить выигрыш.
Для настройки включите
Use Occlusion Culling, добавьте OccluderInstance3D и запеките статические окклюдеры. Одного флажка недостаточно, вся видимая сцена автоматически в них не превращается. Движущиеся объекты исключите из запекания маской слоёв.В документации 4.5 есть режим просмотра буфера и сравнение числа draw calls. Перемещать сам
OccluderInstance3D во время игры дорого: это требует перестройки BVH. Сравнивать время кадра с включённым и выключенным culling нужно на характерных ракурсах своей сцены.❤1
В SDL3 конвертация звука переехала из Put в Get
При переносе аудиокода с SDL2 стоит заново посмотреть, где выполняется работа с потоком:
—
—
В SDL2 преобразование происходило при добавлении данных, а чтение забирало уже готовый результат. Поэтому прежнее распределение нагрузки между местами вызова не переносится автоматически.
Это семантика API, доступного с SDL 3.2.0, а не обещание ускорения. Подробности: Put и Get.
При переносе аудиокода с SDL2 стоит заново посмотреть, где выполняется работа с потоком:
—
SDL_PutAudioStreamData копирует исходные данные в очередь без преобразования.—
SDL_GetAudioStreamData выполняет нужную конвертацию и ресемплинг при чтении.В SDL2 преобразование происходило при добавлении данных, а чтение забирало уже готовый результат. Поэтому прежнее распределение нагрузки между местами вызова не переносится автоматически.
SDL_AudioStream принимает порции разного размера и умеет менять входной и выходной форматы на ходу. В обоих вызовах len измеряется в байтах. Get возвращает фактически прочитанное число байтов или -1 при ошибке.Это семантика API, доступного с SDL 3.2.0, а не обещание ускорения. Подробности: Put и Get.
❤1
Вложенные Persist-объекты меняют порядок загрузки сейва
У учебного примера сохранений в документации Godot 4.5 есть важное условие: узел группы
Сам подход простой. Игра собирает узлы
Но для вложенных объектов прежний путь к родителю может стать недействительным. Восстановление нужно разбить на этапы: сначала создать родителей, затем детей. Отдельно понадобится способ связать их, поскольку полагаться на старый
Есть и граница формата: JSON не хранит
У учебного примера сохранений в документации Godot 4.5 есть важное условие: узел группы
Persist не должен быть дочерним для другого сохраняемого узла той же группы.Сам подход простой. Игра собирает узлы
Persist, вызывает их save() и записывает каждый словарь отдельной JSON-строкой в user://savegame.save. При загрузке пример очищает сохраняемые объекты, создаёт экземпляры сцен и возвращает свойства.Но для вложенных объектов прежний путь к родителю может стать недействительным. Восстановление нужно разбить на этапы: сначала создать родителей, затем детей. Отдельно понадобится способ связать их, поскольку полагаться на старый
NodePath уже нельзя.Есть и граница формата: JSON не хранит
Vector2, Vector3 и Color напрямую. Их придётся переводить в поддерживаемые значения и собирать обратно. Этот пример даёт основу сериализации, но не решает миграции сейвов между версиями игры.Размер агента меняет navmesh
Один коридор может быть проходимым для мыши и слишком узким для человека. В Recast навигационная сетка строится под размеры и возможности конкретного агента, а не просто по свободному месту на уровне.
Четыре параметра задают эту разницу:
— радиус отвечает за ширину агента
— высота определяет, под каким потолком он поместится
— максимальный уклон ограничивает крутизну поверхности
— высота шага задаёт препятствия, на которые он способен подняться
Для нескольких типов персонажей в одном окружении могут понадобиться разные сетки. При построении Recast переводит геометрию в воксели, фильтрует их и снова получает полигональную сетку. Размер вокселя позволяет менять точность и время построения.
Введение Recast Navigation отдельно напоминает: navmesh упрощает геометрию для поиска пути. Полученный коридор полигонов уточняется в маршрут через string pulling. Ни сетка, ни этот маршрут не заменяют геометрию коллизий или сплайн анимации.
Один коридор может быть проходимым для мыши и слишком узким для человека. В Recast навигационная сетка строится под размеры и возможности конкретного агента, а не просто по свободному месту на уровне.
Четыре параметра задают эту разницу:
— радиус отвечает за ширину агента
— высота определяет, под каким потолком он поместится
— максимальный уклон ограничивает крутизну поверхности
— высота шага задаёт препятствия, на которые он способен подняться
Для нескольких типов персонажей в одном окружении могут понадобиться разные сетки. При построении Recast переводит геометрию в воксели, фильтрует их и снова получает полигональную сетку. Размер вокселя позволяет менять точность и время построения.
Введение Recast Navigation отдельно напоминает: navmesh упрощает геометрию для поиска пути. Полученный коридор полигонов уточняется в маршрут через string pulling. Ни сетка, ни этот маршрут не заменяют геометрию коллизий или сплайн анимации.
❤2🔥1