As pessoas associam jogos do last dos anos 70/início dos anos 80 com Invasores do Espaço e Pac-Manmas longe dos fliperamas, você provavelmente encontraria 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 Aventura na Caverna Colossal, Zork e suas sequências foram pioneiras no gênero de aventura em 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 period 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 digital. 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, você pode encontrar um monte de documentação excelente sobre como o Z-Machine funcionava aqui.)
De qualquer forma, agora, quase exatamente 50 anos após o lançamento do primeiro Zork jogo, há um web site que levanta a cortina do Z-Machine em tempo actual. O Zorker Visível é o trabalho de um especialista em ficção interativa André Plotkine 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 eu e II já estão disponíveis no web site há algum tempo, mas o de 1982 Zork III só foi adicionado em 1º de maio. É amplamente considerado o mais difícil da trilogia authentic 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. Zorka análise das entradas 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 period 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”, and so forth. – 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]” irá verificar se o substantivo está presente; em caso afirmativo, a função retornará a descrição do objeto em questão, e se não, você será informado “Você não pode ver nenhum [noun] aqui!”
Também há suporte para mais complexidade, como vemos aqui:
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 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, é para ver onde você está pulverizando a lata. Se você não especificar um native, 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 outline 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 specific pelo qual Zork III é lembrado é o notório Royal Puzzle, uma versão em tamanho actual de um daqueles quebra-cabeças onde você tem que deslizar as 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 period 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 transfer.
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 transfer – o jogo apenas atualiza sua posição para x:4 y:4 e take away 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. A totalidade de Zork III’O código-fonte do jogo – que inclui as listas de verbos/substantivos, as descrições de salas e objetos, o analisador, o interpretador ZIL e o código actual do jogo – pesa 92 KB. No whole. Não é bem Deserto Carmesim.
Ainda assim, também é interessante observar as muitas semelhanças entre como Zork III e os jogos modernos funcionam. 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. Definir bandeira [x] se evento importante [y] aconteceu. Acompanhe o que está no inventário do jogador. Acompanhe os cronômetros. O jogador acabou de ser atingido por um monstro? Subtrair [x] da 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 Anel Elden. Claro, as implementações desses conceitos são mundos separados, mas os conceitos em si permanecem os mesmos.
Ah, e finalmente: como qualquer Zork fã sabe, uma coisa que você deve tentar em cada jogo é 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 native 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!













