---
title: "Outcast 99"
date: 2026-10-12
language: pt
topics: ["AI", "game", "programming", "retro"]
source_url: https://willem.com/pt/2026-10-12_outcast-99/
---
# Outcast 99

*Um projeto de lazer na fronteira do possível*

> Outcast (1999) é uma obra de arte e um dos meus jogos preferidos de sempre: Cutter Slade, o planeta Adelpha, as suas paisagens de voxels e a sua banda sonora orquestral. Em três dias, com uma equipa de agentes de IA, trouxe-o nativamente para o meu portátil Linux, iPad, iPhone e Apple Vision Pro, em 3D estereoscópico. Um projeto de lazer, nada à venda, escrito com profundo respeito pelas pessoas que o fizeram e por todos os que ainda sonham com Adelpha.

## Uma obra de arte, à frente do seu tempo
O Outcast foi feito pela Appeal, na Bélgica, e lançado em 1999. Estava anos à frente do seu tempo. Um mundo aberto livre e vivo, dois anos antes de Grand Theft Auto III. Um motor de paisagens que desenhava colinas ondulantes, água refletora, profundidade de campo e bump mapping inteiramente em software, num Pentium III. Uma banda sonora de Lennie Moore, interpretada pela Orquestra Sinfónica de Moscovo e pelo seu coro, numa altura em que a música orquestral em jogos era rara. A GameSpot elegeu-o o jogo de aventura do ano.

E depois há a IA. A Appeal construiu um motor próprio para ela, chamado GAIA: Game Artificial Intelligence with Agents. Cada habitante de Adelpha era um conjunto de agentes autónomos com capacidades como visão, audição e acrobacia, a cooperar e até a competir para cumprir uma tarefa. Os soldados tocam as suas trombetas, tentam apanhar-te pelo flanco e procuram-te quando desapareces. Os Talan lembram-se de como os trataste e ajudam-te ou viram-te as costas. Até guardar o jogo faz parte do mundo: apertas o teu Gaamsaav, ele brilha e faz um som, e os guardas vêm ver. Em 1999!

Comprei-o na altura, mais do que uma vez. Anos depois, os fundadores originais, Yann Robert, Franck Sauer e Yves Grolet, recompraram os direitos e reconstruíram o jogo a partir do código-fonte original como Outcast 1.1, com resoluções mais altas e renderização em vários threads. Essa é a versão que voltei a comprar na GOG, e aquela de onde este projeto parte. Se nunca jogaste: [compra o Outcast 1.1 na GOG](https://www.gog.com/en/game/outcast). E se queres ver para onde Adelpha foi a seguir, há o Outcast: A New Beginning, feito pelo mesmo estúdio em 2024.

![Outcast 1.1 na minha coleção da GOG. Compra a tua própria cópia!](https://willem.com/global/images/57ac1a74f76e.webp)

Deixo isto claro desde o início: este é um projeto de lazer pessoal, uma homenagem. A adaptação não foi lançada e não o será sem a aprovação oficial dos seus criadores. Nenhum código, nenhum dado do jogo e nenhuma análise sai da minha casa. Precisas sempre da tua própria cópia do jogo.

## Cutter, meu velho amigo
Começou numa manhã de domingo no meu Framework 12 com Omarchy Linux. O Outcast 1.1 corria com o Wine, uma camada de compatibilidade para programas Windows, a cerca de 21 fotogramas por segundo. Já fazia algum tempo que não via o meu amigo Cutter Slade. Então veio a pergunta: até onde podemos ir?

![Cutter Slade no meu Framework 12, na primeira manhã](https://willem.com/global/images/c1f4dd5d4a2c.webp)

Mais longe do que pensava. Em vez de emular o jogo, os agentes transformaram o executável do Windows em código C portátil: uma recompilação estática. Cada uma das suas 66 968 funções passou a C, cerca de 48 MB. À volta disso está um runtime escrito à mão que faz o papel do Windows: memória, ficheiros, threads, DirectInput, DirectSound, a janela gráfica. SEM WINE, SEM EMULADOR!

![A falar com Zokrym, a correr nativamente em Linux: sem Wine, sem emulador](https://willem.com/global/images/50bb348d92e5.webp)

## Como funciona o lifter
O lifter lê cada instrução x86 e escreve o C que faz exatamente o mesmo. Parece simples até encontrares um motor tão engenhoso como o da Appeal. Usa instruções MMX e SSE para as paisagens, vírgula flutuante x87 com os seus próprios modos de arredondamento (a primeira versão nativa tinha falhas de cor até estes serem modelados) e 62 sítios onde o código se reescreve a si próprio enquanto corre, um truque clássico de uma época em que cada ciclo contava. Tudo isso precisou de extensões próprias sobre o lifter de código aberto de que partimos. Para termos a certeza de que o C faz o que o processador fazia, cada forma de instrução que o jogo usa foi testada contra um emulador de CPU, em Intel e em ARM.

A música revelou-se uma única gravação de 68 minutos que o motor toca por intervalos de tempo, com os seus próprios fades. Por isso o runtime ganhou um pequeno substituto da camada multimédia do Windows que toca esses intervalos no misturador de som. Na primeira vez que a banda sonora de Lennie Moore regressou na versão nativa, foi de certa forma épico.

A velocidade veio de medir, a cada passo. Dois pontos quentes no thread principal do jogo ganharam um substituto nativo: o descompressor dos pacotes de dados do jogo e a rotina que pinta o céu (de 2,15 ms para 0,37 ms por fotograma, verificado byte a byte contra o original ao longo de 1200 fotogramas). O MMX passou a ser código vetorial a sério. E o Outcast 1.1 já reparte a renderização por vários threads, uma grande razão pela qual voa em chips modernos. No Framework 12, o jogo passou de 21 fotogramas por segundo com o Wine para cerca de 76 nativamente. No iPad Pro corre a cerca de 90.

## Uma equipa de agentes
Nada disto foi escrito à mão. Três sessões do Claude Code trabalharam juntas como um pequeno estúdio: uma no portátil Linux para o recompilador e o runtime, outra no MacBook para o Xcode e as versões para iPad, iPhone e Vision Pro, e outra na máquina do meu homelab a coordenar as duas, a passar notas de dia e de noite. Eu joguei, testei e decidi. É a mesma configuração multiagente que move as pipelines de desenvolvimento nativo que construí para apps como o [Contact](https://willem.com/en/2026-10-02_the-idea-factory/), e o Outcast levou-a mais longe do que qualquer outro projeto antes. Há uma bela simetria nisto: um jogo cujas personagens eram movidas por agentes em 1999, levado para novos dispositivos por agentes em 2026.

![Primeiro dia: cair da cadeira umas quantas vezes](https://willem.com/global/images/9e837c8a8158.webp)

Isso significa também tokens. Depois de sete horas de iteração sem parar eram 180 milhões, no fim do primeiro dia 278 milhões, e ao terceiro dia mais de 1,4 mil milhões. Isto para um pequeno projeto de lazer. Mas aprendi imenso sobre motores de jogos, interação e a reinterpretação de uma obra de arte.

## A velocidade é o conceito
Um jogo em que te moves por um mundo é um tipo especial de software. Numa página web, uns milissegundos de atraso passam despercebidos. Num jogo, sentes cada um: os controlos ficam moles, a câmara atrasa-se, a magia perde-se. Aprendi isso com o [Thinc Ahead 3D](https://willem.com/en/2026-09-21_thinc-ahead-3d/) e o [Protect Your Eggs](https://willem.com/en/2026-09-13_protect-your-eggs/).

Na realidade virtual a margem é ainda mais pequena. No Vision Pro a imagem tem de seguir a tua cabeça, cada olho precisa da sua própria imagem, e qualquer soluço vai direto ao estômago. Isso exige o melhor de uma pipeline de desenvolvimento: medir cada fotograma, nunca adivinhar e manter o caminho de volta aberto. Cada otimização tem um interruptor que repõe o comportamento original, byte a byte.

## Adelpha em 3D
O Outcast desenha uma imagem plana por fotograma. Para obter 3D estereoscópico, os agentes foram à procura na memória do jogo e encontraram o que o motor da Appeal guarda para cada pixel: a sua distância, mesmo ao lado da sua cor. Com isso, a GPU constrói uma imagem para cada olho: cada pixel desloca-se para a esquerda ou para a direita conforme a sua profundidade, os buracos são preenchidos e o HUD fica à profundidade do ecrã. Custa cerca de 1,2 ms por fotograma na GPU, e as paisagens de 1999 ganham de repente profundidade real.

![A primeira tela nativa no Apple Vision Pro](https://willem.com/global/images/1ea693607bb7.webp)

![A tela no meu quarto, com o menu nativo ao lado](https://willem.com/global/images/ea8f59bfb335.webp)

Vê o vídeo abaixo: Outcast no Apple Vision Pro, jogado com um DualSense da PlayStation 5.



No Vision Pro, o jogo corre como uma app nativa de visionOS. A tela pende no teu quarto em 3D e, no modo imersivo, o panorama do céu do próprio jogo rodeia-te como uma cúpula que gira com o Cutter. Estar debaixo das luas de Adelpha é bastante intenso, e adoro.

![Modo imersivo: o céu de Adelpha por todo o lado, luas incluídas](https://willem.com/global/images/dbbb348ba424.webp)

![Modo imersivo numa ilha tropical de Adelpha](https://willem.com/global/images/1d63f95ce9c8.webp)

## Uma interface nativa
O estéreo tem um senão: o jogo desenha os menus e os textos das conversas na mesma imagem plana, por isso em 3D ficam espalhados pela cena. A única solução fiável foi dar à interface a sua própria camada. O runtime lê as conversas, a mochila, as notas, as armas, o mapa e os menus do próprio motor, e as apps desenham-nos nativamente: botões verdadeiros em que tocas, que olhas ou que selecionas com o comando. As palavras, as escolhas e a lógica continuam a ser da Appeal, com o mesmo tom e ritmo. A mochila conhece os 105 tipos de objetos, com os ícones e legendas do próprio jogo.

![Uma conversa, com a camada de texto nativa a verde](https://willem.com/global/images/46ab191f899d.webp)

![O anel de conversa como botões verdadeiros](https://willem.com/global/images/79878a433d26.webp)

![O ecrã das armas, desenhado nativamente](https://willem.com/global/images/7f866a2c1bd1.webp)

Até as letras são as do próprio jogo: o tipo de letra bitmap original de 1999 traçado em contornos vetoriais suaves, com o tipo de letra do sistema para o texto pequeno.

![Quatro maneiras de traçar o tipo de letra de 1999: o contorno suave ganhou](https://willem.com/global/images/3d2c4faac33f.webp)

## Controlos
Cada dispositivo joga de maneira diferente, por isso cada um ganhou os seus próprios controlos:

- **iPad:** o trackpad do Magic Keyboard roda a câmara, o teclado move o Cutter. Destaca o teclado e aparece em segundos uma sobreposição tátil: um manípulo para andar, um manípulo de olhar que continua a rodar quando o seguras na borda, e botões para ação, disparo, salto e pontaria.
- **iPhone:** toque, em paisagem, com a interface nativa ajustada a um ecrã pequeno.
- **Vision Pro:** o DualSense da PlayStation 5, com glifos da PlayStation nos botões e o clique do touchpad para o mapa.
- **Linux:** teclado e rato, como em 1999.

![O DualSense da PlayStation 5, o comando para o Vision Pro](https://willem.com/global/images/35c299f24ea4.webp)

## Um save, todos os dispositivos
Quero parar de jogar no portátil e continuar no iPad, ou no headset, sem pensar nisso. Por isso os agentes construíram um sincronizador de saves: um pequeno serviço em game.willem.com que guarda o save mais recente. Aperta o Gaamsaav e a ranhura é enviada, verificada com um hash SHA-256; ao arrancar, o jogo vai buscar um save mais recente de outro dispositivo e continua exatamente onde ficaste, como faz o botão "Continue" do launcher da GOG. O save mais recente ganha sempre e o histórico é mantido. Funciona porque os ficheiros de save são byte a byte iguais em todos os dispositivos: o motor é o mesmo em todo o lado.

![Continua onde ficaste: o mesmo save no iPad](https://willem.com/global/images/9be1d1853f05.webp)

## Uma base de código, quatro plataformas
O runtime em C é partilhado: Linux no ramo principal, Apple no seu próprio ramo que acompanha a linha principal. O iPad e o iPhone partilham uma app; o Vision Pro tem a sua própria app nativa em Swift e RealityKit em torno do mesmo motor. O nome Outcast 99 é uma vénia aos meus próprios jogos Snake '97 e Block 89.

| Dispositivo | Joga-se com | Velocidade |
|---|---|---|
| Framework 12, Linux | Teclado e rato | Cerca de 76 fps (Wine: 21) |
| iPad Pro M4 | Trackpad, teclado ou toque | Cerca de 90 fps |
| iPhone | Toque | Fluido, em paisagem |
| Apple Vision Pro | DualSense | 3D estereoscópico, céu imersivo |

## Conclusão
Este projeto é uma carta de amor a um jogo que ainda parece magia, 27 anos depois. Tudo o que o torna especial estava lá em 1999: o mundo, os agentes, a música, a história. Tudo o que fiz foi levá-lo para um vidro novo. Obrigado Yann Robert, Franck Sauer, Yves Grolet e todos na Appeal por terem feito o Outcast. Se nunca visitaste Adelpha, agora é uma boa altura: compra o jogo, aumenta a música e cumprimenta os Talan por mim. Ulukai, EM 3D!

[action1]
