Вопросы на собеседовании: Геймдев-разработчик
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Junior-разработчик игр.
Смотреть пример резюме: Геймдев-разработчик →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Delta time сохраняет скорость движения при разном FPS.
- Умножайте скорость на прошедшие секунды перед добавлением смещения.
- Сравните путь за секунду при 30 и 144 FPS.
- Не масштабируйте повторно силы, уже интегрируемые фиксированным шагом физики.
Зачем это спрашивают: Интервьюер проверяет понимание независимости движения от частоты кадров.
Кулдаун должен считать секунды, а не отрисованные кадры.
- Запустите таймер с длительности, например 0,8 секунды.
- Вычитайте delta подходящих часов и ограничивайте значение нулем.
- Проверьте одинаковое время завершения при нескольких лимитах FPS.
Зачем это спрашивают: Интервьюер проверяет понимание таймингов, не зависящих от производительности.
Простой цикл читает намерение, обновляет симуляцию и показывает результат.
- Обработайте текущий ввод до игровых решений.
- Обновите физику с контролируемым шагом.
- Отрисуйте обратную связь по готовому состоянию мира.
Зачем это спрашивают: Интервьюер проверяет понимание порядка стадий игрового цикла.
Фиксированный шаг подходит симуляции со стабильной интеграцией.
- Запускайте физику с постоянным интервалом независимо от рендера.
- Интерполируйте видимые позы между шагами симуляции.
- Ограничивайте догоняющие шаги, чтобы задержка не росла лавиной.
Зачем это спрашивают: Интервьюер проверяет понимание выбора между фиксированным и переменным шагом.
MonoBehaviour задает поведение компонента и колбэки жизненного цикла на GameObject.
- Оставляйте одну задачу, например здоровье или движение.
- Открывайте ссылки сцены через проверяемые сериализованные поля.
- Используйте методы жизненного цикла только для работы их фазы.
Зачем это спрашивают: Интервьюер проверяет знание базовой архитектуры компонентов Unity.
Обязательный компонент нужно явно задать, проверить и один раз закешировать.
- Подключайте сериализованную ссылку, если можно выбрать другой объект.
- Вызывайте GetComponent при инициализации зависимости на том же объекте.
- Явно сообщайте, если prefab собран без зависимости.
Зачем это спрашивают: Интервьюер проверяет понимание безопасного получения зависимостей.
Неявный порядок может открыть компонент до готовности его состояния.
- Используйте Awake для самостоятельной настройки.
- Используйте Start или явную инициализацию для зависимостей от соседей.
- Повторите проверку после загрузки сцены и создания prefab во время игры.
Зачем это спрашивают: Интервьюер проверяет осведомленность о рисках порядка инициализации.
Каждый колбэк Unity должен обновлять состояние своей временной фазы.
- Читайте обычный ввод и нефизическую логику в Update.
- Меняйте Rigidbody в FixedUpdate.
- Двигайте следящую камеру в LateUpdate после цели.
Зачем это спрашивают: Интервьюер проверяет знание назначения каждой фазы обновления.
Узкие компоненты упрощают повторное использование и проверку возможностей игрока.
- Повторно используйте Health у игрока, врагов и разрушаемых объектов.
- Проверяйте Movement без побочных эффектов инвентаря и звука.
- Связывайте возможности узкими методами или событиями.
Зачем это спрашивают: Интервьюер проверяет понимание преимуществ декомпозиции на компоненты.
Стабильная основа относится к C++, а безопасная настройка и сборка подходят Blueprints.
- Реализуйте общие правила и компоненты в проверяемом C++.
- Позвольте дизайнерам выбирать ассеты и настраивать открытые defaults в Blueprints.
- Уберите повторяющиеся сложные графы в общего родителя или C++-функцию.
Зачем это спрашивают: Интервьюер проверяет понимание разделения ответственности между C++ и Blueprint.
Actor существует в мире, а компонент добавляет ему переиспользуемое поведение.
- Представьте размещенный предмет как Actor с transform.
- Разделяйте здоровье через Actor Component.
- Выбирайте Scene Component, только если компоненту нужен transform.
Зачем это спрашивают: Интервьюер проверяет понимание объектной модели Unreal.
Сначала я вынесу именованное поведение и уберу повторяющиеся пути исполнения.
- Замените копии групп узлов функциями или компонентами.
- Предпочитайте события и таймеры постоянному опросу в Tick.
- Переносите код в C++ только после подтверждающего замера.
Зачем это спрашивают: Интервьюер проверяет подход к рефакторингу сложных графов.
Безусловный Tick расходует процессорное время даже при бездействии возможности.
- Используйте события ввода, overlap, delegate или таймера для отдельных изменений.
- Включайте Tick лишь на время покадрового поведения.
- Измеряйте необходимый код Tick в Unreal Insights.
Зачем это спрашивают: Интервьюер проверяет понимание событийной модели вместо постоянных опросов.
Откройте ограниченное свойство настройки, сохранив правила движения в C++.
- Задайте ясную категорию и default в единицах в секунду.
- Ограничьте неверные значения метаданными или валидацией.
- Дайте методы смены состояния вместо открытых внутренних полей.
Зачем это спрашивают: Интервьюер проверяет умение безопасно открывать данные C++ для Blueprint.
Преобразуйте ввод устройства в нормализованное намерение относительно выбранной системы управления.
- Читайте одно смысловое двухосевое действие движения.
- Стройте forward и right по yaw камеры или персонажа.
- Отдайте ускорение и столкновения компоненту движения.
Зачем это спрашивают: Интервьюер проверяет понимание преобразования ввода в движение персонажа.
Запускайте прыжок по границе нажатия и проверяйте состояние персонажа.
- Не считайте непрерывное удержание серией нажатий.
- Расходуйте разрешение grounded в начале взлета.
- Отдельно обрабатывайте отпускание для переменной высоты.
Зачем это спрашивают: Интервьюер проверяет понимание обработки краевых событий ввода.
Проследите привязки рывка и вход в состояние до изменения тайминга.
- Логируйте ввод с кадром и получившим экземпляром.
- Проверьте повторные подписки после включения или возрождения.
- Отклоняйте рывок, если состояние или кулдаун его запрещают.
Зачем это спрашивают: Интервьюер проверяет методику отладки дублирующихся событий.
Запоминайте момент последнего контакта с землей и ненадолго разрешайте прыжок после схода.
- Обновляйте временную метку при каждом достоверном приземлении.
- Разрешайте отталкивание в течение примерно 0,1 секунды после этой метки.
- Считайте это окно использованным сразу после начала прыжка.
Зачем это спрашивают: Интервьюер проверяет знание техники улучшения управляемости прыжка.
Буферизация хранит недавнее действие до ближайшего разрешающего состояния.
- Сохраните прыжок, нажатый перед приземлением.
- Добавьте срок истечения, например 0,1 секунды.
- Расходуйте запись при выполнении и удаляйте по истечении.
Зачем это спрашивают: Интервьюер проверяет понимание буферизации для улучшения отзывчивости.
Сопоставьте оба устройства со смысловыми действиями вне геймплейной логики.
- Назначьте Space и нижнюю кнопку геймпада действию Jump.
- Передавайте один вектор движения контроллеру.
- Меняйте подсказки по последнему устройству без смены обработчиков.
Зачем это спрашивают: Интервьюер проверяет понимание абстрагирования от типа устройства.
Закрытые вопросы
- 21
Зачем нормализовать диагональный ввод движения?
normalization - 22
Как найти направление от врага к игроку?
gameplay - 23
Как скалярное произведение помогает зрению врага?
mathgameplay - 24
Как векторное произведение выбирает поворот влево или вправо?
math - 25
Почему движки используют кватернионы для вращения?
math - 26
Как башне плавно поворачиваться к цели?
gameplay - 27
Чем отличаются локальное и мировое пространство?
transforms - 28
Почему смена родителя может неожиданно переместить дочерний объект?
- 29
Как создать снаряд у дула оружия?
weaponsgameplay - 30
Чем отличаются collider и trigger?
physics - 31
Trigger предмета не срабатывает; что проверить?
physics - 32
Почему динамическое rigid body не двигают через transform каждый кадр?
physicstiming - 33
Когда движению нужны сила, импульс или скорость?
physics - 34
Как сделать проверку земли надежнее одного луча?
physics - 35
Быстрый снаряд проходит сквозь тонкие стены; как это исправить?
gameplay - 36
Что делает layer mask физического запроса?
physics - 37
Как временно отбросить игрока и не потерять управление навсегда?
physics - 38
Почему масштабирование collider во время игры проблемно?
scalingphysics - 39
Как запретить подъем по слишком крутому склону?
- 40
Одна атака наносит повторный урон через два collider; как исправить?
physicsgameplay - 41
Как реализовать базовое hitscan-оружие?
weaponsnetworking - 42
Почему логика столкновений по именам объектов хрупка?
physics - 43
Как поставить геймплей на паузу и оставить меню отзывчивым?
responsivegameplay - 44
Почему таймеры должны выбирать scaled или unscaled time?
- 45
Как организовать здоровье и урон в прототипе?
prototypes - 46
Персонаж продолжает идти после отпускания; что проверить?
gameplay - 47
Как сделать одну кнопку взаимодействия для дверей и предметов?
- 48
Зачем отключать обычный игровой ввод во время смерти?
gameplay - 49
Как отладить null reference только после возрождения?
respawnfundamentals - 50
Где хранить настраиваемую дизайнером высоту прыжка?
designgameplay - 51
Как связать состояния движения с анимацией персонажа?
animationgameplay - 52
Idle-анимация мигает вместе с бегом; что проверить?
animation - 53
Когда уместно событие анимации?
animation - 54
Как реализовать врага на простом конечном автомате?
gameplay - 55
Враг быстро переключается между погоней и атакой; как исправить?
gameplay - 56
Для чего подходит простое дерево поведения?
ai - 57
Как заставить врага патрулировать точки?
gameplay - 58
Навигационный агент не двигается; что проверить?
- 59
Как врагу в погоне обработать потерю видимости?
gameplay - 60
Как настроить простую камеру от третьего лица?
- 61
Зачем камере экспоненциальное или damped-сглаживание?
- 62
Как показать здоровье игрока в UI?
gameplay - 63
Кнопка UI работает мышью, но не геймпадом; что проверить?
- 64
Как проигрывать шаги без звука каждый кадр?
timing - 65
Чем отличаются 2D и 3D игровые звуки?
game-design - 66
Зачем использовать пул объектов для снарядов?
memorygameplay - 67
Какое состояние должен сбрасывать враг из пула?
gameplay - 68
Как подписки на события создают ошибки времени жизни?
- 69
Что вызывает скачки сборки мусора в игровом цикле Unity?
gameplaygcengine - 70
Для чего нужен prefab в Unity?
engine - 71
Что такое ассет Blueprint Class в Unreal?
engineassets - 72
Как переносить постоянные данные игрока между сценами?
gameplayscene-management - 73
Зачем использовать data assets или ScriptableObjects для общих настроек?
data-assetsassets - 74
Что Git должен игнорировать в проекте Unity?
gitengine - 75
Почему meta-файлы Unity нужно коммитить?
engine - 76
Как безопасно разрешить конфликт сцены или prefab?
gitscene-management - 77
Как выглядит базовый workflow checkout в Perforce?
- 78
Что проверить перед передачей билда QA?
build - 79
Функция работает в редакторе, но не в билде; где искать?
build - 80
Как исследовать падение сцены с 60 до 30 FPS?
scene-management - 81
Почему frame time полезнее FPS при профилировании?
profilingtiming - 82
Сто врагов выполняют пустой update; почему это важно?
- 83
Что junior-разработчику нужно понимать о draw calls?
rendering - 84
Что такое overdraw и как его заметить?
- 85
Чем vertex shader отличается от fragment shader?
rendering - 86
Почему прозрачный шейдер может быть дороже непрозрачного?
rendering - 87
Что делает render pipeline?
ci-cd - 88
Как сделать простой эффект вспышки урона в шейдере?
rendering - 89
Что означает авторитет сервера в простой сетевой игре?
game-designnetworking - 90
Что такое репликация?
replication - 91
Зачем интерполировать удаленных персонажей?
gameplay - 92
Что такое client-side prediction простыми словами?
- 93
Почему сетевой предмет должен выдавать сервер?
networking - 94
Чем отличаются reliable и unreliable сообщения?
- 95
Как локально проверить простую сетевую функцию?
networking - 96
Как junior-разработчику представить геймплейную функцию портфолио?
gameplay - 97
Коллега меняет ассет, от которого зависит ваш скрипт; что делать?
soft-skillsassets - 98
Как сократить загрузку слишком большой сцены?
scene-management - 99
Почему асинхронной загрузке сцены нужен видимый переход?
state-machineasyncscene-management - 100
Как найти утечку памяти из-за создаваемых объектов?
memory