#Собес #github
🤔 Что такое Git и GitHub?
💬 Кратко:
Git — это система контроля версий, которая позволяет отслеживать изменения в коде, возвращаться к старым версиям и работать над проектом совместно с другими разработчиками. GitHub — это платформа, где можно хранить код в облаке, делиться им и управлять проектами с помощью Git. Вместе они помогают эффективно работать над проектом в команде.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое Git и GitHub?
💬 Кратко:
Git — это система контроля версий, которая позволяет отслеживать изменения в коде, возвращаться к старым версиям и работать над проектом совместно с другими разработчиками. GitHub — это платформа, где можно хранить код в облаке, делиться им и управлять проектами с помощью Git. Вместе они помогают эффективно работать над проектом в команде.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#video #csharp
📚 C# УРОКИ | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ
Этот YouTube-плейлист представляет собой серию уроков по программированию на C# — от базовых понятий для новичков до более продвинутых тем, таких как работа с массивами, создание проектов в Visual Studio и практические примеры кода, что делает его удобным бесплатным курсом «от новичка к профессионалу» для тех, кто хочет освоить C# и начать разработку приложений.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 C# УРОКИ | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ
Этот YouTube-плейлист представляет собой серию уроков по программированию на C# — от базовых понятий для новичков до более продвинутых тем, таких как работа с массивами, создание проектов в Visual Studio и практические примеры кода, что делает его удобным бесплатным курсом «от новичка к профессионалу» для тех, кто хочет освоить C# и начать разработку приложений.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #ai #blueprints
🤔 Каковы преимущества использования встроенного физического движка Unreal Engine?
💬 Кратко:
Встроенный физический движок Unreal Engine обеспечивает реалистичные симуляции и взаимодействия, что улучшает атмосферу игры. Его интеграция с другими функциями Unreal Engine, такими как Blueprints и AI, позволяет оптимизировать производительность и ускорить процесс разработки.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Каковы преимущества использования встроенного физического движка Unreal Engine?
💬 Кратко:
Встроенный физический движок Unreal Engine обеспечивает реалистичные симуляции и взаимодействия, что улучшает атмосферу игры. Его интеграция с другими функциями Unreal Engine, такими как Blueprints и AI, позволяет оптимизировать производительность и ускорить процесс разработки.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#Собес #garbage_collection #performance #object_pooling
🤔 Как Unity обрабатывает сборку мусора и какие стратегии можно использовать для минимизации ее влияния на производительность?
💬 Кратко:
Unity использует автоматическую сборку мусора, которая может вызывать паузы в процессе игры. Для минимизации влияния сборки мусора на производительность можно использовать пул объектов, избегать частых аллокаций памяти, использовать структуры вместо классов и ограничить использование строк и событий.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как Unity обрабатывает сборку мусора и какие стратегии можно использовать для минимизации ее влияния на производительность?
💬 Кратко:
Unity использует автоматическую сборку мусора, которая может вызывать паузы в процессе игры. Для минимизации влияния сборки мусора на производительность можно использовать пул объектов, избегать частых аллокаций памяти, использовать структуры вместо классов и ограничить использование строк и событий.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #git_branch
🤔 Перечислите команды для удаления ветки git
💬 Кратко:
Для удаления локальной ветки:
Если ветка содержит незавершённые изменения:
Для удаления удалённой ветки:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Перечислите команды для удаления ветки git
💬 Кратко:
Для удаления локальной ветки:
git branch -d <branch_name>
Если ветка содержит незавершённые изменения:
git branch -D <branch_name>
Для удаления удалённой ветки:
git push origin --delete <branch_name>
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#roadmap #unrealengine #cplus #roadmap
📚 Roadmap Unreal Engine / C++ developer
Эта статья представляет собой дорожную карту (roadmap) для разработчиков, желающих освоить Unreal Engine и C++. Она предлагает разные пути обучения в зависимости от исходного опыта читателя: для начинающих без опыта, для опытных программистов не из геймдева и для тех, кто уже работает в игровой индустрии. В материале подробно разбираются ключевые компоненты и сущности движка, такие как акторы (Actors), компоненты (Components), управляющие сущности (PlayerController, GameMode и др.), события (Delegates, Events), репликация для мультиплеера и многое другое, что составляет основу для собеседований и практической работы с Unreal Engine
Перейти к материалу
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
📚 Roadmap Unreal Engine / C++ developer
Эта статья представляет собой дорожную карту (roadmap) для разработчиков, желающих освоить Unreal Engine и C++. Она предлагает разные пути обучения в зависимости от исходного опыта читателя: для начинающих без опыта, для опытных программистов не из геймдева и для тех, кто уже работает в игровой индустрии. В материале подробно разбираются ключевые компоненты и сущности движка, такие как акторы (Actors), компоненты (Components), управляющие сущности (PlayerController, GameMode и др.), события (Delegates, Events), репликация для мультиплеера и многое другое, что составляет основу для собеседований и практической работы с Unreal Engine
Перейти к материалу
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #strategy #factory #decorator
🤔 Какие паттерны проектирования вы применяли в реальных проектах?
💬 Кратко:
В проектах часто применял Strategy для выбора алгоритма отправки уведомлений (Email, SMS, Push), Factory для создания репозиториев в зависимости от конфигурации, Decorator для динамического добавления логирования и проверок, Repository + Unit of Work для абстракции доступа к данным, а также Observer для событийной обработки (кэш-инвалидация при изменении сущностей).
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Какие паттерны проектирования вы применяли в реальных проектах?
💬 Кратко:
В проектах часто применял Strategy для выбора алгоритма отправки уведомлений (Email, SMS, Push), Factory для создания репозиториев в зависимости от конфигурации, Decorator для динамического добавления логирования и проверок, Repository + Unit of Work для абстракции доступа к данным, а также Observer для событийной обработки (кэш-инвалидация при изменении сущностей).
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
Продолжаем разбирать разные Update.
Сегодня - коротко про Time.fixedDeltaTime.
Time.fixedDeltaTime - это значение фиксированного шага физики (Fixed Timestep). По умолчанию - 0.02, то есть FixedUpdate вызывается 50 раз в секунду.
Логично подумать, что в FixedUpdate нужно использовать именно Time.fixedDeltaTime.
Но это не обязательно.
Time.deltaTime достаточно умный. Документация говорит:
То есть внутри FixedUpdate: Time.deltaTime и Time.fixedDeltaTime вернут одно и то же значение. Разница - только в читаемости кода.
Тогда зачем вообще Time.fixedDeltaTime?
1️⃣ Чтобы изменить частоту FixedUpdate
Было 0.02 → 50 вызовов в секунду.
Стало 0.01 → 100 вызовов в секунду.
Меняем шаг физики - меняется частота FixedUpdate.
2️⃣ Если нужно получить фиксированный шаг вне FixedUpdate
Например, в специфических расчетах, где важно знать именно физический timestep.
Во всех остальных случаях можно спокойно использовать Time.deltaTime.
Чаще всего Time.fixedDeltaTime вам пригодится:
• либо при тонкой настройке физики
• либо чтобы блеснуть знанием на собеседовании🙂
В следующем посте разберём, что происходит с Update и FixedUpdate, когда игра подвисает.
🚀 Пост Guru Unity: @Minerope
Сегодня - коротко про Time.fixedDeltaTime.
Time.fixedDeltaTime - это значение фиксированного шага физики (Fixed Timestep). По умолчанию - 0.02, то есть FixedUpdate вызывается 50 раз в секунду.
Логично подумать, что в FixedUpdate нужно использовать именно Time.fixedDeltaTime.
Но это не обязательно.
Time.deltaTime достаточно умный. Документация говорит:
When this is called from inside MonoBehaviour.FixedUpdate, it returns Time.fixedDeltaTime.
То есть внутри FixedUpdate: Time.deltaTime и Time.fixedDeltaTime вернут одно и то же значение. Разница - только в читаемости кода.
Тогда зачем вообще Time.fixedDeltaTime?
Time.fixedDeltaTime = 0.01f;
Было 0.02 → 50 вызовов в секунду.
Стало 0.01 → 100 вызовов в секунду.
Меняем шаг физики - меняется частота FixedUpdate.
Например, в специфических расчетах, где важно знать именно физический timestep.
Во всех остальных случаях можно спокойно использовать Time.deltaTime.
Чаще всего Time.fixedDeltaTime вам пригодится:
• либо при тонкой настройке физики
• либо чтобы блеснуть знанием на собеседовании
В следующем посте разберём, что происходит с Update и FixedUpdate, когда игра подвисает.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #csharp #dispose #garbage_collector
🤔 Что произойдёт, если не вызвать Dispose вручную? Можно ли сделать так, чтобы он вызывался автоматически?
💬 Кратко:
Если не вызвать
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Что произойдёт, если не вызвать Dispose вручную? Можно ли сделать так, чтобы он вызывался автоматически?
💬 Кратко:
Если не вызвать
Dispose, ресурсы (файлы, соединения) останутся занятыми до сборки мусора. Автоматический вызов возможен через using или финализатор (но финализатор ненадежен).📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #replication #high_availability #failover
🤔 Что такое PostgreSQL replication?
💬 Кратко:
Репликация в PostgreSQL — это процесс создания копий данных из основной базы данных на другие серверы. Это повышает отказоустойчивость, позволяет балансировать нагрузку и обеспечивает резервное копирование. Существует несколько типов репликации: синхронная и асинхронная.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Что такое PostgreSQL replication?
💬 Кратко:
Репликация в PostgreSQL — это процесс создания копий данных из основной базы данных на другие серверы. Это повышает отказоустойчивость, позволяет балансировать нагрузку и обеспечивает резервное копирование. Существует несколько типов репликации: синхронная и асинхронная.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#video #unity
📚 FREE Complete Unity Game Development Courses
Полный бесплатный курс по разработке игр на Unity — от базовых уроков для начинающих до продвинутых тем, охватывающий основы интерфейса, C#-скрипты, 2D/3D-разработку и практические проекты, чтобы помочь вам освоить Unity и создать собственные игры шаг за шагом
Перейти к материалу
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
📚 FREE Complete Unity Game Development Courses
Полный бесплатный курс по разработке игр на Unity — от базовых уроков для начинающих до продвинутых тем, охватывающий основы интерфейса, C#-скрипты, 2D/3D-разработку и практические проекты, чтобы помочь вам освоить Unity и создать собственные игры шаг за шагом
Перейти к материалу
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
Forwarded from YeaHub
👨🏻💻 Сервис лайвкодинга в YeaHub
Фактически — релиз уже состоялся.
Но честно: мы не успели загрузить ту огромную базу задач, которую планировали, и ещё не всё успели полноценно протестировать.
Поэтому до 23 февраля работаем в режиме «вместе доделываем продукт»:
— мы активно добавляем задачи и чиним баги, все
— пока тестируем, все задачи открыты, после этого примерно 50% закроем для членов
— вы решаете, находите проблемы, пишете в поддержку и даёте фидбек
— ну и оформляете подписку 😜
Что уже есть:
• база реальных задач с собеседований
• JavaScript / Python / Java / Go
• удобный редактор и проверка решений
Что скоро:
• связь задач с компаниями и коллекциями собеседований (не успели в этот релиз)
• другие языки
• контесты
• обучающие модули и курс по алгоритмам
• AI-разбор решений построчно
• челленджи и соревнования
👉 Задачи: https://yeahub.ru/dashboard/tasks
👉 Членство: https://yeahub.ru/dashboard/settings#select-tariff
Новогодние цены действуют только до полноценного запуска. После — x2.
Сейчас лучший момент подключиться и поддержать проект.
Спасибо, что помогаете нам запустить это правильно✊🏻🚀 💪
Фактически — релиз уже состоялся.
Но честно: мы не успели загрузить ту огромную базу задач, которую планировали, и ещё не всё успели полноценно протестировать.
Поэтому до 23 февраля работаем в режиме «вместе доделываем продукт»:
— мы активно добавляем задачи и чиним баги, все
— пока тестируем, все задачи открыты, после этого примерно 50% закроем для членов
— вы решаете, находите проблемы, пишете в поддержку и даёте фидбек
— ну и оформляете подписку 😜
Что уже есть:
• база реальных задач с собеседований
• JavaScript / Python / Java / Go
• удобный редактор и проверка решений
Что скоро:
• связь задач с компаниями и коллекциями собеседований (не успели в этот релиз)
• другие языки
• контесты
• обучающие модули и курс по алгоритмам
• AI-разбор решений построчно
• челленджи и соревнования
👉 Задачи: https://yeahub.ru/dashboard/tasks
👉 Членство: https://yeahub.ru/dashboard/settings#select-tariff
Новогодние цены действуют только до полноценного запуска. После — x2.
Сейчас лучший момент подключиться и поддержать проект.
Спасибо, что помогаете нам запустить это правильно✊🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #collections #data_structures
🤔 Как подойти к выбору коллекции для задачи? Как учитывать алгоритмическую сложность при выборе?
💬 Кратко:
Выбор коллекции начинается с анализа операций: частые вставки, удаления, поиск или доступ по индексу. Учитывайте алгоритмическую сложность операций - O(1) для константного времени, O(n) для линейного. List подходит для частого доступа по индексу, Dictionary для быстрого поиска по ключу, HashSet для проверки принадлежности.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Как подойти к выбору коллекции для задачи? Как учитывать алгоритмическую сложность при выборе?
💬 Кратко:
Выбор коллекции начинается с анализа операций: частые вставки, удаления, поиск или доступ по индексу. Учитывайте алгоритмическую сложность операций - O(1) для константного времени, O(n) для линейного. List подходит для частого доступа по индексу, Dictionary для быстрого поиска по ключу, HashSet для проверки принадлежности.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
Продолжаем углубление в методы Update - Рассмотрим поведение FixedUpdate при зависании
Давайте попробуем ответить на вопрос, который мне задавали на собесе:
Из того, что мы знаем о FixedUpdate, напрашивается очень неприятный вывод.
Если Fixed Timestep установлен в 0.02 секунды, это означает, что физика должна обновляться 50 раз в секунду. Прошло 2 секунды? Значит Unity должен вызвать FixedUpdate 100 раз, чтобы физика "догнала" реальное время.
Но это катастрофа! Если Unity в одном кадре начнёт вызывать FixedUpdate сто раз подряд, это займёт огромное количество времени и игра зависнет ещё сильнее. Следующий кадр тоже будет долгим, что потребует ещё больше вызовов FixedUpdate, и так далее. Это называется "спиралью смерти" производительности.
Но это не происходит, потому что я не сказал вам про ещё одну важную составляющую FixedUpdate. Это - Maximum Allowed Timestep, который располагается в настройках рядом с Fixed Timestamp и по умолчанию равняется 0.3333333.
Эта настройка ограничивает количество времени, которое Unity тратит на обработку физики и вызовов FixedUpdate в течение одного кадра в секундах.
Если обработка кадра занимает больше времени, чем Maximum Allowed Timestep, физический движок не пытается симулировать дополнительное время, превышающее Maximum Allowed Timestep, и вместо этого позволяет обработке кадра завершиться, после чего возобновляет работу так, как будто время не прошло.
Детальнее. У нас Fixed Timestep равен 0.02 секунды, Maximum Allowed Timestep равен 0.33 секунды. Игра зависла на 2 секунды.
Без ограничения Unity должен был бы вызвать FixedUpdate сто раз (две секунды разделить на 0.02 секунды). Но с ограничением в 0.33 секунды максимум он может вызвать примерно шестнадцать раз (0.33 разделить на 0.02).
Как это выражается в поведении физики на сцене? Предположим, мы симулируем полёт пули, скорость которой равняется 100 метров в секунду. За 2 секунды она должна была пролететь 200 метров, но из-за зависания, она пролетит только 33 метра.
Выглядит неприятно, но к сожалению это пришлось сделать, чтобы не раскручивать спираль смерти.
Следующий пост будет финальным, в котором мы рассмотрим поведение Update и LateUpdate при зависании.
🚀 Пост Guru Unity: @Minerope
Давайте попробуем ответить на вопрос, который мне задавали на собесе:
Если игра зависла на 2 секунды, то какое будет поведение FixedUpdate в восстановившийся кадр?
Если мы знаем, что FixedUpdate работает зафиксированное время, то что делать, если время прошло, а операция не выполнилась?
Из того, что мы знаем о FixedUpdate, напрашивается очень неприятный вывод.
Если Fixed Timestep установлен в 0.02 секунды, это означает, что физика должна обновляться 50 раз в секунду. Прошло 2 секунды? Значит Unity должен вызвать FixedUpdate 100 раз, чтобы физика "догнала" реальное время.
Но это катастрофа! Если Unity в одном кадре начнёт вызывать FixedUpdate сто раз подряд, это займёт огромное количество времени и игра зависнет ещё сильнее. Следующий кадр тоже будет долгим, что потребует ещё больше вызовов FixedUpdate, и так далее. Это называется "спиралью смерти" производительности.
Но это не происходит, потому что я не сказал вам про ещё одну важную составляющую FixedUpdate. Это - Maximum Allowed Timestep, который располагается в настройках рядом с Fixed Timestamp и по умолчанию равняется 0.3333333.
Эта настройка ограничивает количество времени, которое Unity тратит на обработку физики и вызовов FixedUpdate в течение одного кадра в секундах.
Если обработка кадра занимает больше времени, чем Maximum Allowed Timestep, физический движок не пытается симулировать дополнительное время, превышающее Maximum Allowed Timestep, и вместо этого позволяет обработке кадра завершиться, после чего возобновляет работу так, как будто время не прошло.
Детальнее. У нас Fixed Timestep равен 0.02 секунды, Maximum Allowed Timestep равен 0.33 секунды. Игра зависла на 2 секунды.
Без ограничения Unity должен был бы вызвать FixedUpdate сто раз (две секунды разделить на 0.02 секунды). Но с ограничением в 0.33 секунды максимум он может вызвать примерно шестнадцать раз (0.33 разделить на 0.02).
Как это выражается в поведении физики на сцене? Предположим, мы симулируем полёт пули, скорость которой равняется 100 метров в секунду. За 2 секунды она должна была пролететь 200 метров, но из-за зависания, она пролетит только 33 метра.
0.33 сек : 0.02 сек = 16-17 вызовов, в зависимости от дробной части (Пока возьмём 16)
16 вызовов * 0.02 сек = примерно 0.33 сек
100 м * 2 сек = 200 м - сколько она должна пролететь
Но из - за ограничения выходит вот так:
100 м * 0.33 = 33 м
Выглядит неприятно, но к сожалению это пришлось сделать, чтобы не раскручивать спираль смерти.
Следующий пост будет финальным, в котором мы рассмотрим поведение Update и LateUpdate при зависании.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #unity #csharp
🤔 Что делал, чтобы уменьшить мусор при инициализации Spine-анимаций?
💬 Кратко:
Чтобы уменьшить GC при инициализации Spine, использовал кэширование анимаций и скелетов, избегал частого создания/уничтожения Spine GameObject, применял object pooling для анимированных объектов, и минимизировал runtime изменения скинов и аттачментов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Что делал, чтобы уменьшить мусор при инициализации Spine-анимаций?
💬 Кратко:
Чтобы уменьшить GC при инициализации Spine, использовал кэширование анимаций и скелетов, избегал частого создания/уничтожения Spine GameObject, применял object pooling для анимированных объектов, и минимизировал runtime изменения скинов и аттачментов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #postgres #copy #insert
🤔 В каких случаях стоит использовать COPY вместо INSERT в Postgres?
💬 Кратко:
COPY стоит использовать при массовой загрузке данных. Он работает значительно быстрее INSERT, потому что минимизирует накладные расходы и сетевые round-trip.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 В каких случаях стоит использовать COPY вместо INSERT в Postgres?
💬 Кратко:
COPY стоит использовать при массовой загрузке данных. Он работает значительно быстрее INSERT, потому что минимизирует накладные расходы и сетевые round-trip.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#video #unity
📚 FREE Complete Unity Game Development Courses
Полный бесплатный курс по разработке игр на Unity — от базовых уроков для начинающих до продвинутых тем, охватывающий основы интерфейса, C#-скрипты, 2D/3D-разработку и практические проекты, чтобы помочь вам освоить Unity и создать собственные игры шаг за шагом
Перейти к материалу
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
📚 FREE Complete Unity Game Development Courses
Полный бесплатный курс по разработке игр на Unity — от базовых уроков для начинающих до продвинутых тем, охватывающий основы интерфейса, C#-скрипты, 2D/3D-разработку и практические проекты, чтобы помочь вам освоить Unity и создать собственные игры шаг за шагом
Перейти к материалу
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #synchronization #context #async
🤔 Что делает synchronization context?
💬 Кратко:
Synchronization Context - это механизм, который управляет тем, в каком потоке выполняется код после асинхронной операции. Он обеспечивает, что код продолжает работать в правильном контексте, например, в основном потоке UI. В Windows Forms и WPF он гарантирует, что обновления интерфейса происходят только в UI-потоке. Без него асинхронные операции могли бы завершаться в случайных потоках, что привело бы к ошибкам при обновлении элементов управления.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🤔 Что делает synchronization context?
💬 Кратко:
Synchronization Context - это механизм, который управляет тем, в каком потоке выполняется код после асинхронной операции. Он обеспечивает, что код продолжает работать в правильном контексте, например, в основном потоке UI. В Windows Forms и WPF он гарантирует, что обновления интерфейса происходят только в UI-потоке. Без него асинхронные операции могли бы завершаться в случайных потоках, что привело бы к ошибкам при обновлении элементов управления.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
Как работают Update и LateUpdate
Завершаем цикл постов про методы Update. Сегодня разберём, как ведут себя Update и LateUpdate, если игра подвисает.
Эти методы работают очень просто: кадр вызвался → методы вызвались.
Они не пытаются “догнать” пропущенные вызовы, как это делает FixedUpdate.
То есть один кадр = один вызов метода.
Теоретически при длительном зависмании нас может спасти Time.deltaTime, потому что он учитывает время между кадрами. Но тут есть важный нюанс.
У Time.deltaTime есть ограничение - Time.maximumDeltaTime (в инспекторе это Maximum Allowed Timestep).
Это означает, что значение Time.deltaTime никогда не будет больше ~0.333 секунды.
Подробнее можно почитать в документации:
https://docs.unity3d.com/ru/530/Manual/TimeFrameManagement.html
https://docs.unity3d.com/6000.3/Documentation/Manual/time-handling-variations.html
Как это выглядит на практике
Вспомним простой код движения:
Если игра подвиснет на 2 секунды, то Time.deltaTime всё равно будет равен 0.33.
В итоге - ожидали пройти 20 метров, а фактически пройдём 3.3 метра. Потому что deltaTime ограничен.
Можно ли это исправить?
Технически - да.
Можно использовать:
• Time.unscaledDeltaTime - deltaTime без ограничений
• Time.realtimeSinceStartup - реальное время с момента запуска приложения
Но это почти всегда плохая идея для игровой логики.
Если игра подвиснет, объект может “телепортироваться” на большое расстояние.
Кроме этого:
• физика не будет успевать за объектом
• логика станет сложнее
• нагрузка на CPU может увеличиться
По сути, можно раскрутить “спираль смерти”-— когда из-за лагов система начинает лагать ещё сильнее.
Когда это всё-таки имеет смысл
Использовать unscaledDeltaTime имеет смысл там, где важно реальное время, а не игровое.
Например, для таймера UI:
А что насчёт LateUpdate?
LateUpdate работает по тем же принципам, что и Update.
Единственная разница - порядок вызова. Сначала Update, потом LateUpdate.
То есть всё, что мы разобрали про Update (ограничение deltaTime, поведение при фризах и т.д.), полностью применимо и к LateUpdate.
Если понимать эти механизмы под капотом, можно без труда отвечать на каверзные вопросы на собеседованиях и, что важнее, писать более предсказуемую игровую логику.
🚀 Пост Guru Unity: @Minerope
Завершаем цикл постов про методы Update. Сегодня разберём, как ведут себя Update и LateUpdate, если игра подвисает.
Эти методы работают очень просто: кадр вызвался → методы вызвались.
Они не пытаются “догнать” пропущенные вызовы, как это делает FixedUpdate.
То есть один кадр = один вызов метода.
Теоретически при длительном зависмании нас может спасти Time.deltaTime, потому что он учитывает время между кадрами. Но тут есть важный нюанс.
У Time.deltaTime есть ограничение - Time.maximumDeltaTime (в инспекторе это Maximum Allowed Timestep).
Это означает, что значение Time.deltaTime никогда не будет больше ~0.333 секунды.
Подробнее можно почитать в документации:
https://docs.unity3d.com/ru/530/Manual/TimeFrameManagement.html
https://docs.unity3d.com/6000.3/Documentation/Manual/time-handling-variations.html
Как это выглядит на практике
Вспомним простой код движения:
private void Update()
{
transform.position += Vector3.forward * 10f * Time.deltaTime; // 10 м/с
}
Если игра подвиснет на 2 секунды, то Time.deltaTime всё равно будет равен 0.33.
В итоге - ожидали пройти 20 метров, а фактически пройдём 3.3 метра. Потому что deltaTime ограничен.
Можно ли это исправить?
Технически - да.
Можно использовать:
• Time.unscaledDeltaTime - deltaTime без ограничений
• Time.realtimeSinceStartup - реальное время с момента запуска приложения
Но это почти всегда плохая идея для игровой логики.
Если игра подвиснет, объект может “телепортироваться” на большое расстояние.
Кроме этого:
• физика не будет успевать за объектом
• логика станет сложнее
• нагрузка на CPU может увеличиться
По сути, можно раскрутить “спираль смерти”-— когда из-за лагов система начинает лагать ещё сильнее.
Когда это всё-таки имеет смысл
Использовать unscaledDeltaTime имеет смысл там, где важно реальное время, а не игровое.
Например, для таймера UI:
private void Update()
{
_uiTimer += Time.unscaledDeltaTime;
UpdateUITimerText(_uiTimer);
}
А что насчёт LateUpdate?
LateUpdate работает по тем же принципам, что и Update.
Единственная разница - порядок вызова. Сначала Update, потом LateUpdate.
То есть всё, что мы разобрали про Update (ограничение deltaTime, поведение при фризах и т.д.), полностью применимо и к LateUpdate.
Если понимать эти механизмы под капотом, можно без труда отвечать на каверзные вопросы на собеседованиях и, что важнее, писать более предсказуемую игровую логику.
Please open Telegram to view this post
VIEW IN TELEGRAM
Unity3D
Unity - Руководство: Time and Framerate Management
The Unity Manual helps you learn and use the Unity engine. With the Unity engine you can create 2D and 3D games, apps and experiences.