search icon search icon ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ

Инженерный тур. 1 этап

Задача 1.1.(5 баллов)
Доверяй, но проверяй!
Тема: анализ игр

Условие

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

  1. Starfield:

    1. RPG,
    2. roguelike,
    3. научная фантастика,
    4. открытый мир.
  2. The Legend of Zelda: Tears of the Kingdom:

    1. action-adventure,
    2. гача,
    3. открытый мир.
  3. Hogwarts Legacy:

    1. action RPG,
    2. фэнтези,
    3. открытый мир,
    4. шутер.
  4. Resident Evil 4 (Remake):

    1. soulslike,
    2. survival horror,
    3. action-adventure.
  5. Baldur’s Gate 3:

    1. RPG,
    2. roguelite,
    3. фэнтези,
    4. пошаговая стратегия.

Ответ

BBDAB.

Задача 1.2.(6 баллов)
Минималистичные циклы
Темы: анализ игр, геймдизайн

Условие

Геймдизайнер хочет проверить, сможет ли его коллега лишь через прокачку персонажа, механику его смерти и механику битв составить такие игровые циклы, по которым можно точно определить похожие друг на друга игры.

Соотнесите игровые циклы, состоящие из ключевых пунктов: прокачки, битвы и гибели персонажа.

Рис. 1.1 Рис. 1.2 Рис. 1.3 Рис. 1.4 Рис. 1.5 Рис. 1.6
Darksouls
Sifu
CodeVein
Hades 2
Sekiro
Metal gear rising

Рис. 1.1.

Рис. 1.2.

Рис. 1.3.

Рис. 1.4.

Рис. 1.5.

Рис. 1.6.

Ответ

Приведен в таблице 1.

Рис. 1.1 Рис. 1.2 Рис. 1.3 Рис. 1.4 Рис. 1.5 Рис. 1.6
Darksouls
Sifu
CodeVein
Hades 2
Sekiro
Metal gear rising
Задача 1.3.(6 баллов)
Качественный геймплей
Тема: алгоритмы

Условие

Инди-команде для конкурса пришла идея сделать простую игру-кликер, в которой с каждым тапом персонаж наносит урон врагу. Художник смог нарисовать шесть уникальных персонажей, для каждого из которых подготовил три разных окраски.

Геймдизайнер решил, что игрок будет сражаться сначала с первым уникальным персонажем с окраской 1, затем — с таким же, но окраской 2, потом — с окраской 3, а после этого будет сражаться со вторым уникальным персонажем с окраской 1 и так далее.

С каждой новой окраской персонаж становится сильнее персонажа с предыдущей окраской в три раза.

(Уникальный персонаж 1 Окраска 2) = (Уникальный персонаж 1 Окраска 1) \(\cdot~3\).

Каждый уникальный персонаж с окраской 1 равен силе предыдущего уникального персонажа с окраской 1 в 10 раз. То есть

(Уникальный персонаж 2 Окраска 1) = (Уникальный персонаж 1 Окраска 1) \(\cdot~10\).

Команде нужно определиться с начальным количеством силы для Уникального персонажа 1 с Окраской 1. Количество силы — это количество тапов, который должен сделать игрок, чтобы победить его и перейти к следующему противнику.

В ТЗ конкурса указано, что игрового времени нужно не менее 500 ч. При этом команда не хочет затягивать игру и стремится уложиться в минимальное время для прохождения.

Сколько нужно поставить силы Первому персонажу, если мы допускаем, что игрок делает три тапа за 1 с?

Решение

Задачу можно выполнить, реализовав алгоритм решения на языке программирования Python.

Ниже представлено решение на языке Python.

Python
personazi_kolvo = 6
colors = 3

def GetCurTaps(num, color, first_tap):
    return first_tap * (10**(num)) * (3**(color))
    
def AllTaps(first_tap):
    tapsCount = []
    for i in range(personazi_kolvo):
        for j in range(colors):
            tapsCount += [GetCurTaps(i, j, first_tap)]
    return tapsCount

