Democratizando o horror: Como o Mega Cat Studios trouxe acessibilidade para Five Nights at Freddy’s

Esta postagem no blog foi escrita por Madison Petrick, a Diretora de UX e Acessibilidade na Mega Cat Studios.
Por 10 anos, a franquia de jogos de vídeo Five Nights at Freddy’s se orgulhou de sua alta dificuldade. Desde alguns dos desafios mais implacáveis em Ultimate Custom Night, até o original Five Nights at Freddy’s: Modo 20/20/20/20, os fãs de FNAF de todos os estilos de jogo se desafiaram ao longo dos anos a vencer esses modos e eventualmente ter sucesso após muitas, muitas tentativas.
Mas enquanto a natureza difícil desses títulos pode trazer grande satisfação para muitos, para outros, a viabilidade de jogá-los pode ser um desafio completamente diferente de desviar do terror em "Modo Pesadelo" em Freddy’s.
A acessibilidade em jogos de vídeo cresceu a uma taxa exponencial nos últimos anos. O que antes era limitado a simplesmente poder alterar as configurações de volume eventualmente se transformou em ajuste de brilho, controles remapeáveis e mudanças na qualidade de vida, como poder acessar o menu de configurações ao iniciar um jogo pela primeira vez. Avançando para o lançamento de 2020 de Naughty Dog’s The Last of Us Part II, onde um novo padrão foi estabelecido. Este Jogo do Ano de 2020 tinha mais de 60 configurações de acessibilidade para escolher, com centenas de horas dedicadas a pesquisa e desenvolvimento.
Enquanto trabalhávamos em nosso último lançamento, FNAF: Into the Pit, fomos abordados com a ideia de adicionar recursos de acessibilidade ao jogo. Nossa pequena equipe não tinha centenas de horas para dedicar à pesquisa, muito menos "poder de gato" extra. Mas todos os nossos desenvolvedores aceitaram o desafio e se responsabilizaram por desenvolver algum aspecto da acessibilidade. Seja pesquisa, teste de bugs ou aprendizado de novas técnicas de codificação rapidamente e compartilhá-las com nossos colegas de mesa, nossa motivação para dar a todosuma chance de jogar FNAF: Para o Poço (e copiosas quantidades de café) nos impulsionou para frente.
O que se tornou o objetivo de integrar algumasfuncionalidades na versão final acabou se transformando em mais de 20 no final. Embora houvesse funcionalidades que infelizmente não foram incluídas, estamos orgulhosos dos novos recursos que trouxemos para a longa FNAF franquia.
Recursos de acessibilidade em FNAF
Os seguintes recursos de acessibilidade estão disponíveis em Five Nights at Freddy’s: Para o Poço. Observação: Alguns desses recursos não são mostrados para evitar spoilers!
Configurações de cor
Os jogadores podem alterar o contraste de cor e o brilho geral do jogo.
Não conseguimos lançar um plano completo de Daltonização (ajuste de contraste de cor) a tempo para o lançamento do jogo, no entanto, implementamos brilho e contraste gerais. Muitas simulações foram realizadas com as escalas de preto e branco para que o contraste visual ou sobreposição fosse limitado o máximo possível.


Alterar os valores nos volumes de pós-processamento da Unity requer apenas algumas linhas de código, facilitando para os jogadores personalizarem os níveis de brilho e contraste.

if (mainCameraVolume.TryGet(out ColorAdjustments colorAdjustments))
colorAdjustments.contrast.value =
contrastValueCurve.Evaluate(value);
(ContrastHandler.cs)
A Criatura, Chica e Vignette de Ruído do Mundo
Cada NPC que atravessa o mundo tem sua própria vignette colorida para indicar sua proximidade ao jogador, por exemplo, amarelo para "A Criatura" e roxo para "Chica". Ruídos gerais ao redor do mundo, ou seja, criadores de ruído, também têm visualização de áudio, com uma vignette de cor cinza.
Ao receber feedback de acessibilidade, os desenvolvedores queriam garantir que Para o Poço não dependesse apenas do som para alertar os jogadores sobre ameaças. Enquanto as vignettes de ruído foram adicionadas para acomodar a acessibilidade auditiva, esse recurso também beneficia aqueles que preferem ter um estilo de jogo mais visual. Além disso, as vignettes são projetadas para serem mais do que apenas dependentes de cor, graças à integração de efeitos de pulsação como um indicador de proximidade secundário para acomodar configurações de contraste e brilho.



