#Собес #assetbundle #manifest #loadasset
🤔 Как организовать использование ассетов в Unity для большого проекта?
💬 Кратко:
Для большого проекта в Unity нужно использовать AssetBundles для организации и загрузки ассетов. Сначала создается манифест для управления зависимостями, затем ассеты группируются в логичные пакеты. Для загрузки можно использовать методы LoadAsset с асинхронной загрузкой. Также важно использовать сжатие для оптимизации.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как организовать использование ассетов в Unity для большого проекта?
💬 Кратко:
Для большого проекта в Unity нужно использовать AssetBundles для организации и загрузки ассетов. Сначала создается манифест для управления зависимостями, затем ассеты группируются в логичные пакеты. Для загрузки можно использовать методы LoadAsset с асинхронной загрузкой. Также важно использовать сжатие для оптимизации.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #structure #oop #class
🤔 В чем разница между структурой и классом в C#?
💬 Кратко:
Класс и структура в C# похожи, но имеют ключевые различия. Класс — это ссылка на объект, а структура — это значение. Классы обычно используются для более сложных объектов, а структуры — для небольших, легких объектов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 В чем разница между структурой и классом в C#?
💬 Кратко:
Класс и структура в C# похожи, но имеют ключевые различия. Класс — это ссылка на объект, а структура — это значение. Классы обычно используются для более сложных объектов, а структуры — для небольших, легких объектов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #git_clone
🤔 Что делает Git-клон?
💬 Кратко:
Команда
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что делает Git-клон?
💬 Кратко:
Команда
git clone создаёт копию существующего репозитория, включая всю историю изменений, файлы и ветки. Это используется, чтобы начать работу с проектом, который уже находится в удалённом репозитории.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Как проходит типичное техническое собеседование Unity-разработчика
Привет! За свою карьеру я прошёл более 15 собеседований, и сейчас расскажу про наиболее частую структуру.
1. Самопрезентация
После короткого смолтока вас попросят рассказать о себе.
Это не просто формальность - по вашему рассказу формируется первое впечатление.
Расскажите:
• над какими проектами работали
• за что отвечали
• какие задачи решали и чем гордитесь
Совет: запишите рассказ на аудио и послушайте. Поймёт ли человек, который впервые вас видит, чем вы занимались и в чём ваша ценность? Можно отправить запись другу для проверки.
После этого интервьюер может уточнить детали из резюме или спросить о вещах, которые вы не упомянули.
2. Технический блок
Здесь проверяют ваши знания по C# и Unity. Список тем зависит от компании, но чаще всего спрашивают:
1. Устройство памяти в C#. Отличия поведения ссылочных и значимых типов.
2. Garbage Collector - что это такое, как работает.
3. Отличия классов и структур. Ограничения структур. Boxing & Unboxing.
4. Коллекции и алгоритмы. Как "под капотом" работают стандартные коллекции, оценка сложности (Big O) операций с этими коллекциями (добавление, удаление, обращение). Могут затронуть популярные алгоритмы сортировки и обхода графа.
5. Асинхронность и многопоточность в C#
6. Блок Unity. Спрашивают что-то из перечисленного: Addressables / Оптимизации / Шейдеры и графический пайплайн / Сборка билда / Клиент-серверное взаимодействие / Unit тесты / Полезный стек - UniTask, Zenject, R3
Подсказка: читайте описание вакансии - по нему можно понять, на чём будет акцент.
3. Вопросы по процессам
В этом блоке собеседующие проверят ваши софт скиллы, используя вопросы о вашем поведении в команде.
Примеры вопросов:
• Как проводите code review?
• Как оцениваете время на выполнение задач?
• Что делаете, если ТЗ неполное?
• Как решаете конфликты?
• Что вас мотивирует в работе?
• Что делаете, если не успеваете в дедлайн?
4. Live-coding
Редкая практика, но бывает - примерно в 1 из 5 собеседований.
Вам дают задачу, вы демонстрируете экран и решаете её в реальном времени.
Примеры задач:
• Алгоритм нахождения матчей на match-3 поле;
• Обход графа;
• Проектирование - например, реализовать инвентарь или отревьюить код.
5. Ваши вопросы
Возможно, это будет неожиданностью - но по этому блоку вас продолжают оценивать.
Необходимо показать, что не просто вы пришли ради денег, а подходите к выбору компании осознанно, настроены на долгосрочное сотрудничество, хотите принести им пользу.
Хорошие вопросы:
• Как проходит онбординг новых сотрудников?
• Как часто проводятся performance review и что учитывается?
• Какие направления развития у компании сейчас в приоритете?
• Есть ли менторство или обмен опытом внутри команды?
• Есть ли единые стандарты кодстайла и архитектуры?
• Как работаете с техдолгом - планово или “по ходу”?
• Используете ли собственные фреймворки / пайплайны?
• По каким метрикам оцениваете успех проекта - доход, удержание, отзывы игроков?
• Какие ближайшие планы на развитие проекта?
🚀 Пост Guru Unity: @Minerope
Привет! За свою карьеру я прошёл более 15 собеседований, и сейчас расскажу про наиболее частую структуру.
1. Самопрезентация
После короткого смолтока вас попросят рассказать о себе.
Это не просто формальность - по вашему рассказу формируется первое впечатление.
Расскажите:
• над какими проектами работали
• за что отвечали
• какие задачи решали и чем гордитесь
Совет: запишите рассказ на аудио и послушайте. Поймёт ли человек, который впервые вас видит, чем вы занимались и в чём ваша ценность? Можно отправить запись другу для проверки.
После этого интервьюер может уточнить детали из резюме или спросить о вещах, которые вы не упомянули.
2. Технический блок
Здесь проверяют ваши знания по C# и Unity. Список тем зависит от компании, но чаще всего спрашивают:
1. Устройство памяти в C#. Отличия поведения ссылочных и значимых типов.
2. Garbage Collector - что это такое, как работает.
3. Отличия классов и структур. Ограничения структур. Boxing & Unboxing.
4. Коллекции и алгоритмы. Как "под капотом" работают стандартные коллекции, оценка сложности (Big O) операций с этими коллекциями (добавление, удаление, обращение). Могут затронуть популярные алгоритмы сортировки и обхода графа.
5. Асинхронность и многопоточность в C#
6. Блок Unity. Спрашивают что-то из перечисленного: Addressables / Оптимизации / Шейдеры и графический пайплайн / Сборка билда / Клиент-серверное взаимодействие / Unit тесты / Полезный стек - UniTask, Zenject, R3
Подсказка: читайте описание вакансии - по нему можно понять, на чём будет акцент.
3. Вопросы по процессам
В этом блоке собеседующие проверят ваши софт скиллы, используя вопросы о вашем поведении в команде.
Примеры вопросов:
• Как проводите code review?
• Как оцениваете время на выполнение задач?
• Что делаете, если ТЗ неполное?
• Как решаете конфликты?
• Что вас мотивирует в работе?
• Что делаете, если не успеваете в дедлайн?
4. Live-coding
Редкая практика, но бывает - примерно в 1 из 5 собеседований.
Вам дают задачу, вы демонстрируете экран и решаете её в реальном времени.
Примеры задач:
• Алгоритм нахождения матчей на match-3 поле;
• Обход графа;
• Проектирование - например, реализовать инвентарь или отревьюить код.
5. Ваши вопросы
Возможно, это будет неожиданностью - но по этому блоку вас продолжают оценивать.
Необходимо показать, что не просто вы пришли ради денег, а подходите к выбору компании осознанно, настроены на долгосрочное сотрудничество, хотите принести им пользу.
Хорошие вопросы:
• Как проходит онбординг новых сотрудников?
• Как часто проводятся performance review и что учитывается?
• Какие направления развития у компании сейчас в приоритете?
• Есть ли менторство или обмен опытом внутри команды?
• Есть ли единые стандарты кодстайла и архитектуры?
• Как работаете с техдолгом - планово или “по ходу”?
• Используете ли собственные фреймворки / пайплайны?
• По каким метрикам оцениваете успех проекта - доход, удержание, отзывы игроков?
• Какие ближайшие планы на развитие проекта?
Please open Telegram to view this post
VIEW IN TELEGRAM
#course #ооп #case
📚 Практический анализ ПО с моделированием на UML
Целью курса является обучение слушателей теоретическим основам объектно-ориентированного подхода, практическим методам визуального проектирования и технологии разработки программного обеспечения с использованием компьютеризированных систем разработки (CASE
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Практический анализ ПО с моделированием на UML
Целью курса является обучение слушателей теоретическим основам объектно-ориентированного подхода, практическим методам визуального проектирования и технологии разработки программного обеспечения с использованием компьютеризированных систем разработки (CASE
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #prefab #instantiation #components
🤔 Что такое префаб в Unity и как бы вы использовали его в реальном проекте?
💬 Кратко:
Prefab в Unity — это сохраненный шаблон игрового объекта, который можно многократно использовать в проекте. Это позволяет создать объект (например, врага с AI, модель, анимации) один раз и повторно использовать его в разных частях игры, что упрощает управление и обновление.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое префаб в Unity и как бы вы использовали его в реальном проекте?
💬 Кратко:
Prefab в Unity — это сохраненный шаблон игрового объекта, который можно многократно использовать в проекте. Это позволяет создать объект (например, врага с AI, модель, анимации) один раз и повторно использовать его в разных частях игры, что упрощает управление и обновление.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
MV* паттерны в Unity: разложим по полочкам
На собеседовании нас просят рассказать о каждом из них, правильно расположив стрелочки на схеме взаимодействия классов.
Но если отбросить всю эту теорию, смысл у них один - разделить ответственность между слоями кода.
И в этом посте я раскрою этот смысл, чтобы стало понятно зачем использовать эти паттерны, без необходимости запоминать куда стрелочки на схеме смотрят.
Принцип, из которого выросли все MV*
Любой UI или игровой экран можно разложить на три слоя:
1. Бизнес-логика (Model) - хранит и обрабатывает данные.
Пример: здоровье персонажа, инвентарь, внутренняя экономика.
2. Презентация (View) - показывает игроку информацию.
Пример: полоска HP, надписи, окна, анимации.
3. Связующее звено (Controller / Presenter / ViewModel) - решает, когда и что обновить.
Главная идея MV* - разные причины для изменений должны быть в разных местах.
Так, если мы поменяем бизнес-логику, то не придётся изменять код UI.
И наоборот - сменили виджет отображения UI (с текстового поля со значением процентов на полоску здоровья с конкретными значениями) - вся игровая логика здоровья осталась нетронутой.
Пример без разделения:
Пока одна панель - всё ок.
Но потом приходит геймдизайнер и говорит:
И ты полностью переписываешь компонент, уничтожая старую логику.
Каждое новое изменение = переписывание и логики хп, и его отображения.
Чтобы избежать постоянного переписывания UI кода, необходимо создать:
1. HealthModel, в которой будет находиться бизнес-логика
2. HealthView, который будет заниматься отображением (UI)
3. HealthPresenter, который связывает Model и View. Например, просто слушает события из Model и вызывает методы по обновлению View
В таком случае, если хочешь добавить вторую полоску здоровья - просто сделай второй HealthView и подпиши его на ту же модель.
Старый код останется полезным, и его можно будет использовать для других задач.
Посмотреть изменённый код можно тут
Смысл, который стоит запомнить
MV* - паттерн не ради паттерна.
Он необходим, чтобы изолировать причины изменений и отображение изменений.
И когда завтра геймдизайнер захочет 3 разных шкалы HP, ты просто подключишь новые View — без изменения логики HP и переписывания старого кода View.
🚀 Пост Guru Unity: @Minerope
На собеседовании нас просят рассказать о каждом из них, правильно расположив стрелочки на схеме взаимодействия классов.
Но если отбросить всю эту теорию, смысл у них один - разделить ответственность между слоями кода.
И в этом посте я раскрою этот смысл, чтобы стало понятно зачем использовать эти паттерны, без необходимости запоминать куда стрелочки на схеме смотрят.
Принцип, из которого выросли все MV*
Любой UI или игровой экран можно разложить на три слоя:
1. Бизнес-логика (Model) - хранит и обрабатывает данные.
Пример: здоровье персонажа, инвентарь, внутренняя экономика.
2. Презентация (View) - показывает игроку информацию.
Пример: полоска HP, надписи, окна, анимации.
3. Связующее звено (Controller / Presenter / ViewModel) - решает, когда и что обновить.
Главная идея MV* - разные причины для изменений должны быть в разных местах.
Так, если мы поменяем бизнес-логику, то не придётся изменять код UI.
И наоборот - сменили виджет отображения UI (с текстового поля со значением процентов на полоску здоровья с конкретными значениями) - вся игровая логика здоровья осталась нетронутой.
Пример без разделения:
public class Health : MonoBehaviour
{
[SerializeField] private TMP_Text _text;
[SerializeField] private Image _bar;
private float _hp = 100;
public void TakeDamage(float dmg)
{
_hp -= dmg;
_text.SetText($"{_hp}");
_bar.fillAmount = _hp / 100;
}
}
Пока одна панель - всё ок.
Но потом приходит геймдизайнер и говорит:
“Добавь полоску над персонажем и окно статистики.”
И ты полностью переписываешь компонент, уничтожая старую логику.
Каждое новое изменение = переписывание и логики хп, и его отображения.
Чтобы избежать постоянного переписывания UI кода, необходимо создать:
1. HealthModel, в которой будет находиться бизнес-логика
2. HealthView, который будет заниматься отображением (UI)
3. HealthPresenter, который связывает Model и View. Например, просто слушает события из Model и вызывает методы по обновлению View
В таком случае, если хочешь добавить вторую полоску здоровья - просто сделай второй HealthView и подпиши его на ту же модель.
Старый код останется полезным, и его можно будет использовать для других задач.
Посмотреть изменённый код можно тут
Смысл, который стоит запомнить
MV* - паттерн не ради паттерна.
Он необходим, чтобы изолировать причины изменений и отображение изменений.
И когда завтра геймдизайнер захочет 3 разных шкалы HP, ты просто подключишь новые View — без изменения логики HP и переписывания старого кода View.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
#Собес #mvc #cpp #csharp
🤔 Senior Game разработчик в RedRift
Техническое собеседование. Вилка: 3000$-4000$. Были классические вопросы по работе в команде, оптимизациям, Addressables, архитектуре.
💬 Вопросы:
- Какие отличия между C++ и C# бросаются в глаза?
- Где применим паттерн MVC (или MV-паттерны в целом)?
- Если MonoBehaviour удалён, но ассет через Addressables не выгружен — что произойдёт?
- Если использовать Addressables, как выгрузить ассет из памяти?
- В какой момент в Addressables ассеты выгружаются из памяти?
👉 Все вопросы из этого собеседования (16)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Senior Game разработчик в RedRift
Техническое собеседование. Вилка: 3000$-4000$. Были классические вопросы по работе в команде, оптимизациям, Addressables, архитектуре.
💬 Вопросы:
- Какие отличия между C++ и C# бросаются в глаза?
- Где применим паттерн MVC (или MV-паттерны в целом)?
- Если MonoBehaviour удалён, но ассет через Addressables не выгружен — что произойдёт?
- Если использовать Addressables, как выгрузить ассет из памяти?
- В какой момент в Addressables ассеты выгружаются из памяти?
👉 Все вопросы из этого собеседования (16)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
❤1
#Собес #application_layer #mail_services #file_transfer
🤔 Назовите некоторые службы, предоставляемые прикладным уровнем в интернет-модели.
💬 Кратко:
Прикладной уровень предоставляет такие службы, как электронная почта (SMTP), передача файлов (FTP), управление доступом (SSH) и сетевой виртуальный терминал (Telnet).
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Назовите некоторые службы, предоставляемые прикладным уровнем в интернет-модели.
💬 Кратко:
Прикладной уровень предоставляет такие службы, как электронная почта (SMTP), передача файлов (FTP), управление доступом (SSH) и сетевой виртуальный терминал (Telnet).
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#podcast #всё
📚 Подкасты Y_LAB
Здесь вы найдете разнообразный IT-контент: от глубоких технических обсуждений до увлекательных и расслабляющих бесед. Наши эпизоды охватывают широкий спектр тем, связанных с разработкой и новейшими технологиями, чтобы каждый разработчик нашел что-то для себя. Присоединяйтесь к нам, чтобы углубить свои знания, оставаться в тренде и вдохновляться новыми идеями!
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Подкасты Y_LAB
Здесь вы найдете разнообразный IT-контент: от глубоких технических обсуждений до увлекательных и расслабляющих бесед. Наши эпизоды охватывают широкий спектр тем, связанных с разработкой и новейшими технологиями, чтобы каждый разработчик нашел что-то для себя. Присоединяйтесь к нам, чтобы углубить свои знания, оставаться в тренде и вдохновляться новыми идеями!
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #unity #addressables #memory_management
🤔 Если использовать Addressables, как выгрузить ассет из памяти?
💬 Кратко:
Для выгрузки ассета используйте Addressables.Release(handle) или Addressables.ReleaseInstance(gameObject). Для полной очистки кэша используйте CleanBundleCache. Выгрузка происходит не мгновенно, а при следующей сборке мусора.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Если использовать Addressables, как выгрузить ассет из памяти?
💬 Кратко:
Для выгрузки ассета используйте Addressables.Release(handle) или Addressables.ReleaseInstance(gameObject). Для полной очистки кэша используйте CleanBundleCache. Выгрузка происходит не мгновенно, а при следующей сборке мусора.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Структура кадра в Unity и почему это важно
Сегодня разберём благодаря каким операциям мы получаем картинку в юнити, что такое Performance Bottleneck и как эти знания помогут оптимизировать вашу игру.
Что такое кадр и как он формируется
Наверняка, каждый знаком с понятием FPS.
Если игра работает на 60 FPS - это 60 циклов формирования кадра в секунду.
Каждый кадр - это последовательность операций, где участвуют:
• CPU - выполняет код Unity и ваш код, готовит геометрию кадра.
• GPU - получает подготовленные данные и рендерит финальное изображение.
Загвоздка - CPU и GPU не могут работать параллельно
GPU не может начать раскрашивать картинку, геометрия которой ещё не подготовлена от CPU. И наоборот - CPU не может начать работать над следующим кадром, пока GPU не раскрасила прошлый.
Это видно на приложенной схеме - у CPU присутствует блок "Wait", так как GPU ещё занимается прошлым кадром. В это время CPU просто простаивает.
Такая ситуация называется Performance Bottleneck
Performance bottleneck - это компонент (CPU или GPU), который ограничивает FPS. У нас есть "затык" в одном из компонентов.
Неопытный разработчик захочет оптимизировать игру, не разберётся в "затыке" производительности и пойдёт оптимизировать CPU (код или геометрию сцены).
Если bottleneck в GPU - весь эффект оптимизаций будет в увеличении ожидания от CPU.
• Было: CPU — 10 мс работы + 10 мс ожидания GPU.
• Стало: CPU — 8 мс работы + 12 мс ожидания GPU.
CPU стал работать быстрее, но FPS не вырос, потому что настоящая проблема - GPU.
Если оптимизировать не тот компонент, результат будет нулевым.
Зачем это знать
Перед любыми оптимизациями нужно определить:
• упираетесь вы в CPU или в GPU,
• какое именно место внутри них тормозит: логика, физика, UI, рендер, память.
Так вы сможете реально оптимизировать свою игру и не терять время зря.
В следующих постах от Guru разберём работу с Profiler и научимся определять Performance Bottleneck
🚀 Пост Guru Unity: @Minerope
Сегодня разберём благодаря каким операциям мы получаем картинку в юнити, что такое Performance Bottleneck и как эти знания помогут оптимизировать вашу игру.
Что такое кадр и как он формируется
Наверняка, каждый знаком с понятием FPS.
Если игра работает на 60 FPS - это 60 циклов формирования кадра в секунду.
Каждый кадр - это последовательность операций, где участвуют:
• CPU - выполняет код Unity и ваш код, готовит геометрию кадра.
• GPU - получает подготовленные данные и рендерит финальное изображение.
Загвоздка - CPU и GPU не могут работать параллельно
GPU не может начать раскрашивать картинку, геометрия которой ещё не подготовлена от CPU. И наоборот - CPU не может начать работать над следующим кадром, пока GPU не раскрасила прошлый.
Это видно на приложенной схеме - у CPU присутствует блок "Wait", так как GPU ещё занимается прошлым кадром. В это время CPU просто простаивает.
Такая ситуация называется Performance Bottleneck
Performance bottleneck - это компонент (CPU или GPU), который ограничивает FPS. У нас есть "затык" в одном из компонентов.
Неопытный разработчик захочет оптимизировать игру, не разберётся в "затыке" производительности и пойдёт оптимизировать CPU (код или геометрию сцены).
Если bottleneck в GPU - весь эффект оптимизаций будет в увеличении ожидания от CPU.
• Было: CPU — 10 мс работы + 10 мс ожидания GPU.
• Стало: CPU — 8 мс работы + 12 мс ожидания GPU.
CPU стал работать быстрее, но FPS не вырос, потому что настоящая проблема - GPU.
Если оптимизировать не тот компонент, результат будет нулевым.
Зачем это знать
Перед любыми оптимизациями нужно определить:
• упираетесь вы в CPU или в GPU,
• какое именно место внутри них тормозит: логика, физика, UI, рендер, память.
Так вы сможете реально оптимизировать свою игру и не терять время зря.
В следующих постах от Guru разберём работу с Profiler и научимся определять Performance Bottleneck
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🏆2
#Собес #c++ #object-oriented #oop
🤔 Что такое C++?
💬 Кратко:
C++ — это мощный императивный язык программирования общего назначения, разработанный как расширение языка C. Он поддерживает объектно-ориентированное программирование, шаблоны и другие дополнительные функции. C++ используется для разработки различных приложений, включая операционные системы, игры и высокопроизводительное ПО.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое C++?
💬 Кратко:
C++ — это мощный императивный язык программирования общего назначения, разработанный как расширение языка C. Он поддерживает объектно-ориентированное программирование, шаблоны и другие дополнительные функции. C++ используется для разработки различных приложений, включая операционные системы, игры и высокопроизводительное ПО.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#Собес #git_commit
🤔 Что делает команда git commit?
💬 Кратко:
Команда
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что делает команда git commit?
💬 Кратко:
Команда
git commit сохраняет изменения из индекса в историю репозитория. Она фиксирует текущий прогресс, позволяя вернуться к этой точке в будущем. Каждый коммит сопровождается описанием, которое помогает понять, что было сделано.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#tool #графы
📚 Терялся в собственном коде?
Встречай Gitvizz, инструмент, который мгновенно превращает кодовую базу в интерактивные графы, чтобы наглядно увидеть, как всё связано
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Терялся в собственном коде?
Встречай Gitvizz, инструмент, который мгновенно превращает кодовую базу в интерактивные графы, чтобы наглядно увидеть, как всё связано
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #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