# 500 hours = 500 * 3600 seconds = 1800000 seconds
player_tps = 3
border_time = 1800000

for nachTap in range(10):
    sumTaps = sum(AllTaps(nachTap))
    time = sumTaps / player_tps
    if (time > border_time):
        print(f"U must use minimum {nachTap} hp for first character")
        break;

Ответ

4 тапа.

Задача 1.4.(6 баллов)
Организация турнира
Темы: комбинаторика, алгоритмы

Условие

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

Правила турнира гласят: между любыми двумя командами должна быть сыграна одна игра. То есть каждая команда должна сыграть с каждой по одному разу.

Какое минимальное количество команд нужно взять на турнир, чтобы получилось не менее 90 игр?

Решение

Используя формулу комбинаторики, начинаем считать количество матчей с двух команд. Когда команд станет 14 — получится 91 матч. \[14\,!/((14-2)\,!\cdot 2\,!) = 14\,!/(12\,!\cdot 2\,!) = 13\cdot 14/2 = 91 \text{~матч}.\]

Ответ

14 команд.

Задача 1.5.(5 баллов)
Тест Unity
Темы: программирование, инструменты разработки, Unity

Условие

Необходимо ответить на 10 вопросов, выбрав верный вариант ответа.

Ответом является числовое значение из пяти латинских букв без пробелов, например, ABBDC — значит, что ответ на первый вопрос был под номером A, ответ на второй вопрос под номером B, на третий — под номером B, на четвертый — под номером D, на пятый — под номером C.

  1. За что отвечает профайлер?

    1. Дает подробную информацию о папках и файлах проекта.
    2. Показывает ошибки, возникающие в ходе работы.
    3. Оценивает производительность приложения.
    4. Является настройкой, применимой к объекту.
  2. Как следует настроить луч, если мы хотим проверить его на пересечение с заданным объектом?

    1. Проверка всех объектов на пути луча по layer.
    2. Проверка всех объектов на пути луча по имени.
    3. Отключение коллайдеров у объектов, которые могут встретиться на пути.
    4. Расчет угла от отрезка «объект-цель» и направления взгляда.
  3. В какой папке необходимо содержать скрипт, отвечающий за отображение свойств другого скрипта в редакторе?

    1. Любая папка Editor проекта.
    2. Не нужна специальная папка.
    3. Папка Editor в папке выше по иерархии, чем в которой находится целевой скрипт.
    4. Папка Editor в той же папке, что и целевой скрипт.
  4. Какой из методов сработает, когда объект будет внутри какого-то триггера?

    1. OnTriggerEnter2D.
    2. OnCollisionEnter2D.
    3. OnCollisionExit2D.
    4. OnTriggerStay2D.
  5. Зачем нужен прием LOD?

    1. Позволяет снизить нагрузку на графический вычислитель.
    2. Позволяет тратить меньше времени разработчика на моделирование объектов.
    3. Позволяет упростить взаимодействие с Input-системой.
    4. Позволяет сократить использование ресурсов компьютера за счет рендера исключительно видимых объектов.

Ответ

CADDA.

Задача 1.6.(15 баллов)
Плохая связь
Тема: программирование

Условие

Новый мэр поселка городского типа в своей предвыборной программе обещал исправить печальную ситуацию со связью.

В городе есть \(N\) важных объектов, которым требуется нормальная связь. Цель — обеспечить связью как минимум \(K\) из них. Место размещения сотовой вышки имеет координаты \([X_0; Y_0]\).

Для вышки связи определяется радиус покрытия \(R \geqslant 0\). Все здания на расстоянии не более \(R\) от вышки считаются обеспеченными связью. Здания на расстоянии больше \(R\) от вышки уже не входят в зону гарантированного покрытия, и связь работает с перебоями. Пусть \(D\) — расстояние от вышки до сооружения. Вероятность работы связи \(P(D, R)\) задана такой формулой: \[P(D, R) = \begin{cases} 1, & \text{:} D \leqslant R, \\ \exp\left(1 - \frac{D^2}{R^2}\right), & \text{:} D > R. \end{cases}\]