Aqui está como Matthew Wojtechko, desenvolvedor principal da Mega Cat Studio, explica o recurso de visualização de áudio:
"Fiz um grande esforço para garantir que visualizássemos todos os sons importantes no jogo. Passamos pelo jogo e encontramos três fontes de ruído: Os passos do coelho amarelo, os passos de Chica e ruídos diversos do mundo.
Tínhamos uma vignette pulsante no lado da tela para indicar de que lado o coelho amarelo está, mas agora, tivemos que incorporar duas outras categorias. Decidimos fazer esses pulsos em um ritmo; um pulso amarelo para o coelho, um pulso rosa para Chica e um pulso branco para qualquer outra coisa. Se aquele item não estivesse fazendo nenhum ruído, aquele "batimento" seria apenas em branco.
O maior desafio na implementação deste recurso foi determinar de que lado o alvo estava em relação a Oswald. Isso parece um problema simples, exceto pelo fato de que a forma como o jogo foi implementado em espaço 3D na Unity não corresponde à realidade que estamos tentando transmitir aos jogadores.
Vamos considerar o exemplo de Oswald em pé na sala de segurança enquanto o coelho amarelo está na sala de armazenamento. Embora a sala de armazenamento deva estar à esquerda da sala de segurança, na visualização da Cena podemos ver que essas salas estão, na verdade, implementadas na direção inversa. Neste caso, uma comparação direta entre as posições de Oswald e do coelho amarelo não é confiável, pois a compreensão do jogador sobre o mapa não corresponde à realidade no motor do jogo.
É por isso que, se Oswald e o alvo sonoro estiverem em salas diferentes, o jogo determina o caminho válido mais próximo usando o sistema NavMesh da Unity (que já usamos para a IA dos inimigos) e usa a porta que melhor levaria a Oswald como a direção do som.


Saiba mais sobre o sistema de Navegação AI da Unity com estes tutoriais:
- Navegação AI 2.0: Noções básicas do NavMesh
- Navegação AI 2.0: Superfícies NavMesh em tempo de execução
- Navegação AI 2.0: Links e obstáculos do NavMesh
OpenDyslexic
Os jogadores podem selecionar não apenas o tamanho e o espaçamento da fonte, mas uma fonte criada especificamente para leitores com dislexia conhecida como OpenDyslexic.
Ao utilizar o OpenDyslexic, esperamos aumentar a legibilidade de quase todo o texto em Into the Pit para jogadores com dislexia. Embora nosso texto padrão seja totalmente personalizável em tamanho, queríamos adicionar apenas um pouco mais a essa opção para aumentar a facilidade de leitura devido ao gênero muito baseado em texto do jogo.
Fonte OpenDyslexic:

Fonte padrão:

Toque único
Eventos de tempo rápido (QTEs) na jogabilidade/cenas cortadas terão uma opção para serem vencidos com um toque único com tempo infinito.
Com este recurso, eventos de tempo rápido podem ser concluídos com apenas um toque de botão e não são dependentes de tempo. Embora "apertar botões" seja uma prática comum na indústria de videogames, essa opção de controle motor pode ajudar a diminuir a fadiga dos botões para aqueles jogadores que a desejam.
Minijogos ocultos automaticamente
Minijogos ocultos podem ser progredidos automaticamente sem necessidade de input do jogador.
Os jogadores não precisam depender de controles de motricidade fina para completar com sucesso as ações dos minijogos, pois estas podem ser realizadas automaticamente.
Os exemplos abaixo mostram praticamente nenhuma diferença entre a experiência visual do jogador com a configuração Desligado (esquerda) ou Ligado (direita), garantindo que esse recurso emule tanto suspense com menos inputs.
Alternar corrida
Nossa opção de alternar corrida permite que o jogador corra sem segurar um botão para ajudar a diminuir a fadiga dos botões.
Os jogadores podem selecionar se desejam segurar seu botão de Corrida selecionado ou alternar sua corrida pressionando seu botão de Corrida Ligado/Desligado durante o jogo. Oswald automaticamente passa por portas se ele correr perto o suficiente delas, permitindo também transições suaves enquanto corre (por sua vida).
O jogo lida com input usando o Sistema de Input do Unity, que facilita o input baseado em eventos. Nossa lógica para determinar se o jogador está correndo ou não está em um callback de input, que leva em consideração a configuração atual do recurso de acessibilidade:
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;
}
Sistema de dicas automáticas
O sistema de dicas automáticas dá aos jogadores a opção de aumentar/diminuir a taxa de dicas de diálogo até o minuto (ou seja, 5 minutos, 10 minutos, 20 minutos, Desligado).
Não saber para onde ir a seguir é um momento derrotador para qualquer jogador, especialmente depois de procurar por toda parte em um mapa ou área. Em Into the Pit, os jogadores podem personalizar a taxa de dicas de diálogo que Oswald irá fornecer para ajudar a guiá-los ao seu próximo objetivo. Essas dicas são automáticas e podem ser alteradas ou ativadas/desativadas a qualquer momento.
Originalmente, o sistema de dicas estava ativado na mesma taxa e não podia ser ajustado. No entanto, os desenvolvedores de Into the Pit sabiam que alguns jogadores teriam uma experiência melhor se recebessem essa dica mais cedo, enquanto outros poderiam não querer nenhuma.
Isso é implementado aguardando o tempo especificado pelas configurações de acessibilidade. O temporizador é redefinido quando o jogador recebe um novo objetivo. O importante nesta implementação foi garantir que os desenvolvedores evitassem bugs de casos extremos. É por isso que na função ShowHint, isso começa com algumas cláusulas de proteção para evitar que Oswald fale consigo mesmo em um momento inoportuno.
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();
}

Tamanho do ícone
Os ícones podem ser escalonados para cima e para baixo em tamanho. Mesmo o maior tamanho não obstrui nenhuma visão do jogo.

Alternar Estéreo/Mono
Os jogadores podem optar por fazer o som estéreo (ambos os lados são diferentes) ou mono (ambos os lados são iguais). O som em qualquer jogo de terror é projetado para não apenas ser inquietante, mas útil quando o ambiente do jogo está tentando guiar o jogador. Saber onde "A Criatura" pode estar se escondendo em Into the Pit é bastante importante para a sobrevivência, afinal.
Controles remapeáveis
Os jogadores podem remapear os controles de acordo com sua preferência. Os controles são compatíveis com dispositivos de acessibilidade, como o Controlador de Acesso™ PlayStation®5 e o Controlador Adaptativo Xbox.
Nossos desenvolvedores utilizaram o novo Sistema de Entrada da Unity para criar os layouts personalizáveis para os controles de Into the Pit. O Sistema de Entrada, mesmo com algumas edições de código personalizadas, era mais adequado para ter múltiplas ligações, que foram utilizadas entre todas as interfaces compartilhadas e menus de UI. Isso era mais fácil de gerenciar do que nosso sistema de entrada anterior devido à integração de Ações de Entrada, que tornaram a entrada mais organizada e personalizável para os desenvolvedores.
"Temos uma Ação de Entrada para tudo que o jogador pode fazer no jogo", diz Matthew Wojtechko, "como uma Ação para a lanterna, para correr, mover, atirar nos minijogos, etc." Quando o jogador remapeia algo, isso altera as ligações na Ação. Todo o resto do código que responde às Ações de Entrada permanece o mesmo, independentemente de quais sejam as ligações, já que as Ações de Entrada mantêm essas especificidades abstraídas.
Into the Pit tem 37 Ações de Entrada personalizadas. Cada uma denota uma ação específica que o jogador pode realizar e lista as entradas correspondentes usadas para acioná-la. Por exemplo, usar a lanterna está por padrão vinculado à tecla F no teclado e ao botão de face esquerdo nos controles.
A facilidade de ajustar os vínculos de entrada é uma grande atualização em relação ao gerenciador de entrada original. É simples modificá-los no Editor, e reatribuir em tempo de execução é mais eficiente, embora exija um pouco de código. Nossa solução de reatribuição é baseada no exemplo fornecido no pacote do Sistema de Entrada, que se baseia na classe RebindingOperation do Unity.
Um caso extremo que surge ao implementar um menu de vínculos de entrada é lidar com entradas conflitantes. Isso ocorre quando um jogador fornece uma entrada para uma ação que já está atribuída a outra ação. Uma abordagem para resolver isso é permitir que o jogador atribua uma entrada conflitante, mas impedir que o jogador salve as configurações até que resolva o problema (ou seja, mudar uma das duas instâncias da mesma entrada para outra coisa). Embora essa seja uma abordagem razoável, optamos por simplesmente trocar os vínculos neste caso. Então, se Lanterna é F e Correr é Shift, e o jogador vincula Lanterna a Shift, então Correr se torna F.
Usar o Sistema de Entrada mantém as informações de vínculo abstraídas quando se trata de outro código. Assim, nem o script que escuta a entrada do jogador nem o script que ajusta os ícones de entrada na tela lidam com entradas específicas, o que ajuda a simplificar as coisas.





