The Visible Zorker permite que você veja como os jogos funcionavam nos anos 80

The Visible Zorker permite que você veja como os jogos funcionavam nos anos 80

As pessoas associam os jogos do final dos anos 70/início dos anos 80 com Space Invaders e Pac-Man, mas longe dos fliperamas, é provável que você encontre os primeiros entusiastas de computadores domésticos debruçados e coçando a cabeça sobre um tipo de jogo muito diferente. Junto com seu antecessor espiritual Colossal Cave Adventure, Zork e suas sequências foram pioneiros no gênero de aventura de texto, jogos baseados em analisador sem gráficos que passaram por um renascimento sob o título mais intelectual de “ficção interativa”.

Além de ser o primeiro de uma série de sucessos do início e meados dos anos 80 para seu estúdio, Infocom, Zork foi uma verdadeira conquista do ponto de vista técnico. A popularidade do jogo se devia, pelo menos em parte, à sua portabilidade – ele podia rodar em um Commodore 64 tão facilmente quanto em um PC 8086 ou ZX Spectrum, o que era uma grande vantagem em uma época em que os consumidores podiam escolher entre dezenas de microcomputadores, cada um em grande parte incompatível com os outros.

A versatilidade do jogo se deveu à decisão inovadora da Infocom de basicamente rodar seus títulos no que chamou de Z-Machine – essencialmente, uma implementação muito inicial de uma máquina virtual. O jogo e seus sucessores foram escritos na linguagem de implementação Zork de alto nível proprietária da Infocom, que foi então compilada em um conjunto de instruções de nível inferior chamado Z-Code, que foi executado pelo ambiente Z-Machine. Isso significava que, em vez de ter que reescrever seus jogos do zero para cada novo sistema que desejava suportar, a Infocom precisava apenas escrever um novo interpretador Z-Code para cada sistema. (Para qualquer pessoa interessada, uma série de documentação excelente sobre como o Z-Machine funcionava pode ser encontrada aqui.)

De qualquer forma, agora, quase exatamente 50 anos após o lançamento do primeiro jogo Zork, existe um site que levanta a cortina do Z-Machine em tempo real. O Visible Zorker é o trabalho do especialista em ficção interativa Andrew Plotkin e rastreia o estado de um jogo enquanto ele está em execução, permitindo ao jogador ver como o Z-Machine coloca seus comandos em ação. O efeito é como dirigir um carro com o capô aberto para que você possa ver exatamente o que pressionar o pedal do acelerador faz no motor – exceto, você sabe, mais seguro.

Zorks I e II estão disponíveis no site há algum tempo, mas Zork III de 1982 só foi adicionado em 1º de maio. É amplamente considerado o mais difícil da trilogia original e, como é o único que nunca resolvi na primeira vez, fiquei fascinado ao examinar seu funcionamento interno.

Então, o que há para ver? Bem, uma coisa interessante a fazer é observar o funcionamento interno do analisador. A análise de entrada de Zork certamente não é perfeita, e muitos de nós passamos horas tentando fazer com que o jogo entendesse algo que queríamos tentar fazer. (A fala era um problema específico para os primeiros analisadores: comandos como “diga ao ladrão para devolver o ouro” ou “Ladrão, devolva meu ouro” geralmente eram recebidos com perplexidade: “Não entendo ‘ouro’ nesse contexto.”)

No entanto, o analisador Infocom é simples e elegante, especialmente dada a idade do jogo. Baseia-se em duas listas simples: uma de verbos e outra de substantivos. A maioria dessas palavras tem sinônimos e abreviações – “lâmpada” funcionará para “lanterna”, “n” para “norte”, etc. – e também há tolerâncias para erros ortográficos. Cada verbo tem uma função associada, algumas das quais requerem substantivos como argumentos e outras que podem funcionar nos dois sentidos. “Look” retornará a descrição da sala atual, enquanto “look (at) (noun)” verificará se o substantivo está presente; se sim, a função retornará a descrição do objeto em questão e, caso contrário, você será informado “Você não consegue ver nenhum (substantivo) aqui!”

Também há suporte para mais complexidade, como vemos aqui:

© O Zorker Visível

Este código trata da pulverização de uma lata de repelente Frobozz Magic Grue. (Grues, como qualquer fã sabe, são monstros que se escondem no escuro e comem os tolos que se aventuram em áreas sem luz sem tocha ou lanterna.) Veja como funciona:

© O Zorker Visível

O jogo primeiro verifica se a lata está vazia. Caso contrário, ele verifica se você disse “Burn can”; nesse caso, você se explode e o jogo termina. Caso contrário, é importante ver onde você está pulverizando a lata. Se você não especificar um local, o jogo assumirá que você está apenas espalhando-o no ar e, nesse caso, será basicamente desperdiçado. (Observe também que o jogo ajuda você um pouco aqui – se você digitar “Lata de spray”, ele perguntará em que você deseja pulverizar a lata.)

