"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