Под \(\exp(a)\) следует понимать \(e^a\), где \(e = 2{,}7182818284590452353602874713527\).

Если радиус покрытия равен нулю, то все объекты, находящиеся в точке размещения вышки, будут обеспечены связью, а все остальные — нет.

Бюджет на оборудование крайне ограничен, отчего начальство просит рассчитать минимальный радиус покрытия для вышки, который позволит обеспечить связью объекты с суммарной вероятностью НЕпокрытия для всех объектов не более, чем \(\varepsilon\).

Формат входных данных

В первой строке записано целое число \(N\) — количество целевых объектов \((1 \leqslant N \leqslant 100)\). Во второй строке записано два целых числа: \(K\) — целевое количество обеспеченных связью объектов, и \(\varepsilon\) — максимально допустимая вероятность не обеспечить связь, заданная в промилле (\(1\leqslant K\leqslant N\), \(1\leqslant \varepsilon \leqslant 999\), в 1 единице 1000 промилле). В третьей строке записаны \(X_0\) и \(Y_0\) — координаты точки размещения вышки. Остальные \(N\) строк содержат по два числа \(X_i\) и \(Y_i\) — координаты каждого объекта. Все координаты целые, по модулю не превосходят 1000. В одной точке может находиться несколько объектов.

Формат выходных данных

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

Решение, тесты и ответ

https://disk.yandex.ru/d/rThzp5cSSJ1JPg.

Задача 1.7.(20 баллов)
Вспоминая прошлое
Тема: программирование

Особенности начисления баллов: начисление баллов пропорционально пройденным тестам.

Условие

Программист Вася захотел написать свою собственную игру и решил начать с простого. Используя написанный Васей код, нужно реализовать функцию MoveHero в классе Field.

Правила игры:

  1. Основные элементы (классы) игры:

    1. Field — прямоугольное игровое поле. Содержит переменные, отвечающие за ширину и высоту поля. Обе переменные имеют целочисленное четное значение в диапазоне \((10, 100)\).
    2. Obstacle — прямоугольное препятствие на поле. Содержит переменные, отвечающие за ширину и высоту препятствия. Обе переменные имеют целочисленное четное значение в диапазоне \((2, 20)\), а также переменные, отвечающие за координаты на поле. За координаты объекта принимается его геометрический центр.
    3. Hero — квадратный главный герой. Содержит переменные, отвечающие за ширину и высоту героя. Обе переменные имеют целочисленное четное значение в диапазоне \((2, 6)\). Также имеет переменные, отвечающие за координаты на поле. За координаты объекта принимается его геометрический центр.
    4. DirectionVector — вектор перемещения. Отвечает за смещение персонажа по полю. Содержит два целочисленных значения в диапазоне \((-1, 1)\).
  2. Правила движения персонажа по полю:

    1. Поле представляет собой координатную сетку, где левый нижний угол имеет координаты \((0, 0)\), а правый верхний \((\text{width}, \text{height})\).
    2. Персонаж может перемещаться по полю на одну клетку по вертикали, по горизонтали и по диагонали.
    3. Если координата персонажа пересекает в процессе хода границу поля, то он переносится на другую сторону поля. Допустим, поле имеет размер 50 единиц в ширину и 20 — в высоту. Тогда координаты игрока будут изменяться при движении по горизонтали так: \((49, 10) \rightarrow (50, 10) \rightarrow (1, 10) \rightarrow (2, 10)\), аналогично по вертикали и в обратную сторону. В случае движения по диагонали: \((49, 19) \rightarrow (50, 20) \rightarrow (1, 1) \rightarrow (2, 2)\).

      Обратите внимание: в этом правиле не учитывается размер персонажа, исключительно — его координаты.

      Если персонаж на своем текущем ходу пересек поле (например, \((50, 10) \rightarrow (1, 10))\), необходимо вывести в консоль Teleported.

    4. Персонаж в начале игры расположен в центре поля.
    5. На поле расставлены прямоугольные препятствия. По дизайну игры персонаж не может заходить никакой своей частью на препятствие (возникает столкновение). В случае, если при попытке движения персонажа он сталкивается с препятствием, необходимо вывести в консоль (в зависимости от направления столкновения) либо We got collision by Y, либо We got collision by X, либо We got collision by X and Y, если персонаж столкнулся с препятствием по оси \(Y\), по оси \(X\) или с углом препятствия соответственно.

      Обратите внимание: если персонаж пытается переместиться по обеим осям одновременно, перемещение будет заблокировано (и не должно произойти) только по той/тем оси/осям, перемещение по которым невозможно из-за столкновения (если персонаж столкнулся с препятствием сверху, то при попытке перемещения влево-вверх персонаж переместится влево). В столкновении учитываются границы (ширина и высота) персонажа и препятствия.

      Кроме того, если препятствие не мешает текущему ходу персонажа, не надо выводить сообщение о столкновении.

    6. Гарантируется, что персонаж не будет начинать игру и при этом находиться любой своей частью на части препятствия.
    7. Гарантируется, что заданные во входных данных препятствия полностью находятся на поле и не пересекают его границ.
    8. Гарантируется, что заданные во входных данных препятствия не создадут ситуации, при которой игрок может столкнуться с двумя препятствиями одновременно.
    9. Гарантируется, что заданные во входных данных препятствия не создадут ситуации, что при «перепрыгивании» персонажа через границу экрана он попадет какой-либо частью своей «модели» на «модель» препятствия.