De qualquer forma, você borrifa a lata em si mesmo e fica protegido da tristeza por cinco turnos. O jogo inicia um cronômetro (“I-SPRAY”, que monitora quantas voltas se passaram desde que você se pulverizou) e define alguns sinalizadores: “SPRAYED?”, que monitora se você se pulverizou e “SPRAY-USED?”, que monitora se a lata foi esvaziada. Também vemos aqui como é fácil deixar o jogo em um estado invencível: se você borrifar o repelente em algo que não é você, então você estará sem sorte.

Se há algo em particular pelo qual Zork III é lembrado, é o notório Royal Puzzle, uma versão em tamanho real de um daqueles quebra-cabeças em que você tem que deslizar peças em torno de uma grade. Resolver um quebra-cabeça como esse já seria bastante difícil em um jogo com uma representação gráfica do ambiente; resolvê-lo em um jogo de texto baseado em analisador, mesmo com a ajuda rudimentar que o jogo oferece, requer a consciência espacial de algum tipo de sábio arquitetônico e/ou a paciência de um santo.

Não ter nenhuma dessas coisas significava que Zork III era o único jogo de Zork que eu não resolvi quando criança, e fiquei interessado em ver como o jogo acompanhava os vários componentes do quebra-cabeça e suas respectivas localizações. Acontece que uma grande parte do código do jogo é dedicada ao quebra-cabeça, conhecido internamente como “quebra-cabeça chinês”. Cada posição na grade 6×6 é armazenada como um único número em uma matriz de 36 elementos, com a posição de várias paredes sendo atualizada à medida que o jogador as move.

Você pode pensar que haveria 36 salas no quebra-cabeça, mas não – há apenas uma, provavelmente porque adicionar 36 salas praticamente idênticas ao jogo seria um desperdício de memória. (Para referência, existem cerca de 60 salas em todo o resto do jogo.) A sala de quebra-cabeça única é sempre a sala que abriga o jogador, o que exige que o jogo acompanhe coisas como itens e troque-os dentro e fora da sala conforme necessário: digamos que você deixe cair sua espada na sala com coordenadas x: 3 y: 4, depois mova-se para o leste. Na verdade, você não se move – o jogo apenas atualiza sua posição para x:4 y:4 e remove a espada. Se você se mover para oeste novamente, o jogo lembrará que esta é a sala onde você deixou cair a espada, então atualiza sua posição novamente e devolve a espada para a sala.

Otimizações como essa são importantes quando você trabalha com o tipo de restrições de espaço impostas no início da década de 1980 — e essas restrições eram bastante severas. Todo o código-fonte do Zork III – que inclui as listas de verbos/substantivos, as descrições de salas e objetos, o analisador, o interpretador ZIL e o código do jogo real – pesa 92 KB. No total. Não é bem o Deserto Carmesim.

Ainda assim, também é interessante observar as muitas semelhanças entre o funcionamento do Zork III e os jogos modernos. Em última análise, um jogo é apenas uma coleção de variáveis ​​de estado: algum jogador já esteve nesta sala? Eles mataram esse monstro? Eles conversaram com esse NPC e receberam essa missão? A que distância eles estão da missão? O que eles estão carregando agora? Em que nível está a saúde deles? Como o mundo do jogo mudou desde o início do jogo?

A maneira como um jogo moderno lida com essas coisas pode certamente ser muito mais sutil do que em 1982 – Zork não tem nada como missões de vários estágios, por exemplo – mas os princípios são essencialmente os mesmos. Defina o sinalizador (x) se um evento importante (y) tiver acontecido. Acompanhe o que está no inventário do jogador. Acompanhe os cronômetros. O jogador acabou de ser atingido por um monstro? Subtraia (x) de sua saúde. A saúde deles está abaixo de 0? Sim? Oh céus. É hora de executar a função JIGS-UP e então restaurar seu último savegame.

Nesse aspecto, há muito pouca diferença entre Zork e Elden Ring. Claro, as implementações desses conceitos são mundos separados, mas os conceitos em si permanecem os mesmos.

Ah, e finalmente: como qualquer fã de Zork sabe, uma coisa que você deve tentar em todos os jogos é digitar “Olá, marinheiro” – é como o equivalente Zork do código de trapaça da Konami, na medida em que é algo que você tenta inserir na expectativa de que algo possa acontecer como resultado. A questão é que, em todo Zork (onde a frase é encontrada pela primeira vez) e Zork II, a única resposta que você recebe é “Nada acontece aqui”. A implicação é que algo acontecerá em outro lugar, mas nunca acontece. No entanto! Em Zork III, há um local onde a mensagem se torna “Nada acontece ainda”. E se você esperar o suficiente, então vejam só: chega a hora, vem o velho marinheiro!

© O Zorker Visível

Share

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *