Демократизация ужаса: Как Mega Cat Studios сделала Five Nights at Freddy’s доступным

MEGA CAT STUDIOS / GUEST BLOGGuest
Apr 23, 2025
Доступность в Five Nights at Freddy's: Into The Pit, блог пост гостя Mega Cat Studios_Unity
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Этот блог пост был написан Мэдисон Патрик, директором по UX и доступности в Mega Cat Studios.

На протяжении 10 лет франшиза видеоигр Five Nights at Freddy’s гордится своей высокой сложностью. От некоторых из самых беспощадных испытаний в Ultimate Custom Night, до оригинального Five Nights at Freddy’s: 20/20/20/20 Режим, FNAF фанаты из всех стилей игры на протяжении многих лет бросали себе вызов, чтобы пройти эти режимы и в конечном итоге добиться успеха после многих, многих попыток.

Но хотя сложная природа этих игр может приносить огромное удовлетворение для многих, для других возможность играть в них может быть совершенно другой вызов, чем уклонение от ужаса в "Режиме Ночного Мара" в Freddy’s.

Доступность в видеоиграх росла экспоненциальными темпами в последние годы. То, что когда-то ограничивалось лишь возможностью изменять настройки громкости, в конечном итоге превратилось в регулировку яркости, переназначаемые элементы управления и улучшения качества жизни, такие как возможность доступа к меню настроек при первом запуске игры. Переносимся к релизу 2020 года Naughty Dog’s The Last of Us Part II, где был установлен новый стандарт. Эта игра года 2020 имела более 60 настроек доступности на выбор, с сотнями часов, потраченных на исследования и разработку.

Работая над нашим последним релизом, FNAF: В яму, к нам обратились с идеей добавить функции доступности в игру. Наша небольшая команда не имела сотен часов, чтобы посвятить исследованиям, не говоря уже о дополнительной "котопауке". Но все наши разработчики приняли вызов и взяли на себя ответственность за разработку некоторых аспектов доступности. Будь то исследование, тестирование ошибок или изучение новых техник программирования на лету и их обмен с нашими коллегами по столу, наша мотивация дать всемшанс поиграть в FNAF: В Яму (и огромное количество кофе) двигали нас вперед.

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

Функции доступности в FNAF

Следующие функции доступности доступны в Пять ночей у Фредди: В Яму. Примечание. Некоторые из этих функций не показаны, чтобы избежать спойлеров!

Настройки цвета

Игроки могут изменять цветовой контраст и общую яркость игры.

Мы не смогли выпустить полный план корректировки Далтонизации (цветового контраста) вовремя к запуску игры, однако мы реализовали общую яркость и контраст. Было проведено много симуляций с черно-белыми шкалами, чтобы визуальный контраст или наложение было ограничено насколько это возможно.


Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Доступность в Пять ночей у Фредди: В Яму_от Mega Cat Studios_гостевой блог Unity
Четыре изображения, показывающие параметры яркости и контраста в Пять ночей у Фредди: В Яму

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

Доступность в FNAF: В Яму_от Mega Cat Studios_гостевой блог Unity_постобработка
Панель объема постобработки
if (mainCameraVolume.TryGet(out ColorAdjustments colorAdjustments))
            colorAdjustments.contrast.value = 
contrastValueCurve.Evaluate(value);

(ContrastHandler.cs)

Существо, Чика и Визуализация Мира

Каждый NPC, пересекающий мир, имеет свою цветную визуализацию, чтобы указать на свою близость к игроку, например, желтый для «Существа» и фиолетовый для «Чики». Общие звуки вокруг мира, т.е. шумовые устройства, также имеют аудиовизуализацию с серой визуализацией.

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

Сцена из Five Nights at Freddy's: Гостевой блог пост Into the Pit_Unity апрель 2025
На сцене выше визуализация звука появится с той стороны экрана, с которой персонаж «Золотой Бонни» подходит к игроку.
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Внешний вид визуализации зависит от того, с какой стороны подходит персонаж Бонни: Если Бонни приходит с севера, визуализация появится в верхней части экрана; если подход с юга, визуализация появляется внизу; если с запада, визуализация появляется слева, а если с востока, визуализация появляется справа.
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Когда Золотая Бонни приближается к игроку, визуализация становится больше и менее прозрачной. Сияние визуализации увеличивается, когда Бонни приближается к вам.

Вот как Мэтью Войтечко, ведущий разработчик Mega Cat Studio, объясняет функцию аудиовизуализации:

«Я сильно настаивал на том, чтобы мы визуализировали все важные звуки в игре. Мы прошли через игру и выделили три источника шума: Шаги желтой кролика, шаги Чики и различные шумы мира.

У нас была пульсирующая визуализация сбоку экрана, чтобы указать, с какой стороны находится желтый кролик, но теперь нам нужно было включить две другие категории. Мы решили сделать их пульсирующими в ритме; желтый пульс для кролика, розовый пульс для Чики и белый пульс для всего остального. Если этот предмет не издает никакого шума, то этот «ритм» будет просто пустым.

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

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

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


Доступность в Пять ночей у Фредди: В Яму_от Mega Cat Studios_гостевой блог Unity
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Сравнение окна игры и окна сцены

Узнайте больше о системе ИИ навигации Unity с помощью этих учебников:

OpenDyslexic

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

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

Шрифт OpenDyslexic:

Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity

Шрифт по умолчанию:

Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity

Одно касание

События быстрого времени (QTE) в обычном игровом процессе/катсценах будут иметь возможность быть выигранными одним касанием с бесконечным временем.

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

Авто скрытие мини-игр

Скрытие мини-игр может происходить автоматически без необходимости ввода от игрока.

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

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

Переключить бег

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

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

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

public override bool OnRunInput(InputAction.CallbackContext ctx)
{
    if (ctx.started)
    {
        if (IsToggleRunEnabled())
            Oswald.isRunning = !Oswald.isRunning;
        else
            Oswald.isRunning = true;
    }
    else (ctx.canceled)
    {
        if (!IsToggleRunEnabled())
            Oswald.isRunning = false;
    }

    return Oswald.isRunning;
}

Авто система подсказок

Авто система подсказок дает игрокам возможность увеличивать/уменьшать скорость диалоговых подсказок до минуты (т.е. 5 минут, 10 минут, 20 минут, Выкл).

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

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

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


protected void ShowHint()
{
    if (GameManager.Instance == null || 
        GameManager.Instance.Oswald == null || 
        GameManager.Instance.Oswald.IsStumbling ||
        InteractableDoor.isPlayerNearAnyDoor())
        return;

    if (AdventurePC.Instance && HintsManager.TryGetHint(out string hintText))
    {
        InvokeDelayed(new WaitUntil(() => TextBox.Instance), () =>
        {
            AdventurePC.Instance.Stop();
            messageTemplate.speaker = AdventurePC.Instance;
            messageTemplate.text = hintText;
            TextBox.Instance.overrideBlockerDelay = .25f;
            TextBox.Show(messageTemplate);
        });
    }

    UpdateCurrentQuestObjectives();
    ResetTimer();
}
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Персонаж Освальд дает подсказку в Into the Pit

Размер значка

Значки могут быть увеличены или уменьшены в размере. Даже самый большой размер не препятствует обзору игры.

Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Разные размеры значков в игре

Переключатель стерео/моно

Игроки могут выбрать, чтобы звук был стерео (обе стороны разные) или моно (обе стороны одинаковые). Звук в любом хоррор-игре предназначен не только для того, чтобы быть тревожным, но и полезным, когда игровая среда пытается направить игрока. Умение знать, где "Существо" может прятаться в Into the Pit, довольно важно для выживания, в конце концов.

Перенастраиваемые элементы управления

Игроки могут перенастраивать элементы управления по своему усмотрению. Элементы управления совместимы с устройствами для людей с ограниченными возможностями, такими как контроллер PlayStation®5 Access™ и адаптивный контроллер Xbox.

Наши разработчики использовали новую систему ввода от Unity для создания настраиваемых макетов для управления Into the Pit. Система ввода, даже с некоторыми изменениями в пользовательском коде, была лучше приспособлена для наличия нескольких привязок, которые использовались между всеми общими интерфейсами и меню UI. Это было легче управлять, чем наша предыдущая система ввода благодаря интеграции действий ввода, что сделало ввод более организованным и настраиваемым для разработчиков.

«У нас есть действие ввода для всего, что игрок может делать в игре», говорит Мэтью Войтечко, «например, действие для фонарика, для бега, движения, стрельбы в мини-играх и т.д." Когда игрок перенастраивает что-то, это изменяет привязки на действии. Весь остальной код, который отвечает на действия ввода, остается прежним, независимо от того, какие привязки используются, так как действия ввода сохраняют эти специфики абстрактными.

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

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

Одним из крайних случаев, который возникает при реализации меню привязки ввода, является обработка конфликтующих вводов. Это происходит, когда игрок предоставляет ввод для действия, которое уже назначено другому действию. Один из подходов к решению этой проблемы заключается в том, чтобы позволить игроку назначить конфликтующий ввод, но предотвратить сохранение настроек, пока они не решат проблему (т.е. изменив один из двух экземпляров одного и того же ввода на что-то другое). Хотя это разумный подход, мы решили просто поменять привязки в этом случае. Итак, если Фонарик - это F, а Бег - это Shift, и игрок связывает Фонарик с Shift, то Бег становится F.

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

Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Два изображения, показывающие список действий ввода в В Пит
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
И два фрагмента кода, показывающие код обмена действий ввода
Доступность в Five Nights at Freddy's: В Яму_от Mega Cat Studios_гостевой блог Unity
Компонент регулировки иконок ввода

События быстрого времени (QTE)

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

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

public abstract class MechanicHidingMinigame
{
    public bool PlayAutomatic { get; protected set; }
    protected override void Awake()
    {
        PlayAutomatic = PlayerPrefs.GetInt(AccessibilityHandler.AUTO_HIDING_MINIGAMES_KEY) == 1;
    }
}

Затем каждый скрипт скрытой мини-игры может проверять этот флаг, чтобы автоматически «играть» в игру.

Например, в мини-игре, где нужно задержать дыхание, мы контролируем дыхательную систему в нужные моменты:

public class BreathGameMechanics : MechanicHidingMinigame
{
    public void OnBonniePrepareLook()
    {
        if (PlayAutomatic)
        {
            BreathingSystem.Instance?.HoldBreath();
        }
        OnGoldBonnieAlmostLook?.Invoke();
    }

    public void OnBonnieEndLook()
    {
        isBonnieLooking = false;
        if (PlayAutomatic)
        {
            BreathingSystem.Instance?.ReleaseBreath();
        }
        OnGoldBonnieStopLooing?.Invoke();
    }

    // There rest of the code in this class was removed for clarity
}

Настраиваемый стиль игры

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

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

В Mega Cat Studios мы верим, что каждый заслуживает играть в игры, так же как каждый заслуживает быть хорошо испуганным в Пять ночей у Фредди: В яму (или не так сильно испугаться – для этого есть настройка). Мы стремимся привнести совершенство во все наши проекты, что означает расширение нашего инструментария доступности для нашей поддерживающей сообщества и фанатов. И если это означает погружение в неизвестности разработки игр, мы будем с радостью нырять в это каждый раз.

Мы просто надеемся, что здесь нет призраков.