Eventos de Tempo Rápido (QTEs)
Into the Pit tem dois tipos de personalização de QTEs: Uma opção para QTEs fáceis no jogo padrão e uma opção para tornar os minijogos ocultos automáticos. Matthew Wojtechko fez grande parte do trabalho implementando os minijogos ocultos em primeiro lugar, e quando chegou a hora de implementar esse recurso de acessibilidade, ele sabia que poderia fazê-lo de uma maneira simples e direta.
As mecânicas únicas de cada minijogo de esconderijo herdam de uma classe base compartilhada. Isso tem uma flag PlayAutomatic que verifica os dados salvos para ver se o jogador tem essa configuração ativada ou não. O código a seguir foi simplificado:
public abstract class MechanicHidingMinigame
{
public bool PlayAutomatic { get; protected set; }
protected override void Awake()
{
PlayAutomatic = PlayerPrefs.GetInt(AccessibilityHandler.AUTO_HIDING_MINIGAMES_KEY) == 1;
}
}
Então, cada script de minijogo de esconderijo pode verificar essa flag para "jogar" o jogo automaticamente.
Por exemplo, no minijogo onde você precisa prender a respiração, controlamos o sistema de respiração nos momentos adequados:
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
}
Estilo de jogo personalizável
As seguintes personalizações são oferecidas no menu principal ao iniciar o jogo pela primeira vez. Embora soubéssemos que a maioria das personalizações é tradicionalmente desbloqueada após vencer um Five Nights at Freddy’s jogo na dificuldade mais difícil, queríamos desafiar esse padrão dando aos jogadores acesso a personalizações após vencer o jogo uma vez em qualquerdificuldade. Os jogadores podem personalizar o seguinte para uma experiência de estilo de jogo preferido:
- Personalizar a agressividade dos personagens.
- Ajustar a dificuldade dos minijogos de esconderijo.
- Aumentar ou diminuir a quantidade de pontos de verificação no jogo ajustando a frequência dos pontos de verificação.
- Opção para aumentar a qualidade da bateria que estende a duração das baterias da lanterna.
- Aumentar ou diminuir a quantidade de esconderijos no jogo.
- Aumentar ou diminuir a quantidade de dispositivos de ruído no jogo.
Na Mega Cat Studios, acreditamos que todos merecem jogar jogos, assim como todos merecem levar sustos em Five Nights at Freddy’s: No Poço (ou não levar sustos – há uma configuração para isso). Nos esforçamos para trazer excelência a todos os nossos projetos, o que significa expandir nosso kit de ferramentas de acessibilidade para nossa comunidade e fãs solidários. E se isso significar mergulhar em um poço de incertezas no desenvolvimento de jogos, mergulharemos animadamente, toda vez.
Só esperamos que não esteja assombrado.