Формат входных данных

В первой строке записано целое число \(N\) — количество препятствий (\(1\leqslant N \leqslant 100\)). Во второй строке записано два целых числа: ширина width и высота height персонажа. В третьей строке записано два целых числа: ширина width и высота height игрового поля. Следующие \(N\) строк содержат по четыре числа: ширина width и высота height препятствия, а также \(X_i\) и \(Y_i\) — его координаты. Все оставшиеся строки содержат пару чисел \(X_{dir}\) и \(Y_{dir}\), отвечающих за вектор перемещения персонажа согласно описанию.

Обратите внимание: все входные данные обрабатываются программой тестирования, которая затем вызывает функцию MoveHero каждый ход и передает в нее корректный DirectionVector. Ввод данных обрабатывать не нужно.

Формат выходных данных

Перед первым ходом программа выводит текущие координаты игрока в формате \((X, Y)\). Далее каждый ход программа вызывает функцию MoveHero (в которой необходимо реализовать вывод указанных выше сообщений), после чего выводит координаты игрока после хода в формате \((X, Y)\).

Обратите внимание: необходимо выводить только указанные диагностические сообщения в случае пересечения экрана и столкновения с препятствием. Координаты игрока программа тестирования выводит автоматически.

Решение, тесты и ответ

https://disk.yandex.ru/d/h60ZRw2Z-PI5-Q .

Задача 1.8.(4 балла)
3D тест
Темы: 3D-моделирование, 2D-арт

Условие

Необходимо ответить на восемь вопросов, выбрав верный вариант ответа.

Ответом является числовое значение из пяти латинских букв без пробелов, например, ABBDC — значит, что ответ на первый вопрос был под номером A, ответ на второй вопрос под номером B, на третий — под номером B, на четвертый — под номером D, на пятый — под номером C.

  1. Что такое UI в разработке игры?

    1. Пользовательский интерфейс.
    2. Пользовательский ввод.
    3. Унифицированный интерфейс.
    4. Универсальный интерфейс.
  2. Что такое концепт-арт?

    1. Исходный материал для игры.
    2. Предварительный дизайн персонажей и локаций.
    3. Конечный спрайт игрока.
    4. Стиль рисования.
  3. Какие инструменты можно использовать для создания 3D-моделей?

    1. Blender.
    2. ZBrush.
    3. SketchUp.
    4. Все вышеперечисленное.
  4. Какие методы использования света могут делать игровую графику более привлекательной?

    1. Освещение в реальном времени.
    2. Глубокий тени.
    3. Туман и рассеянный свет.
    4. Все вышеперечисленное.
  5. Какие типы картин могут относиться к 2D-арту?

    1. Фотографии.
    2. Иллюстрации.
    3. Комиксы.
    4. Все варианты выше.

Ответ

ABDDD.

Задача 1.9.(5 баллов)
Черный ящик
Темы: 3D, моделирование

Условие

Скачайте архив с 3D-моделью: https://disk.yandex.ru/d/_avd_uKNlsWVmQ.

Определите количество треугольников (Tris) у модели, которая лежит внутри ящика.

Модель необходимо скачать по ссылке из текстового файла задания. В поле ответа впишите количество треугольников.

Рекомендуем пользоваться самой свежей версией программы Blender.

Решение

Определить количество треугольников можно с помощью любого ПО, позволяющего работать с 3D-графикой, используя либо встроенные модификаторы/плагины, либо в режиме редактирования моделей. Но для начала необходимо удалить ящик, который закрывает обзор фигурки: необходимо перейти в режим редактирования и выделить все вершины ящика, затем удалить их. После этого можно узнать количество треугольников у фигурки.

Ответ

19600.

Задача 1.10.(6 баллов)
Перепутанные крышки
Темы: 3D-моделирование, текстурные карты

Условие

Скачайте архив с текстурными картами и 3D-модель: https://disk.yandex.ru/d/8mBrxrw_e5XpxA.

Наложите текстурные карты на предложенные модели, в соответствии с номерами каждого объекта (то есть фигуре «1» принадлежат текстуры с именем «1»). Можно заметить, что некоторые крышки перепутаны. Передвиньте крышки на свои места (ориентируясь на цвет флакона) и впишите в поле ответа в правильном порядке цифры, изображенные на крышке. Рекомендуем пользоваться самой свежей версией программы Blender.

Решение

Необходимо скачать архив с текстурными картами и 3D-моделью. Открыть модель в Blender и импортировать ее. После загрузить текстурные карты и применить их к соответствующим объектам на модели, для этого необходимо создать материалы и назначить текстуры. Также необходимо проверить соответствие текстурных карт номерам каждого объекта. Если обнаружены ошибки (когда крышки перепутаны), переместить крышки на правильные места, ориентируясь на цвет флакона. После перестановки крышек нужно определить цифры, изображенные на крышках, в правильном порядке и вписать их в поле ответа.

Ответ

2406.

Задача 1.11.(7 баллов)
Сломанная гитара
Темы: 3D-моделирование, анимация, ключи

Условие

Скачайте архив с 3D-моделью: https://disk.yandex.ru/d/JmyNR6OCquwUbA.

В файле находится гитара и три ноты. Следует внимательно просмотреть анимацию и найти проблему, которая мешает ноте № 3 совершить оборот вокруг гитары. Исправьте этот фрагмент, чтобы нота продолжила маршрут. После обнаружения и исправления проблемы, необходимо посчитать количество оборотов ноты № 3 вокруг гитары (начало круга идет от струн гитары).

Рекомендуем пользоваться самой свежей версией программы Blender.

Решение

Скачайте архив с 3D-моделью гитары и нотами. Откройте файл в Blender и просмотрите анимацию, чтобы найти проблему, которая мешает ноте № 3 совершить оборот вокруг гитары. Проблема связана с неправильной анимацией ключевых кадров. Необходимо найти фрагмент и удалить данные ключевые кадры, чтобы нота № 3 могла успешно продолжить маршрут вокруг гитары. После того как проблема исправлена, посчитайте количество оборотов ноты № 3 вокруг гитары. Запишите ответ.

Ответ

3.

Задача 1.12.(5 баллов)
Воронка
Темы: маркетинг, проценты

Условие

