#Собес #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)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_merge
🤔 Как вы можете ввести слияние на стадии конфликта?
💬 Кратко:
При возникновении конфликта в Git нужно вручную разрешить расхождения в файлах, а затем завершить слияние с помощью команды
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как вы можете ввести слияние на стадии конфликта?
💬 Кратко:
При возникновении конфликта в Git нужно вручную разрешить расхождения в файлах, а затем завершить слияние с помощью команды
git merge --continue.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#video #unity
📚 FREE Complete Unity Game Development Courses
Полный бесплатный курс по разработке игр на Unity — от базовых уроков для начинающих до продвинутых тем, охватывающий основы интерфейса, C#-скрипты, 2D/3D-разработку и практические проекты, чтобы помочь вам освоить Unity и создать собственные игры шаг за шагом
Перейти к материалу
👉 База вопросов 👉 Новости
📚 FREE Complete Unity Game Development Courses
Полный бесплатный курс по разработке игр на Unity — от базовых уроков для начинающих до продвинутых тем, охватывающий основы интерфейса, C#-скрипты, 2D/3D-разработку и практические проекты, чтобы помочь вам освоить Unity и создать собственные игры шаг за шагом
Перейти к материалу
👉 База вопросов 👉 Новости
❤1🔥1🐳1
#Собес #function_prototype #declaration #return_type
🤔 Что такое прототип функции в C++?
💬 Кратко:
Прототип функции в C++ — это декларация функции, которая указывает ее имя, тип возвращаемого значения и типы параметров. Это позволяет компилятору проверять правильность вызова функции до ее определения.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое прототип функции в C++?
💬 Кратко:
Прототип функции в C++ — это декларация функции, которая указывает ее имя, тип возвращаемого значения и типы параметров. Это позволяет компилятору проверять правильность вызова функции до ее определения.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Update, FixedUpdate, LateUpdate - В чём разница и где что использовать?
Начинаю серию постов, где детально разберу как работают методы Update и для чего они нужны.
Все эти методы являются частью жизненного цикла MonoBehaviour:
• Update вызывается каждый кадр игры.
• FixedUpdate вызывается определённый промежуток времени, который указан в настройках Юнити.
• LateUpdate вызывается после того, как все вызовы Update уже отработали. То есть, по сути, в конце кадрового цикла.
Однако, сухие определения - это конечно хорошо, но что с практикой? Когда нам может пригодиться одно, а когда другое?
Update нужен, когда у нас вызывается какая-нибудь логика, работа которой у нас должна выполняться каждый кадр.
Из тривиального - считывание нажатия игрока:
В LateUpdate мы рассчитываем логику, которая нам нужна после того, как все кадры уже просчитались.
Например, для слежения камеры за игроком. Если сделать это в Update, то наша камера будет дёрганной. Им нужна итоговая точка объекта, чтобы они его не "догоняли" или не "перегоняли".
Классический пример с камерой:
Update приводит позиции к какому-то значению, а LateUpdate выполняется после того, как все Update отработали. Камера будет очень плавно идти за игроком и не будет меняться в рандомный момент кадра, как бы она это делала, если бы была в Update.
В FixedUpdate считывание ввода или слежение камеры добавлять не стоит, так как из-за того, что FixedUpdate работает какой-то определённый константный промежуток. Мы можем пропустить нажатие игрока, а поведение камеры будет выглядеть странно.
Но зачем тогда он вообще нужен?
Этот метод используется для просчётов физики, в которой нужно, чтобы всё работало одинаково, не завися от количества кадров.
FixedUpdate имеет фиксированный timestamp.
То есть, если у нас 60 фпс - Update вызывается 60 раз. Если у нас 20 фпс - 20 раз. Это слишком нестабильно для чётких расчётов.
Timestamp в 0.02 секунды может гарантировать нам, что метод вызовется ровно 50 раз в секунду. Это стабильность. Таким образом у нас физика будет постоянной и не зависеть от такого хаотичного параметра как кадры.
Пример:
В следующей части мы поговорим про такую сущность как Time.deltaTime и почему она крайне необходима в контексте Update.
🚀 Пост Guru Unity: @Minerope
Начинаю серию постов, где детально разберу как работают методы Update и для чего они нужны.
Все эти методы являются частью жизненного цикла MonoBehaviour:
• Update вызывается каждый кадр игры.
• FixedUpdate вызывается определённый промежуток времени, который указан в настройках Юнити.
• LateUpdate вызывается после того, как все вызовы Update уже отработали. То есть, по сути, в конце кадрового цикла.
Однако, сухие определения - это конечно хорошо, но что с практикой? Когда нам может пригодиться одно, а когда другое?
Update нужен, когда у нас вызывается какая-нибудь логика, работа которой у нас должна выполняться каждый кадр.
Из тривиального - считывание нажатия игрока:
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
_isJumpRequested = true;
}
}
В LateUpdate мы рассчитываем логику, которая нам нужна после того, как все кадры уже просчитались.
Например, для слежения камеры за игроком. Если сделать это в Update, то наша камера будет дёрганной. Им нужна итоговая точка объекта, чтобы они его не "догоняли" или не "перегоняли".
Классический пример с камерой:
private void LateUpdate()
{
Vector3 desiredPosition = _target.position + _offset;
Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, _smoothSpeed * Time.deltaTime);
transform.position = smoothedPosition;
transform.LookAt(_target);
}
Update приводит позиции к какому-то значению, а LateUpdate выполняется после того, как все Update отработали. Камера будет очень плавно идти за игроком и не будет меняться в рандомный момент кадра, как бы она это делала, если бы была в Update.
В FixedUpdate считывание ввода или слежение камеры добавлять не стоит, так как из-за того, что FixedUpdate работает какой-то определённый константный промежуток. Мы можем пропустить нажатие игрока, а поведение камеры будет выглядеть странно.
Но зачем тогда он вообще нужен?
Этот метод используется для просчётов физики, в которой нужно, чтобы всё работало одинаково, не завися от количества кадров.
FixedUpdate имеет фиксированный timestamp.
То есть, если у нас 60 фпс - Update вызывается 60 раз. Если у нас 20 фпс - 20 раз. Это слишком нестабильно для чётких расчётов.
Timestamp в 0.02 секунды может гарантировать нам, что метод вызовется ровно 50 раз в секунду. Это стабильность. Таким образом у нас физика будет постоянной и не зависеть от такого хаотичного параметра как кадры.
Пример:
private void FixedUpdate()
{
IsGrounded = Physics2D.OverlapCircle(_groundChecker.position, _data.GroundCheckRadius, _data.GroundLayer);
if (_isJumpRequested)
{
_rigidbody2D.linearVelocityY = _data.JumpForce;
_isJumpRequested = false;
}
if (_isJumpCutRequested && _rigidbody2D.linearVelocityY > 0f)
{
_rigidbody2D.linearVelocityY *= _data.JumpCutMultiplier;
_isJumpCutRequested = false;
}
}
В следующей части мы поговорим про такую сущность как Time.deltaTime и почему она крайне необходима в контексте Update.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
#Собес #shaderlab #material #fragment_shader
🤔 Как создать и использовать пользовательский шейдер в Unity?
💬 Кратко:
Для создания пользовательского шейдера нужно создать новый файл шейдера, используя язык ShaderLab, и прописать необходимые свойства. После этого создайте материал с этим шейдером и примените его к объекту через компонент Mesh Renderer.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как создать и использовать пользовательский шейдер в Unity?
💬 Кратко:
Для создания пользовательского шейдера нужно создать новый файл шейдера, используя язык ShaderLab, и прописать необходимые свойства. После этого создайте материал с этим шейдером и примените его к объекту через компонент Mesh Renderer.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #authorization #auth #access_control
🤔 Что такое авторизация?
💬 Кратко:
Авторизация — это процесс, который определяет, какие ресурсы и действия доступны пользователю после успешной аутентификации. Она используется для применения политик безопасности, чтобы ограничить доступ к сетевым ресурсам на основе прав пользователя.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое авторизация?
💬 Кратко:
Авторизация — это процесс, который определяет, какие ресурсы и действия доступны пользователю после успешной аутентификации. Она используется для применения политик безопасности, чтобы ограничить доступ к сетевым ресурсам на основе прав пользователя.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#course #ооп #case
📚 Практический анализ ПО с моделированием на UML
Целью курса является обучение слушателей теоретическим основам объектно-ориентированного подхода, практическим методам визуального проектирования и технологии разработки программного обеспечения с использованием компьютеризированных систем разработки (CASE
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Практический анализ ПО с моделированием на UML
Целью курса является обучение слушателей теоретическим основам объектно-ориентированного подхода, практическим методам визуального проектирования и технологии разработки программного обеспечения с использованием компьютеризированных систем разработки (CASE
Перейти к материалу
👉 База вопросов 👉 Новости
Forwarded from YeaHub
1. Миграция на Next.js
Мы перевели публичную часть проекта на Next.js, а дашборд оставили на React.js. Основные работы почти завершены — сейчас занимаемся тестированием и финальными правками.
В процессе столкнулись с рядом инфраструктурных вызовов: текущих ресурсов сервера оказалось недостаточно под новые проекты, поэтому пришлось масштабироваться. Впереди также большая работа по настройке SEO.
2. Сервис для лайвкодинга
Мы разрабатываем сервис лайвкодинга — аналог LeetCode с задачами российских компаний с реальных собеседований. У проекта большие планы:
— проведение контестов,
— обучающие модули,
— курс по алгоритмам,
— ИИ-помощник с построчным разбором решений,
— челленджи и соревнования между пользователями (пока держим в секрете).
Базовая версия сервиса уже готова и проходит тестирование. Совсем скоро — релиз.
3. Сервис уведомлений
Мы начали разработку сервиса уведомлений, который объединит всю нашу экосистему: платформу, Telegram-каналы и бота.
В Telegram будут публиковаться:
— новые собеседования,
— вопросы и задачи,
— статьи и подборки,
— анонсы,
— вакансии,
— статистика с HH.
Наша цель — сделать каналы максимально полезными, чтобы вы всегда были в курсе обновлений и нового контента.
Дополнительно
В работе также находится сервис тестов с вариантами ответов и системой разделения вопросов по темам — для будущего роадмапа. Пока эти направления развиваются в «лайт»-режиме.
Параллельно мы готовимся к запуску нового крупного сервиса, связанного с поиском работы. Он откроет для нас новые возможности и направления развития. Сейчас активно прорабатываем концепцию и архитектуру — идей очень много.
P.S. Новогодние скидки продолжают действовать до запуска сервиса лайвкодинга. После релиза цены увеличатся в 2 раза — сейчас самое выгодное время подключиться и поддержать нас.
👉 Членство YeaHub
Впереди много интересного. Спасибо, что вы с нами.✊🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #blueprint #input_action #movement
🤔 Напишите простой Blueprint скрипт для движения объекта вперед при нажатии на клавишу "W".
💬 Кратко:
В Blueprint нужно создать класс Actor, добавить в Event Graph узел для нажатия клавиши "W" и подключить его к узлу, который перемещает объект вперед по вектору.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Напишите простой Blueprint скрипт для движения объекта вперед при нажатии на клавишу "W".
💬 Кратко:
В Blueprint нужно создать класс Actor, добавить в Event Graph узел для нажатия клавиши "W" и подключить его к узлу, который перемещает объект вперед по вектору.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Update vs FixedUpdate — где двигать объект? + Time.deltaTime
Продолжаем разбор Update.
Вопрос с подвохом: где вызывать такой код — в Update или FixedUpdate?
Опытные разработчики уже чувствуют проблему
Если оставить код как есть и вызывать его в Update, скорость движения напрямую зависит от FPS:
• 30 FPS → объект едет медленно
• 120 FPS → объект летит быстрее
И FixedUpdate тоже не решение
Кажется логичным перенести код в FixedUpdate, но тут другая проблема: FixedUpdate вызывается реже, чем кадры
• между вызовами нет отрисовки
• визуально движение становится дёрганным
Решение — использовать Time.deltaTime
Нам нужно учитывать время между кадрами. Time.deltaTime — это количество секунд, прошедших с предыдущего кадра до текущего.
• Кадр 1 выполнился → прошло 0.008 секунд → Кадр 2 начался → Time.deltaTime = 0.008
Исправляем код:
Теперь:
• скорость одинакова при любом FPS
• движение плавное
🤔 Тогда зачем вообще FixedUpdate?
Логичный вопрос:
если есть Time.deltaTime, зачем нужен FixedUpdate?
Коротко:
• Update — визуал и логика
• FixedUpdate — физика
Почему так:
Update вызывается между физическими тиками, он не синхронизирован с физическим движком
FixedUpdate вызывается строго перед физическим шагом
Последовательность такая:
1. FixedUpdate у всех объектов
2. Unity считает физику
• коллизии
• силы
• OnCollisionEnter, OnTriggerEnter и т.д.
Если считать физику в Update (даже с Time.deltaTime), начинаются проблемы:
• туннелирование (объект «пролетает» сквозь коллайдеры)
• нестабильное и непредсказуемое поведение
Итог
Плавное движение, позиция, визуал → Update + Time.deltaTime
Физика, Rigidbody, силы, коллизии → FixedUpdate
🚀 Пост Guru Unity: @Minerope
Продолжаем разбор Update.
Вопрос с подвохом: где вызывать такой код — в Update или FixedUpdate?
private void Update()
{
transform.position += Vector3.forward * 10f;
}
Опытные разработчики уже чувствуют проблему
Если оставить код как есть и вызывать его в Update, скорость движения напрямую зависит от FPS:
• 30 FPS → объект едет медленно
• 120 FPS → объект летит быстрее
И FixedUpdate тоже не решение
Кажется логичным перенести код в FixedUpdate, но тут другая проблема: FixedUpdate вызывается реже, чем кадры
• между вызовами нет отрисовки
• визуально движение становится дёрганным
Решение — использовать Time.deltaTime
Нам нужно учитывать время между кадрами. Time.deltaTime — это количество секунд, прошедших с предыдущего кадра до текущего.
• Кадр 1 выполнился → прошло 0.008 секунд → Кадр 2 начался → Time.deltaTime = 0.008
Исправляем код:
private void Update()
{
transform.position += Vector3.forward * 10f * Time.deltaTime;
}
Теперь:
• скорость одинакова при любом FPS
• движение плавное
🤔 Тогда зачем вообще FixedUpdate?
Логичный вопрос:
если есть Time.deltaTime, зачем нужен FixedUpdate?
Коротко:
• Update — визуал и логика
• FixedUpdate — физика
Почему так:
Update вызывается между физическими тиками, он не синхронизирован с физическим движком
FixedUpdate вызывается строго перед физическим шагом
Последовательность такая:
1. FixedUpdate у всех объектов
2. Unity считает физику
• коллизии
• силы
• OnCollisionEnter, OnTriggerEnter и т.д.
Если считать физику в Update (даже с Time.deltaTime), начинаются проблемы:
• туннелирование (объект «пролетает» сквозь коллайдеры)
• нестабильное и непредсказуемое поведение
Итог
Плавное движение, позиция, визуал → Update + Time.deltaTime
Физика, Rigidbody, силы, коллизии → FixedUpdate
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
#Собес #csharp #unity #asset_loading
🤔 Есть неактивный GameObject со ссылками на ассеты, располагающихся в Addressables. Что произойдёт с ассетами при старте сцены?
💬 Кратко:
Ассеты из Addressables не загрузятся автоматически при старте сцены, даже если на них ссылается неактивный GameObject. Addressables загружает ассеты только при явном вызове Load или когда ссылающийся объект становится активным и требует эти ассеты.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Есть неактивный GameObject со ссылками на ассеты, располагающихся в Addressables. Что произойдёт с ассетами при старте сцены?
💬 Кратко:
Ассеты из Addressables не загрузятся автоматически при старте сцены, даже если на них ссылается неактивный GameObject. Addressables загружает ассеты только при явном вызове Load или когда ссылающийся объект становится активным и требует эти ассеты.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #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 или финализатор (но финализатор ненадежен).📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа