"Meu amigo parser..."

Em computação, "parsing" é o processo de análise que um texto ou frase sofre, com o propósito de construir uma estrutura de dados processáveis dentro de certas regras. Portanto, parser é o programa que faz todo esse trabalho pra gente. Nos adventures ou aventuras interativas, o parser torna processável frases como "pegue o livro, a medalha, o colar e coloque tudo na mala".


Achou complicado? Pois saiba que não é nem um pouco difícil essa construção. O Editor de Adventures (criado anos 80 e onde foi feito o primeiro Amazônia) já resolvia frases como essa. O processo é bem simples: ele entende o verbo impositivo no começo da sentença, reconhece cada um dos objetos mencionados, entende que "tudo" é uma referência a esses objetos e que a mala é o objeto que deve receber os demais. Uma vez que o parser identificou os elementos, é como se ele indicasse para o sistema fazer o seguinte:

1- pegar o livro (verificando antes se é possível pegá-lo ou se ele já está com o jogador);

2- pegar a medalha (idem);

3- pegar o colar (idem);

4- colocar o livro na mala (verificando antes se o jogador possui a mala ou se ela está no mesmo local que o jogador, se ela está aberta ou fechada e ainda, se ela pode receber mais algum objeto e se pode receber especificamente este objeto, considerando-o por peso e tamanho);

5- colocar a medalha na mala (idem);

6- colocar o colar na mala (idem).

Se deu tudo certo, provavelmente haverá uma resposta simples, tipo "Ok, feito".

Agora veja esta outra construção: "pegue o livro, a medalha e coloque-a na mala". Traduzindo seria equivalente a...

1- pegar o livro (idem);

2- pegar a medalha (idem);

3- colocar a medalha na mala (idem);

Notou que a instrução para colocar algo na mala só serve para a medalha já que ela foi o último objeto mencionado antes de usar uma referência indireta (coloque-a).

Essa é a parte fácil de usar um parser, ou comandos digitados, nos jogos de aventura. A parte complicada de verdade é se preparar para o que vem pela frente e acredite, vem chumbo grosso. Na verdade a gente nunca consegue prever tudo o que o jogador pode pretender fazer numa partida e o grande barato dos adventures, construídos assim, é justamente prever o imprevisível.

Estruturas point & click, alternativas pré definidas ou ações induzidas são sistemas fáceis de resolver. Neles, quando a opção aparece para o jogador, tipo "pule o abismo", praticamente todas as questões relativas ao abismo já foram resolvidas, tipo estar diante dele, ser possível saltar ou não ou verificar alguma condição específica. É diferente, por exemplo, do jogador estar no meio de um lago, à noite, na maior escuridão possível e digitar "PULE O ABISMO".

Este é um caso onde o sistema não pode responder "NÃO SEI" ou "NÃO SEI FAZER ISSO" afinal ele deve ser capaz de saber como saltar um abismo pois a chance de ter um mais adiante é grande. Talvez uma resposta elaborada tipo "NÃO EXISTE" ou "NÃO VEJO NENHUM ABISMO POR AQUI" seja o suficiente. No entanto, dada a ação inusitada, talvez a melhor resposta fosse "ESTÁ SE REFERINDO AO ABISMO INTERIOR QUE ATORMENTA PESSOAS SOLITÁRIAS NO MEIO DE UM LAGO, EM PLENA NOITE ESCURA?". Seria assustadora uma resposta dessas.

A outra grande diferença entre a aventura interativa e o adventure por comandos digitados é que na aventura todas as opções codificadas são mostradas, em algum momento para o jogador e no caso do adventure, o jogador nunca sabe exatamente o que o jogo pode ou não fazer. Por exemplo:

"Você está diante de um grande portal, guardado por um guerreiro que o desafia.

Você pode enfrentá-lo, voltar por onde veio, fingir que é amigo e seguir adiante, examinar melhor o local ou o guerreiro e ver uma lista dos objetos que você está carregando."

Note que tudo o que é possível fazer neste local está explicitado e o jogador sabe de antemão que vai ter que escolher uma dessas alternativas.

No caso do adventure por comando digitado, a mesma situação seria assim:

"Você está diante de um grande portal, guardado por um guerreiro que o desafia.

O que vai fazer?"

Neste ponto o sistema está esperando que o jogador digite algo, que pode ser qualquer uma das opções:

   ENFRENTE O GUERREIRO
   LUTE COM O GUERREIRO
   MATE O GUERREIRO
   ABRACE O GUERREIRO
   EXAMINE O GUERREIRO
   VOLTE POR ONDE VEIO
   VÁ PARA O NORTE
   SUBA NA ESCADA
   DIGA O QUE TEMOS
   EXAMINE O LOCAL
   BEBA ÁGUA
   CANTE UMA CANÇÃO DE NINAR
   ETC...

Abrir um campo para entrada de uma frase comando é abrir as portas para infinitas possibilidades. É claro que o criador do jogo espera que o jogador seja coerente e digite algo que faça algum sentido naquela situação e ele tem que prever tudo o que é possível. O jogador pode inclusive digitar algo insano como COMA O GUERREIRO. E aí? Como o sistema responde a isso?

Há uma outra questão importante: não é producente que o sistema cheque os comandos posição por posição mas sim globalmente. Isso equivale a dizer que o jogador pode dar o comando MATE O GUERREIRO literalmente em qualquer posição do jogo, tendo ou não um guerreiro nela e se no jogo tiver mais de um guerreiro, a coisa complica ainda mais.

Por outro lado, usar em pontos selecionados o comando por frase digitada, pode resolver coisas como "DIGITE A SENHA" ou "FALE A PALAVRA AMIGO E ENTRE".


Ok, entendi

Recapitulando...

Índice das páginas