Необходимо проанализировать воронку продаж игры и определить упущенный процент конверсии. Затем следует найти этап, на котором процент конверсии значительно ниже, чем мог быть, найдите его.

Запишите процент и количество людей на этапе, в котором самая высокая конверсия.

Рис. 1.7.

Решение

Необходимо посчитать количество людей из категории «Люди, которые добавили игру в список желаемого»: \[26240/100\cdot 60=15744.\] Необходимо посчитать процент из категории «Люди которые купили игру»: \[1103/15744\cdot 100=7.\] Посмотрев на воронку (рис. 1.7), можно увидеть, что самая высокая конверсия у категории «Люди, которые посмотрели трейлер на YouTube».

Потенциальные игроки — 100% — 100000.

Люди, которые узнали об игре — 32% — 32000.

Люди, которые посмотрели трейлер на YouTube — 82% — 26240.

Люди, которые добавили игру в список желаемого — 60% — 15744.

Люди, которые купили игру — 7% — 1103.

Ответ

82, 26240.

Задача 1.13.(5 баллов)
Сложные вопросы
Темы: геймдизайн, теория вероятности

Условие

В новеллу «Журнал капитана Тундры» (https://talent.kruzhok.org/novel/) включены вопросы с образовательным содержанием, предполагающие, что игрок при выборе ответа использует знания из школьной программы.

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

Решение

В первом эпизоде новеллы в сценах в аэротакси и при разговоре с ИИ всего два вопроса отсылающих к школьной программе: про ускорение и тягу двигателя. На каждый из них предлагается по три варианта ответа, где только один верный. Ответы на вопросы даются независимо, так что эти события совместные. Вероятность произведения нескольких совместных событий равна произведению вероятностей этих событий. Вероятность случайного верного ответа будет 1/3 для каждого вопроса, то есть 1/9 для обоих вопросов. В переводе в проценты из попыток это даст 11 и 1 в периоде процентов, то есть 11,1%.

Ответ

11,1%.

Задача 1.14.(5 баллов)
Определение целевой аудитории
Темы: геймдизайн, маркетинг игры

Условие

При подготовке презентации для рекламного агентства с целью предложить интеграцию в визуальную новеллу «Журнал капитана тундра» (https://talent.kruzhok.org/novel/) было запланировано включение в нее слайда о целевой аудитории игры. Выберите, какие тезисы будет корректно использовать в такой презентации, чтобы описать составляющие игры и аудиторию, на которую они рассчитаны.

Ответ давайте на основе выводов, которые можно сделать из первого эпизода новеллы.

  1. Аниме-стиль визуальной новеллы будет привлекателен для широкой аудитории.
  2. Упрощенная, яркая графика персонажей привлечет детей дошкольного возраста.
  3. Сюжет о сложных отношениях с родителями и построении коммуникации в команде сверстников будет актуален для подростков.
  4. Сюжет новеллы строится вокруг научного исследования, поэтому будет интересен ученым.
  5. Новелла привлекает игроков, которым нравятся игры с интересными сюжетом.
  6. Подросткам будет интересно играть в новеллу с персонажами-сверстниками.

Решение

Данная новелла не сделана в стиле аниме, поэтому это неверно, кроме того, утверждение про широкую аудитории не несет ценности при определении целевой аудитории.

Графика основных персонажей действительно упрощенная и могла бы бы интересна дошкольникам, но поскольку новелла предполагает большой объем текста, это будет также некорректно для презентации о возможных рекламных интеграциях.

Сюжет новеллы в первом эпизоде построен в основном вокруг отношений героя-подростка со сверстниками, наставницей и отцом, что, судя по популярности литературы о подростках, действительно может быть интересно читателям того же возраста.

В целом новелла как жанр привлекает тех, кому интересен сюжет, так что может быть интересна для рекламы других аналогичных игр.

Ответ

1. — неверно; 2. — неверно; 3. — верно; 4. — неверно; 5. — верно; 6. — верно.

text slider background image text slider background image
text slider background image text slider background image text slider background image text slider background image