#Собес #linq #query #ienumerable
🤔 Что такое LINQ в C#?
💬 Кратко:
LINQ (Language Integrated Query) — это встроенный в C# инструмент для удобного запроса данных. Он позволяет работать с коллекциями, базами данных, XML и другими источниками с использованием SQL-подобного синтаксиса.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое LINQ в C#?
💬 Кратко:
LINQ (Language Integrated Query) — это встроенный в C# инструмент для удобного запроса данных. Он позволяет работать с коллекциями, базами данных, XML и другими источниками с использованием SQL-подобного синтаксиса.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Как пользоваться Unity Profiler, чтобы реально оптимизировать игру
Привет! Сегодня разбираем инструмент, которого не должен бояться Unity разработчик — Unity Profiler. Если ты всё ещё смотришь на лаги через FPS - этот пост для тебя
Разберём как правильно пользоваться профайлером, чтобы находить проблемы, а не угадывать.
1. Главное правило профилирования - профилировать на целевом устройстве
В Editor режиме профайлер врёт. Он профайлит сам себя - таким образом попадает лишняя информация.
Если игра на мобильные устройства - собирай проект на мобильное устройство и профилируй там.
Запускай Build на устройство с опцией Development Build и Autoconnect Profiler → Profiler запустится сам → смотри реальную картину.
2. Определяем что тормозит
Вспоминаем прошлый пост - мы не хотим терять время и оптимизировать то, что не нужно.
Переходишь в Profiler → Timeline и смотришь на две строки:
• CPU — пользовательский код, работа движка, события UI, GC
• GPU — рендер, шейдеры, batching, пост-процессинг
Если CPU забит - исправляем тяжёлые функции, GC.
Если GPU забит - смотрим рендеринг - draw calls, overdraw, тяжёлые шейдеры.
3. Разворачиваем стек вызовов
Поставив полоску Timeline'а на любое место - снизу будут выведен весь стек вызова функций в конкретном кадре.
Так, мы можем посмотреть какие из функций были тяжёлыми, и оптимизировать их.
Тут многих ждёт ловушка: профайлер показывает странные функии движка вроде:
• Gfx.WaitForPresent
• WaitForTargetFPS
• WaitForLastPresentation
• Semaphore.WaitForSignal
Это не значит что эти функции надо оптимизировать.
Например, Gfx.WaitForPresent - это момент, когда CPU ждёт GPU.
Что-то вроде: "Графическая подсистема не готова принять следующий кадр - подожди"
И это значит, что твой bottleneck - GPU и оптимизировать надо его.
Описание всех подобных функций можно найти в документации.
4. Используй Deep Profile
Этот пункт будет показывать все вызовы функций, до самых глубоких функций движка.
Данных получается больше - видно абсолютно всё.
Минусы - из-за большого количества данных труднее ориентироваться и сильно нагружает устройство. Лагать игра на устройстве в таком режиме будет сильно.
Правило простое - если не получается понять проблему без режима Deep Profile - то включай.
5. Используй маркеры
Если ты знаешь, что игра у тебя лагает в какой-то конкретный промежуток - можно поставить маркеры на этот участок кода:
Таким образом, в профайлере будет виден вызов "MyMethod" на выделенный маркером промежуток
6. Итог - план оптимизации
Мой порядок действий:
1. Собрать приложение на целевое устройство
2. Развернуть стек вызовов в проблемном месте
3. Определить CPU или GPU bottleneck
4. Отделить системный код от своего
5. Исправить → снова прогнать → сравнить
🚀 Пост Guru Unity: @Minerope
Привет! Сегодня разбираем инструмент, которого не должен бояться Unity разработчик — Unity Profiler. Если ты всё ещё смотришь на лаги через FPS - этот пост для тебя
Разберём как правильно пользоваться профайлером, чтобы находить проблемы, а не угадывать.
1. Главное правило профилирования - профилировать на целевом устройстве
В Editor режиме профайлер врёт. Он профайлит сам себя - таким образом попадает лишняя информация.
Если игра на мобильные устройства - собирай проект на мобильное устройство и профилируй там.
Запускай Build на устройство с опцией Development Build и Autoconnect Profiler → Profiler запустится сам → смотри реальную картину.
2. Определяем что тормозит
Вспоминаем прошлый пост - мы не хотим терять время и оптимизировать то, что не нужно.
Переходишь в Profiler → Timeline и смотришь на две строки:
• CPU — пользовательский код, работа движка, события UI, GC
• GPU — рендер, шейдеры, batching, пост-процессинг
Если CPU забит - исправляем тяжёлые функции, GC.
Если GPU забит - смотрим рендеринг - draw calls, overdraw, тяжёлые шейдеры.
3. Разворачиваем стек вызовов
Поставив полоску Timeline'а на любое место - снизу будут выведен весь стек вызова функций в конкретном кадре.
Так, мы можем посмотреть какие из функций были тяжёлыми, и оптимизировать их.
Тут многих ждёт ловушка: профайлер показывает странные функии движка вроде:
• Gfx.WaitForPresent
• WaitForTargetFPS
• WaitForLastPresentation
• Semaphore.WaitForSignal
Это не значит что эти функции надо оптимизировать.
Например, Gfx.WaitForPresent - это момент, когда CPU ждёт GPU.
Что-то вроде: "Графическая подсистема не готова принять следующий кадр - подожди"
И это значит, что твой bottleneck - GPU и оптимизировать надо его.
Описание всех подобных функций можно найти в документации.
4. Используй Deep Profile
Этот пункт будет показывать все вызовы функций, до самых глубоких функций движка.
Данных получается больше - видно абсолютно всё.
Минусы - из-за большого количества данных труднее ориентироваться и сильно нагружает устройство. Лагать игра на устройстве в таком режиме будет сильно.
Правило простое - если не получается понять проблему без режима Deep Profile - то включай.
5. Используй маркеры
Если ты знаешь, что игра у тебя лагает в какой-то конкретный промежуток - можно поставить маркеры на этот участок кода:
ProfilerMarker marker = new ProfilerMarker("MyMethod");
void Update()
{
marker.Begin();
// твой код
marker.End();
}Таким образом, в профайлере будет виден вызов "MyMethod" на выделенный маркером промежуток
6. Итог - план оптимизации
Мой порядок действий:
1. Собрать приложение на целевое устройство
2. Развернуть стек вызовов в проблемном месте
3. Определить CPU или GPU bottleneck
4. Отделить системный код от своего
5. Исправить → снова прогнать → сравнить
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
#Собес #csharp #delegate #unity
🤔 Senior Game разработчик в компанию Awem Games
Техническое собеседование. Весна 2024. Большое количество вопросов по процессам, работе в команде, опыту.
💬 Вопросы:
- В чем разница между структурой и классом в C++?
- Когда уместно вместо Addressables использовать свою реализацию?
- Расскажи про использование async await.
- Как подойти к выбору коллекции для задачи? Как учитывать алгоритмическую сложность при выборе?
- Что такое ивенты в C#?
👉 Все вопросы из этого собеседования (27)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Senior Game разработчик в компанию Awem Games
Техническое собеседование. Весна 2024. Большое количество вопросов по процессам, работе в команде, опыту.
💬 Вопросы:
- В чем разница между структурой и классом в C++?
- Когда уместно вместо Addressables использовать свою реализацию?
- Расскажи про использование async await.
- Как подойти к выбору коллекции для задачи? Как учитывать алгоритмическую сложность при выборе?
- Что такое ивенты в C#?
👉 Все вопросы из этого собеседования (27)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_revert
🤔 Когда вы используете git revert?
💬 Кратко:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Когда вы используете git revert?
💬 Кратко:
git revert используется для создания нового коммита, который отменяет изменения, сделанные в предыдущем коммите. Эта команда полезна, когда нужно откатить изменения без изменения истории репозитория.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#repository #godotengine
📚 Godot Engine
Официальный исходный код открытого кросс‑платформенного игрового движка Godot. Это полноценная среда для разработки 2D‑ и 3D‑игр, включающая редактор, скриптовый язык GDScript (похожий на Python), систему сцен и узлов, инструменты анимации, физику и рендеринг. Репозиторий содержит всю кодовую базу движка, документацию, примеры, а также систему отслеживания задач и обсуждений. Подходит как для изучения архитектуры движка, так и для внесения собственных изменений, создания плагинов или сборки кастомных версий.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Godot Engine
Официальный исходный код открытого кросс‑платформенного игрового движка Godot. Это полноценная среда для разработки 2D‑ и 3D‑игр, включающая редактор, скриптовый язык GDScript (похожий на Python), систему сцен и узлов, инструменты анимации, физику и рендеринг. Репозиторий содержит всю кодовую базу движка, документацию, примеры, а также систему отслеживания задач и обсуждений. Подходит как для изучения архитектуры движка, так и для внесения собственных изменений, создания плагинов или сборки кастомных версий.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #actor #unreal_engine
🤔 Напишите функцию на C++ для применения урона актеру при столкновении с другим актером.
💬 Кратко:
Для применения урона актеру при столкновении с другим актером используйте событие OnActorHit для обнаружения столкновений и вызовите функцию TakeDamage на затронутом актере, передав параметры урона.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Напишите функцию на C++ для применения урона актеру при столкновении с другим актером.
💬 Кратко:
Для применения урона актеру при столкновении с другим актером используйте событие OnActorHit для обнаружения столкновений и вызовите функцию TakeDamage на затронутом актере, передав параметры урона.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥3
📦 Memory Profiler - инструмент, который спасёт вашу игру от утечек памяти
Привет! Продолжаем тему оптимизаций и профилирования и сегодня разберём один из самых полезных инструментов в Unity - Memory Profiler.
Если у вас рандомные вылеты на мобилках, фризы при загрузке сцен или игра стабильно жрёт много RAM - этот инструмент вам поможет исправить ситуацию.
Что такое Memory Profiler и зачем он нужен
Memory Profiler - это пакет от Unity для анализа использования памяти. Он помогает:
• Видеть, что именно занимает RAM
• Отлавливать утечки
• Находить лишние текстуры, Mesh’и, аудио, коллекции
• Находить ассеты, которые не выгружаются
• Сравнивать состояние памяти в разные моменты игры
Как пользоваться Memory Profiler
Сначала установи пакет (на новых версиях Unity вшит по дефолту): Window → Package Manager → Memory Profiler → Install.
Открой: Window → Analysis → Memory Profiler.
1️⃣ Собери приложение на target устройство
У этого профайлера такого же сайд эффект, как у обычного - в Editor режиме будет профайлить сам себя.
Поэтому, собираем приложение на устройство.
2️⃣ Сделай срез памяти (snapshot)
Snapshot - фиксация текущего состояния памяти.
Snapshot хранятся на диске и их можно сравнивать между собой.
3️⃣ Изучи информацию, используя разные режимы в Snapshot
Memory Profiler даёт несколько разных представлений памяти. Это ключ к тому, чтобы быстро понять, где проблема.
1. Summary (Обзор)
Самая верхнеуровневая картина. Сразу видно:
• Общий объём памяти
• Самые тяжёлые категории (Textures, Meshes, Audio, GC Heap)
• В каких областях память растёт
Это то, что открываешь первым, чтобы понять масштаб беды.
Здесь сразу можно увидеть "тяжёлые" ассеты и добавить им сжатия.
2. Objects and Allocations
Показывает объекты Unity (Texture2D, Mesh, AudioClip, GameObject, ScriptableObject) и чистые C# объекты.
Здесь обычно ищут:
• дубли текстур
• Mesh’и с Read/Write
• «вечные» ScriptableObject
• коллекции, которые растут без очистки
3. Native Memory
Память движка и нативных структур: Shader, ComputeBuffer, RenderTexture и т.д.
Именно здесь чаще всего «утекают»:
• RenderTexture
• Shader Variant Collection
• Compute буферы
• GPU ресурсы, которые не освобождаются
4. Managed Objects (GC Heap)
Память .NET среды.
Тут можно найти:
• Списки, которые растут
• Dictionary, которые не чистят
• Объекты, удерживаемые статическими ссылками
• Лямбды, оставшиеся в событиях
4️⃣ Проведи оптимизации
Увидел "тяжёлые" ассеты в проекте - добавь им сжатия
Обнаружил дубляж ассетов - проверяй их загрузку/выгрузку
Просто смотри что жрёт больше всего памяти и найди способы оптимизации веса таких объектов.
5️⃣ Сделай новый Snapshot и используй сравнение (Diff)
Diff - один из самых полезных режимов.
Сразу видно:
• улучшения памяти в сравнении с предыдущим snapshot
• что новое появилось в памяти
• какие ассеты загружаются повторно
• какой тип объектов растёт быстрее всего
Совет - куда обращать внимание, что чаще всего жрёт память
• Текстуры - особенно UI, PNG без компрессии, включённые Read/Write (часто у Азиатских шрифтов TMPro)
• AudioClip - оставленные в RAM WAV-ки
• Meshes - включённый Read/Write Enabled
• Addressables - загрузили, но не выгрузили
• Коллекции - растут и никто не чистит
🚀 Пост Guru Unity: @Minerope
Привет! Продолжаем тему оптимизаций и профилирования и сегодня разберём один из самых полезных инструментов в Unity - Memory Profiler.
Если у вас рандомные вылеты на мобилках, фризы при загрузке сцен или игра стабильно жрёт много RAM - этот инструмент вам поможет исправить ситуацию.
Что такое Memory Profiler и зачем он нужен
Memory Profiler - это пакет от Unity для анализа использования памяти. Он помогает:
• Видеть, что именно занимает RAM
• Отлавливать утечки
• Находить лишние текстуры, Mesh’и, аудио, коллекции
• Находить ассеты, которые не выгружаются
• Сравнивать состояние памяти в разные моменты игры
Как пользоваться Memory Profiler
Сначала установи пакет (на новых версиях Unity вшит по дефолту): Window → Package Manager → Memory Profiler → Install.
Открой: Window → Analysis → Memory Profiler.
У этого профайлера такого же сайд эффект, как у обычного - в Editor режиме будет профайлить сам себя.
Поэтому, собираем приложение на устройство.
Snapshot - фиксация текущего состояния памяти.
Snapshot хранятся на диске и их можно сравнивать между собой.
Memory Profiler даёт несколько разных представлений памяти. Это ключ к тому, чтобы быстро понять, где проблема.
1. Summary (Обзор)
Самая верхнеуровневая картина. Сразу видно:
• Общий объём памяти
• Самые тяжёлые категории (Textures, Meshes, Audio, GC Heap)
• В каких областях память растёт
Это то, что открываешь первым, чтобы понять масштаб беды.
Здесь сразу можно увидеть "тяжёлые" ассеты и добавить им сжатия.
2. Objects and Allocations
Показывает объекты Unity (Texture2D, Mesh, AudioClip, GameObject, ScriptableObject) и чистые C# объекты.
Здесь обычно ищут:
• дубли текстур
• Mesh’и с Read/Write
• «вечные» ScriptableObject
• коллекции, которые растут без очистки
3. Native Memory
Память движка и нативных структур: Shader, ComputeBuffer, RenderTexture и т.д.
Именно здесь чаще всего «утекают»:
• RenderTexture
• Shader Variant Collection
• Compute буферы
• GPU ресурсы, которые не освобождаются
4. Managed Objects (GC Heap)
Память .NET среды.
Тут можно найти:
• Списки, которые растут
• Dictionary, которые не чистят
• Объекты, удерживаемые статическими ссылками
• Лямбды, оставшиеся в событиях
Увидел "тяжёлые" ассеты в проекте - добавь им сжатия
Обнаружил дубляж ассетов - проверяй их загрузку/выгрузку
Просто смотри что жрёт больше всего памяти и найди способы оптимизации веса таких объектов.
Diff - один из самых полезных режимов.
Сразу видно:
• улучшения памяти в сравнении с предыдущим snapshot
• что новое появилось в памяти
• какие ассеты загружаются повторно
• какой тип объектов растёт быстрее всего
Совет - куда обращать внимание, что чаще всего жрёт память
• Текстуры - особенно UI, PNG без компрессии, включённые Read/Write (часто у Азиатских шрифтов TMPro)
• AudioClip - оставленные в RAM WAV-ки
• Meshes - включённый Read/Write Enabled
• Addressables - загрузили, но не выгрузили
• Коллекции - растут и никто не чистит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес #csharp #delegate #unity
🤔 Senior Game разработчик в компанию Awem Games
Техническое собеседование. Весна 2024. Большое количество вопросов по процессам, работе в команде, опыту.
💬 Вопросы:
- В чем разница между структурой и классом в C++?
- Что такое индексаторы (Indexers) в C#?
- Что такое расширяющие методы (Extension Methods) в C#?
- Что такое рефлексия (Reflection) в C#?
- Что такое многопоточное программирование в .NET?
👉 Все вопросы из этого собеседования (27)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Senior Game разработчик в компанию Awem Games
Техническое собеседование. Весна 2024. Большое количество вопросов по процессам, работе в команде, опыту.
💬 Вопросы:
- В чем разница между структурой и классом в C++?
- Что такое индексаторы (Indexers) в C#?
- Что такое расширяющие методы (Extension Methods) в C#?
- Что такое рефлексия (Reflection) в C#?
- Что такое многопоточное программирование в .NET?
👉 Все вопросы из этого собеседования (27)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
❤1👍1
#Собес #merge #rebase #history
🤔 В чём разница между git rebase и git merge?
💬 Кратко:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 В чём разница между git rebase и git merge?
💬 Кратко:
git merge сохраняет историю параллельных веток, создавая merge-коммит при расхождении, а git rebase переписывает историю: переносит коммиты одной ветки поверх другой, создавая линейную историю без merge-коммитов. Merge показывает фактические ветвления, rebase упрощает лог, но меняет SHA коммитов.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#repository #шейдеры #начинающие
📚 3D Game Shaders for Beginners
Обучающий проект, посвящённый основам написания шейдеров для 3D‑игр. В нём пошагово разбираются ключевые техники компьютерной графики: от простейшего освещения и текстурирования до эффектов вроде нормал‑маппинга, отражения, преломления и постобработки. Материал подаётся в доступной форме с наглядными примерами на GLSL, сопровождается пояснениями принципов работы конвейера рендеринга и визуальными сравнениями «до/после». Проект ориентирован на начинающих разработчиков, которые хотят понять, как создавать и настраивать визуальные эффекты в играх.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 3D Game Shaders for Beginners
Обучающий проект, посвящённый основам написания шейдеров для 3D‑игр. В нём пошагово разбираются ключевые техники компьютерной графики: от простейшего освещения и текстурирования до эффектов вроде нормал‑маппинга, отражения, преломления и постобработки. Материал подаётся в доступной форме с наглядными примерами на GLSL, сопровождается пояснениями принципов работы конвейера рендеринга и визуальными сравнениями «до/после». Проект ориентирован на начинающих разработчиков, которые хотят понять, как создавать и настраивать визуальные эффекты в играх.
Перейти к материалу
👉 База вопросов 👉 Новости
👍1
#Собес #unity #csharp
🤔 Что делал, чтобы уменьшить мусор при инициализации Spine-анимаций?
💬 Кратко:
Чтобы уменьшить GC при инициализации Spine, использовал кэширование анимаций и скелетов, избегал частого создания/уничтожения Spine GameObject, применял object pooling для анимированных объектов, и минимизировал runtime изменения скинов и аттачментов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что делал, чтобы уменьшить мусор при инициализации Spine-анимаций?
💬 Кратко:
Чтобы уменьшить GC при инициализации Spine, использовал кэширование анимаций и скелетов, избегал частого создания/уничтожения Spine GameObject, применял object pooling для анимированных объектов, и минимизировал runtime изменения скинов и аттачментов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥1
Frame Debugger - посмотри как рендерится твоя игра
Продолжаем разбирать инструменты для оптимизаций, и сегодня это Frame Debugger.
Если ты занимался оптимизацией рендера, то наверняка слышал про draw call’ы, батчинг. Возможно, глядел в окошко Stats, видел большое количество draw call, но не понимал, откуда они берутся.
Frame Debugger - инструмент, который показывает пошагово, как движок формирует кадр и почему какие-то вещи не батчатся.
👀 Что вообще можно увидеть в Frame Debugger?
Когда ты включаешь его, Unity ставит игру на паузу и показывает последовательность рендер-команд для формирования текущего кадра:
• Какие draw call’ы вызываются
• Какие материалы / шейдеры используются
• Какие объекты попали / не попали в батч
• Какие RenderPass’ы отработали
• Как влияет Canvas, UI, прозрачность, сортировка
Показывает дажи операции чистки экрана от прошлого кадра. Зайди, посмотри - это интересно!
🎯 Зачем Frame Debugger нужен?
1. Понять, почему что-то НЕ забатчилось
Очень частая проблема - ты вроде включил Static Batching или Sprite Atlas, но draw call’ы всё равно скачут.
Frame Debugger покажет причину в один клик:
• Разные материалы
• Разный порядок рендеринга
• Разные атласы
• Объект не помечен Static
• Включён/выключен SRP Batcher
• Прозрачность ломает батчи
Там буквально написано: "Why this draw call can't be batched with the previous one: ..."
2. Найти “скрытые” проблемы рендера
Frame Debugger отлично подсвечивает:
• Неверный порядок сортировки слоёв
• Лишние SetPass Calls
• Ненужные Blit’ы и копирование текстур
• Эффекты постобработки, которые вызывают лишние проходы
Когда понимаешь, как конкретно происходит рендеринг, оптимизация становится намного проще.
3. Посмотреть данные материалов, текстуры
Помимо показа последовательности построения объектов, Frame Debugger показывает, каким материалом с какими данными (все property и внутренние) объект отрисовывается. Это полезно, если какой-то объект отрисовывается не так, как предполагается. Например, имеет неожидаемый цвет или положение.
⚙️ Как пользоваться
1. Открыть: Window → Analysis → Frame Debugger
2. Нажать Enable
3. Иди по шагам смотреть каждый вызов
4. Кликать по draw call → изучать причину
Итог
Frame Debugger - крутой инструмент, который поможет разобраться в рендеринге игры и оптимизировать её. Это не только полезно, но и интересно!
А навык использования инструментов оптимизаций поможет на собеседовании и реальной работе.
Подробнее про FrameDebugger можно прочитать в документации Unity
🚀 Пост Guru Unity: @Minerope
Продолжаем разбирать инструменты для оптимизаций, и сегодня это Frame Debugger.
Если ты занимался оптимизацией рендера, то наверняка слышал про draw call’ы, батчинг. Возможно, глядел в окошко Stats, видел большое количество draw call, но не понимал, откуда они берутся.
Frame Debugger - инструмент, который показывает пошагово, как движок формирует кадр и почему какие-то вещи не батчатся.
Когда ты включаешь его, Unity ставит игру на паузу и показывает последовательность рендер-команд для формирования текущего кадра:
• Какие draw call’ы вызываются
• Какие материалы / шейдеры используются
• Какие объекты попали / не попали в батч
• Какие RenderPass’ы отработали
• Как влияет Canvas, UI, прозрачность, сортировка
Показывает дажи операции чистки экрана от прошлого кадра. Зайди, посмотри - это интересно!
🎯 Зачем Frame Debugger нужен?
1. Понять, почему что-то НЕ забатчилось
Очень частая проблема - ты вроде включил Static Batching или Sprite Atlas, но draw call’ы всё равно скачут.
Frame Debugger покажет причину в один клик:
• Разные материалы
• Разный порядок рендеринга
• Разные атласы
• Объект не помечен Static
• Включён/выключен SRP Batcher
• Прозрачность ломает батчи
Там буквально написано: "Why this draw call can't be batched with the previous one: ..."
2. Найти “скрытые” проблемы рендера
Frame Debugger отлично подсвечивает:
• Неверный порядок сортировки слоёв
• Лишние SetPass Calls
• Ненужные Blit’ы и копирование текстур
• Эффекты постобработки, которые вызывают лишние проходы
Когда понимаешь, как конкретно происходит рендеринг, оптимизация становится намного проще.
3. Посмотреть данные материалов, текстуры
Помимо показа последовательности построения объектов, Frame Debugger показывает, каким материалом с какими данными (все property и внутренние) объект отрисовывается. Это полезно, если какой-то объект отрисовывается не так, как предполагается. Например, имеет неожидаемый цвет или положение.
⚙️ Как пользоваться
1. Открыть: Window → Analysis → Frame Debugger
2. Нажать Enable
3. Иди по шагам смотреть каждый вызов
4. Кликать по draw call → изучать причину
Итог
Frame Debugger - крутой инструмент, который поможет разобраться в рендеринге игры и оптимизировать её. Это не только полезно, но и интересно!
А навык использования инструментов оптимизаций поможет на собеседовании и реальной работе.
Подробнее про FrameDebugger можно прочитать в документации Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #architecture #pattern
🤔 В чём смысл MVP/MV*?
💬 Кратко:
MVP/MV* - это подходы к организации кода, которые разделяют логику приложения на отдельные части. Они помогают сделать код более понятным и удобным для изменений. В игровой разработке это особенно полезно для отделения игровой логики от интерфейса. Такой подход упрощает тестирование и переиспользование кода.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 В чём смысл MVP/MV*?
💬 Кратко:
MVP/MV* - это подходы к организации кода, которые разделяют логику приложения на отдельные части. Они помогают сделать код более понятным и удобным для изменений. В игровой разработке это особенно полезно для отделения игровой логики от интерфейса. Такой подход упрощает тестирование и переиспользование кода.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #git_reset #git_merge
🤔 Что такое команды git reset --mixed и git merge --abort?
💬 Кратко:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое команды git reset --mixed и git merge --abort?
💬 Кратко:
git reset --mixed: отменяет изменения, которые были добавлены в индекс, но сохраняет изменения в рабочем каталоге.git merge --abort: отменяет слияние, которое в данный момент находится в процессе, и возвращает репозиторий в состояние до начала слияния.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#trainer #печать
📚 Тренируем печать
Быстро печатать — не просто приятно, а выгодно. Когда пальцы успевают за мыслью, код льётся плавно.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Тренируем печать
Быстро печатать — не просто приятно, а выгодно. Когда пальцы успевают за мыслью, код льётся плавно.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #new_project #template #project_settings
🤔 Как создать новый проект в Unreal Engine?
💬 Кратко:
Для создания нового проекта в Unreal Engine нужно открыть лаунчер, выбрать вкладку "New Project", выбрать шаблон, настроить параметры проекта (например, имя и место хранения) и нажать "Create".
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как создать новый проект в Unreal Engine?
💬 Кратко:
Для создания нового проекта в Unreal Engine нужно открыть лаунчер, выбрать вкладку "New Project", выбрать шаблон, настроить параметры проекта (например, имя и место хранения) и нажать "Create".
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Project Auditor - получи ревью проекта от Юнитеков
Сегодня хочу рассказать про Project Auditor - инструмент, который анализирует ваш проект в один клик и даёт рекомендации по улучшению.
Он анализирует:
• Код
• Ассеты
• Настройки проекта
• Текстуры
• Звуки
• Addressables
• и другой внутрянке
Project Auditor автоматически выдаёт рекомендации по этим группам, например:
• Текстуры без сжатия → предложит включить compression
• Слишком тяжёлые форматы аудио → предложит более лёгкие
• Включённый Read/Write у текстур → предупредит, что они занимают в 2 раза больше памяти
• Проблемные настройки ассетов и проекта в целом
Чистка MVP
Часто мы попадаем в такую ситуацию: начали проект, не определились с тем, как работаем с текстурами, звуками, другими ассетами.
Закидываем в проект ассеты куда попало, чтобы быстро накидать MVP.
Работаем, собираем первый билд, проект разрастается. Надо улучшать структуру проекта и оптимизировать.
А в проекте каша - часть ассетов настроена грамотно, часть нет. Вручную всё проверять - очень долго.
Здесь Project Auditor максимально полезен - он просто проходит по проекту и подсвечивает всё это автоматически.
И самое интересное - тебе даже не обязательно знать все разные свойства и галочки в ассетах заранее.
Ты видишь рекомендацию → идёшь разбираться → принимаешь осознанное решение, применять её или нет.
Про профайлеры
В некоторых случаях Project Auditor может быть альтернативой Memory Profiler’у.
Например: он сразу подскажет, что текстуры без сжатия → включаешь compression → экономишь кучу оперативной памяти
Всё это даже не заходя в Memory Profiler, который сам по себе не самый простой инструмент.
Важные моменты
Инструмент экспериментальный - не включён по дефолту в Unity.
Ставится через Package Manager
При этом он официальный, от Unity (не сторонний ассет)
Если коротко:
Project Auditor - это автоматический помощник, который помогает держать проект в порядке и не забывать базовые, но критичные вещи.
Прочитать подробнее можно в документации
🚀 Пост Guru Unity: @Minerope
Сегодня хочу рассказать про Project Auditor - инструмент, который анализирует ваш проект в один клик и даёт рекомендации по улучшению.
Он анализирует:
• Код
• Ассеты
• Настройки проекта
• Текстуры
• Звуки
• Addressables
• и другой внутрянке
Project Auditor автоматически выдаёт рекомендации по этим группам, например:
• Текстуры без сжатия → предложит включить compression
• Слишком тяжёлые форматы аудио → предложит более лёгкие
• Включённый Read/Write у текстур → предупредит, что они занимают в 2 раза больше памяти
• Проблемные настройки ассетов и проекта в целом
Чистка MVP
Часто мы попадаем в такую ситуацию: начали проект, не определились с тем, как работаем с текстурами, звуками, другими ассетами.
Закидываем в проект ассеты куда попало, чтобы быстро накидать MVP.
Работаем, собираем первый билд, проект разрастается. Надо улучшать структуру проекта и оптимизировать.
А в проекте каша - часть ассетов настроена грамотно, часть нет. Вручную всё проверять - очень долго.
Здесь Project Auditor максимально полезен - он просто проходит по проекту и подсвечивает всё это автоматически.
И самое интересное - тебе даже не обязательно знать все разные свойства и галочки в ассетах заранее.
Ты видишь рекомендацию → идёшь разбираться → принимаешь осознанное решение, применять её или нет.
Про профайлеры
В некоторых случаях Project Auditor может быть альтернативой Memory Profiler’у.
Например: он сразу подскажет, что текстуры без сжатия → включаешь compression → экономишь кучу оперативной памяти
Всё это даже не заходя в Memory Profiler, который сам по себе не самый простой инструмент.
Важные моменты
Инструмент экспериментальный - не включён по дефолту в Unity.
Ставится через Package Manager
При этом он официальный, от Unity (не сторонний ассет)
Если коротко:
Project Auditor - это автоматический помощник, который помогает держать проект в порядке и не забывать базовые, но критичные вещи.
Прочитать подробнее можно в документации
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#Собес #dependency #injection #vcontainer
🤔 Senior Game Developer в компанию Топ хаус
Техническое собеседование. год 2025. Вилка 2500-3500$ . Дата: Октябрь 2025
💬 Вопросы:
- Расскажите про принципы SOLID: SRP, OCP, LSP, ISP, DIP и примеры их применения на практике.
- Если использовать Addressables, как выгрузить ассет из памяти?
- Какие ещё задачи решают Addressables, помимо загрузки/выгрузки?
- Где применим паттерн MVC (или MV-паттерны в целом)?
- Расскажи про использование async await.
👉 Все вопросы из этого собеседования (54)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Senior Game Developer в компанию Топ хаус
Техническое собеседование. год 2025. Вилка 2500-3500$ . Дата: Октябрь 2025
💬 Вопросы:
- Расскажите про принципы SOLID: SRP, OCP, LSP, ISP, DIP и примеры их применения на практике.
- Если использовать Addressables, как выгрузить ассет из памяти?
- Какие ещё задачи решают Addressables, помимо загрузки/выгрузки?
- Где применим паттерн MVC (или MV-паттерны в целом)?
- Расскажи про использование async await.
👉 Все вопросы из этого собеседования (54)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #time #automation
🤔 Как решить задачу при отсутствии дополнительных ресурсов и когда только вы можете её выполнить?
💬 Кратко:
Когда ресурсов нет, а задача ваша, нужно действовать по трем направлениям: 1) Пересмотреть задачу — можно ли ее радикально упростить или автоматизировать? 2) Пересмотреть процесс — устранить все "пожиратели времени" (митинги, контекстные переключения). 3) Пересмотреть приоритеты — договориться о переносе или отмене других ваших менее важных задач, чтобы освободить время на критическую.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как решить задачу при отсутствии дополнительных ресурсов и когда только вы можете её выполнить?
💬 Кратко:
Когда ресурсов нет, а задача ваша, нужно действовать по трем направлениям: 1) Пересмотреть задачу — можно ли ее радикально упростить или автоматизировать? 2) Пересмотреть процесс — устранить все "пожиратели времени" (митинги, контекстные переключения). 3) Пересмотреть приоритеты — договориться о переносе или отмене других ваших менее важных задач, чтобы освободить время на критическую.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#podcast #всё
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #flush #output_buffer #cout
🤔 Что такое flush в C++?
💬 Кратко:
В C++ функция
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое flush в C++?
💬 Кратко:
В C++ функция
flush используется для немедленного вывода данных из буфера на экран или в файл.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал