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:
- Tokenização das palavras
- Identificação de verbos e substantivos
- Resolução de pronomes (it, them)
- Desambiguação de objetos
- 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 zork2. 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 && make3. Compile o jogo:
cd zork1
zilf zork1.zil4. Execute com Frotz:
frotz zork1.z5Modificando 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.

