Skip to content

Вопросы на собеседовании: Геймдев-разработчик

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Junior-разработчик игр.

Смотреть пример резюме: Геймдев-разработчик

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

timing

Delta time сохраняет скорость движения при разном FPS.

  • Умножайте скорость на прошедшие секунды перед добавлением смещения.
  • Сравните путь за секунду при 30 и 144 FPS.
  • Не масштабируйте повторно силы, уже интегрируемые фиксированным шагом физики.

Зачем это спрашивают: Интервьюер проверяет понимание независимости движения от частоты кадров.

cooldowns

Кулдаун должен считать секунды, а не отрисованные кадры.

  • Запустите таймер с длительности, например 0,8 секунды.
  • Вычитайте delta подходящих часов и ограничивайте значение нулем.
  • Проверьте одинаковое время завершения при нескольких лимитах FPS.

Зачем это спрашивают: Интервьюер проверяет понимание таймингов, не зависящих от производительности.

game-designgameplay

Простой цикл читает намерение, обновляет симуляцию и показывает результат.

  • Обработайте текущий ввод до игровых решений.
  • Обновите физику с контролируемым шагом.
  • Отрисуйте обратную связь по готовому состоянию мира.

Зачем это спрашивают: Интервьюер проверяет понимание порядка стадий игрового цикла.

timing

Фиксированный шаг подходит симуляции со стабильной интеграцией.

  • Запускайте физику с постоянным интервалом независимо от рендера.
  • Интерполируйте видимые позы между шагами симуляции.
  • Ограничивайте догоняющие шаги, чтобы задержка не росла лавиной.

Зачем это спрашивают: Интервьюер проверяет понимание выбора между фиксированным и переменным шагом.

engineunity

MonoBehaviour задает поведение компонента и колбэки жизненного цикла на GameObject.

  • Оставляйте одну задачу, например здоровье или движение.
  • Открывайте ссылки сцены через проверяемые сериализованные поля.
  • Используйте методы жизненного цикла только для работы их фазы.

Зачем это спрашивают: Интервьюер проверяет знание базовой архитектуры компонентов Unity.

componentsengine

Обязательный компонент нужно явно задать, проверить и один раз закешировать.

  • Подключайте сериализованную ссылку, если можно выбрать другой объект.
  • Вызывайте GetComponent при инициализации зависимости на том же объекте.
  • Явно сообщайте, если prefab собран без зависимости.

Зачем это спрашивают: Интервьюер проверяет понимание безопасного получения зависимостей.

componentsengine

Неявный порядок может открыть компонент до готовности его состояния.

  • Используйте Awake для самостоятельной настройки.
  • Используйте Start или явную инициализацию для зависимостей от соседей.
  • Повторите проверку после загрузки сцены и создания prefab во время игры.

Зачем это спрашивают: Интервьюер проверяет осведомленность о рисках порядка инициализации.

engine

Каждый колбэк Unity должен обновлять состояние своей временной фазы.

  • Читайте обычный ввод и нефизическую логику в Update.
  • Меняйте Rigidbody в FixedUpdate.
  • Двигайте следящую камеру в LateUpdate после цели.

Зачем это спрашивают: Интервьюер проверяет знание назначения каждой фазы обновления.

unitygameplaycomponents

Узкие компоненты упрощают повторное использование и проверку возможностей игрока.

  • Повторно используйте Health у игрока, врагов и разрушаемых объектов.
  • Проверяйте Movement без побочных эффектов инвентаря и звука.
  • Связывайте возможности узкими методами или событиями.

Зачем это спрашивают: Интервьюер проверяет понимание преимуществ декомпозиции на компоненты.

engineunreal-engine

Стабильная основа относится к C++, а безопасная настройка и сборка подходят Blueprints.

  • Реализуйте общие правила и компоненты в проверяемом C++.
  • Позвольте дизайнерам выбирать ассеты и настраивать открытые defaults в Blueprints.
  • Уберите повторяющиеся сложные графы в общего родителя или C++-функцию.

Зачем это спрашивают: Интервьюер проверяет понимание разделения ответственности между C++ и Blueprint.

componentsengine

Actor существует в мире, а компонент добавляет ему переиспользуемое поведение.

  • Представьте размещенный предмет как Actor с transform.
  • Разделяйте здоровье через Actor Component.
  • Выбирайте Scene Component, только если компоненту нужен transform.

Зачем это спрашивают: Интервьюер проверяет понимание объектной модели Unreal.

engine

Сначала я вынесу именованное поведение и уберу повторяющиеся пути исполнения.

  • Замените копии групп узлов функциями или компонентами.
  • Предпочитайте события и таймеры постоянному опросу в Tick.
  • Переносите код в C++ только после подтверждающего замера.

Зачем это спрашивают: Интервьюер проверяет подход к рефакторингу сложных графов.

gameplayengine

Безусловный Tick расходует процессорное время даже при бездействии возможности.

  • Используйте события ввода, overlap, delegate или таймера для отдельных изменений.
  • Включайте Tick лишь на время покадрового поведения.
  • Измеряйте необходимый код Tick в Unreal Insights.

Зачем это спрашивают: Интервьюер проверяет понимание событийной модели вместо постоянных опросов.

engine

Откройте ограниченное свойство настройки, сохранив правила движения в C++.

  • Задайте ясную категорию и default в единицах в секунду.
  • Ограничьте неверные значения метаданными или валидацией.
  • Дайте методы смены состояния вместо открытых внутренних полей.

Зачем это спрашивают: Интервьюер проверяет умение безопасно открывать данные C++ для Blueprint.

gameplay

Преобразуйте ввод устройства в нормализованное намерение относительно выбранной системы управления.

  • Читайте одно смысловое двухосевое действие движения.
  • Стройте forward и right по yaw камеры или персонажа.
  • Отдайте ускорение и столкновения компоненту движения.

Зачем это спрашивают: Интервьюер проверяет понимание преобразования ввода в движение персонажа.

Запускайте прыжок по границе нажатия и проверяйте состояние персонажа.

  • Не считайте непрерывное удержание серией нажатий.
  • Расходуйте разрешение grounded в начале взлета.
  • Отдельно обрабатывайте отпускание для переменной высоты.

Зачем это спрашивают: Интервьюер проверяет понимание обработки краевых событий ввода.

gameplay

Проследите привязки рывка и вход в состояние до изменения тайминга.

  • Логируйте ввод с кадром и получившим экземпляром.
  • Проверьте повторные подписки после включения или возрождения.
  • Отклоняйте рывок, если состояние или кулдаун его запрещают.

Зачем это спрашивают: Интервьюер проверяет методику отладки дублирующихся событий.

inputgameplaycross-platform

Запоминайте момент последнего контакта с землей и ненадолго разрешайте прыжок после схода.

  • Обновляйте временную метку при каждом достоверном приземлении.
  • Разрешайте отталкивание в течение примерно 0,1 секунды после этой метки.
  • Считайте это окно использованным сразу после начала прыжка.

Зачем это спрашивают: Интервьюер проверяет знание техники улучшения управляемости прыжка.

cross-platforminput

Буферизация хранит недавнее действие до ближайшего разрешающего состояния.

  • Сохраните прыжок, нажатый перед приземлением.
  • Добавьте срок истечения, например 0,1 секунды.
  • Расходуйте запись при выполнении и удаляйте по истечении.

Зачем это спрашивают: Интервьюер проверяет понимание буферизации для улучшения отзывчивости.

gameplay

Сопоставьте оба устройства со смысловыми действиями вне геймплейной логики.

  • Назначьте 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