Voltar para o Blog

Microsoft Libera Código do Zork Como Open-Source: A História dos Jogos de Texto

Olá HaWkers, a Microsoft surpreendeu a comunidade de desenvolvedores e gamers ao liberar o código-fonte de Zork I, II e III sob a licença MIT. Este movimento preserva uma parte fundamental da história da computação e dos videogames, tornando-a acessível para estudo e modificação.

Por que um jogo de quase 50 anos ainda importa para desenvolvedores modernos? Vamos explorar a história, o código e o que podemos aprender com este clássico.

O Que É Zork

Para quem não conhece, Zork é uma série de jogos de aventura baseados em texto criados no final dos anos 1970. O jogador explora um vasto mundo subterrâneo digitando comandos em linguagem natural.

Exemplo de Gameplay

West of House
You are standing in an open field west of a white house,
with a boarded front door.
There is a small mailbox here.

> open mailbox
Opening the small mailbox reveals a leaflet.

> read leaflet
"WELCOME TO ZORK!
ZORK is a game of adventure, danger, and low cunning..."

> go north
North of House
You are facing the north side of a white house...

Importância Histórica

Marcos alcançados:

  • Um dos primeiros jogos comerciais de computador
  • Pioneiro em processamento de linguagem natural
  • Influenciou toda a indústria de games de aventura
  • Vendeu mais de 1 milhão de cópias na época

Timeline:

  • 1977: Versão original criada no MIT
  • 1979: Fundação da Infocom
  • 1980-1982: Lançamento de Zork I, II e III
  • 1986: Infocom adquirida pela Activision
  • 2023: Activision adquirida pela Microsoft
  • 2025: Código liberado como open-source

Por Que a Microsoft Liberou o Código

A decisão de tornar Zork open-source reflete uma tendência crescente de preservação de patrimônio digital.

Motivações da Microsoft

Razões declaradas:

  • Preservação histórica
  • Valor educacional do código
  • Relações públicas positivas
  • Custo zero de manutenção

Benefícios para a comunidade:

  • Estudo de técnicas de parsing
  • Análise de design de jogos
  • Base para projetos educacionais
  • Preservação de história da computação

💡 Contexto: A Microsoft tem gradualmente liberado código histórico, incluindo MS-DOS e GW-BASIC, como parte de iniciativas de preservação.

Explorando o Código do Zork

O código do Zork foi escrito em ZIL (Zork Implementation Language), uma linguagem derivada de LISP criada especificamente para jogos de texto.

Estrutura do Projeto

O repositório contém:

Arquivos principais:

  • /zork1/ - Código fonte do Zork I
  • /zork2/ - Código fonte do Zork II
  • /zork3/ - Código fonte do Zork III
  • /zilf/ - Ferramentas de compilação
  • /docs/ - Documentação original

Exemplo de Código ZIL

<ROOM WHITE-HOUSE
    (DESC "West of House")
    (IN ROOMS)
    (LDESC "You are standing in an open field west of a white house,
            with a boarded front door.")
    (EAST TO BEHIND-HOUSE IF WINDOW IS OPEN)
    (WEST TO FOREST-1)
    (NORTH TO NORTH-OF-HOUSE)
    (SOUTH TO SOUTH-OF-HOUSE)
    (FLAGS OUTSIDEBIT ONBIT)
    (GLOBAL WHITE-HOUSE BOARD FOREST)>

<OBJECT MAILBOX
    (DESC "small mailbox")
    (IN WHITE-HOUSE)
    (SYNONYM MAILBOX BOX)
    (ADJECTIVE SMALL)
    (FLAGS CONTBIT)
    (ACTION MAILBOX-F)
    (CAPACITY 10)>

<ROUTINE MAILBOX-F ()
    <COND (<VERB? OPEN>
           <COND (<FSET? ,MAILBOX ,OPENBIT>
                  <TELL "It's already open." CR>)
                 (T
                  <FSET ,MAILBOX ,OPENBIT>
                  <TELL "Opening the small mailbox reveals a leaflet." CR>)>)>>

Este código define a sala inicial e o mailbox, mostrando como objetos e interações eram programados.

O Parser de Linguagem Natural

Um dos aspectos mais impressionantes do Zork era seu parser de linguagem natural, avançado para a época.

Capacidades do Parser

Comandos que funcionavam:

  • "open the mailbox" (básico)
  • "put the sword in the case" (preposições)
  • "give the treasure to the troll" (objetos indiretos)
  • "take all but the lamp" (exceções)
  • "examine the painting carefully" (advérbios)

Arquitetura do Parser

O parser do Zork funcionava em camadas:

Etapas de processamento:

  1. Tokenização das palavras
  2. Identificação de verbos e substantivos
  3. Resolução de pronomes (it, them)
  4. Desambiguação de objetos
  5. Execução da ação

Limitações conhecidas:

  • Vocabulário finito (~1000 palavras)
  • Algumas construções não reconhecidas
  • Respostas genéricas para comandos desconhecidos

🔥 Curiosidade: Muitas técnicas usadas no parser do Zork influenciaram o desenvolvimento de chatbots e assistentes virtuais décadas depois.

Lições Para Desenvolvedores Modernos

O código do Zork oferece insights valiosos sobre design de software, mesmo 50 anos depois.

Princípios Atemporais

1. Economia de recursos:
O Zork rodava em computadores com 64KB de RAM. Desenvolvedores eram forçados a otimizar cada byte.

2. Design orientado a dados:
Salas, objetos e ações eram definidos de forma declarativa, separando dados de lógica.

3. Experiência do usuário:
Apesar das limitações técnicas, o jogo priorizava feedback claro e respostas naturais.

4. Modularidade:
O código era organizado de forma que permitia expansão e manutenção.

Aplicações Modernas

Conceitos que ainda usamos:

  • State machines para fluxo de jogo
  • Parsing de entrada de usuário
  • Sistemas de inventário
  • World building procedural

Áreas que evoluíram:

  • NLP moderno usa transformers, não regras
  • Gráficos substituíram texto em games mainstream
  • RAM e storage são abundantes
  • Mas elegância ainda importa

Como Executar e Modificar Zork

Se você quer experimentar o código, aqui está como começar.

Pré-requisitos

Ferramentas necessárias:

  • Git para clonar o repositório
  • ZILF (Zork Implementation Language Formatter)
  • Frotz ou outro interpretador Z-machine

Passo a Passo

1. Clone o repositório:

git clone https://github.com/microsoft/zork.git
cd zork

2. Instale o ZILF:

# No macOS com Homebrew
brew install zilf

# No Ubuntu/Debian
sudo apt-get install zilf

# Ou compile do source
git clone https://github.com/zilf/zilf.git
cd zilf && make

3. Compile o jogo:

cd zork1
zilf zork1.zil

4. Execute com Frotz:

frotz zork1.z5

Modificando o Jogo

Experimente adicionar uma nova sala:

<ROOM MY-ROOM
    (DESC "Developer's Den")
    (IN ROOMS)
    (LDESC "You are in a cozy room filled with vintage computers.
            The glow of CRT monitors illuminates ancient code.")
    (NORTH TO WHITE-HOUSE)
    (FLAGS LIGHTBIT)>

O Legado dos Jogos de Texto

Zork representa uma era onde a imaginação do jogador completava a experiência. Este legado continua vivo.

Interactive Fiction Hoje

Comunidade ativa:

  • IFComp (competição anual de IF)
  • Ferramentas modernas como Inform 7, Twine
  • Milhares de jogos gratuitos disponíveis
  • Uso em educação e terapia

Ferramentas recomendadas:

  • Inform 7: Linguagem natural para IF
  • Twine: IF com hyperlinks, visual
  • Ink: Engine da Inkle (80 Days, Sorcery!)
  • ChoiceScript: Para jogos estilo "choose your adventure"

Influência na Indústria

Jogos que herdaram DNA do Zork:

  • Adventure games da LucasArts
  • Visual novels japonesas
  • Walking simulators modernos
  • Elementos de RPGs de texto

Conceitos que persistem:

  • Parser de comandos em jogos
  • Descrições atmosféricas
  • Puzzles baseados em inventário
  • Narrativa não-linear

O Futuro da Preservação de Código

A liberação do Zork levanta questões sobre preservação de software histórico.

Por Que Preservar Código Antigo?

Argumentos a favor:

  • História da computação merece preservação
  • Código antigo tem valor educacional
  • Técnicas podem ser redescobertas
  • Patrimônio cultural digital

Desafios:

  • Licenciamento complexo
  • Código proprietário de empresas extintas
  • Dependências de hardware obsoleto
  • Falta de documentação

Iniciativas de Preservação

Organizações atuantes:

  • Software Preservation Network
  • Internet Archive (archive.org)
  • Computer History Museum
  • GitHub Archive Program

Conclusão

A liberação do código do Zork é mais do que nostalgia. É uma oportunidade de estudar como desenvolvedores do passado resolviam problemas complexos com recursos limitados. As técnicas de parsing, design de interação e economia de recursos são lições valiosas mesmo na era de GPUs de teraflops e terabytes de RAM.

Para desenvolvedores curiosos, explorar o código do Zork é uma viagem no tempo que ilumina o presente. As fundações da computação interativa estão ali, escritas em LISP, esperando para serem descobertas.

Se você se interessa por história da programação e como chegamos até aqui, recomendo que dê uma olhada em outro artigo: Introdução ao JavaScript Moderno ECMAScript 6 onde você vai descobrir como a linguagem mais popular da web evoluiu ao longo dos anos.

Bora pra cima! 🦅

Comentários (0)

Esse artigo ainda não possui comentários 😢. Seja o primeiro! 🚀🦅

Adicionar comentário