Eu me considero muito mais uma escritora, uma contadora de histórias, do que qualquer outra coisa – isso, e minha paixão por jogos tornam óbvio o meu interesse pela parte de escrita dos jogos – escrever os diálogos, a história, como interagir com o jogador…
No entanto, esta área de desenvolvimento ainda é bastante… nova, precisa de amadurecimento. Ainda é bastante complicado encontrar artigos sobre construção de diálogos – aliás, se alguém tiver algum link para recomendar, sinta-se à vontade – e mesmo em livros existe pouco material, coisa que dá para contar nos dedos da mão.
Ao mesmo tempo em que isso torna as coisas mais excitantes, já que há tanto a ser descoberto, explorado, delineado e analisado, ao mesmo tempo me deixa um pouco frustrada, já que eu gostaria de ao menos saber como os grandes nomes da indústria estão fazendo isso em dia.
Eu estou escrevendo um pequeno teste de diálogo, só para tentar aprender mesmo. O tema é super simples, é um jogo para ser jogado em cinco minutos, e mesmo assim eu estou me batendo para conseguir traçar a árvore de diálogo.
Não me entendam mal – não é que seja difícil criar um fluxograma com as opções de diálogo. O complicado é que, em pouquissimo tempo, um simples fluxograma de um pequeno diálogo pode se tornar algo… menos do que ótimo.
Exemplificando com uma imagem (borrada, porque eu não quero revelar meus planos ainda):

Fluxograma
Temos o início, algumas opções e uma estrela de convergência, que define qual a próxima etapa de acordo com o número de pontos do jogador. É algo super simples – o jogador deve fazer cerca de quatro ou cinco opções até chegar na estrela de convergência. Ainda assim, como certas opções se interceptam, e você pode chegar a uma opção D depois de A ou depois de C e B, as setas começam a se tornar confusas.
A função de um fluxograma, especialmente nesses casos, é mostrar um fluxo de informações, ou o caminho que leva do ponto A ao ponto B. É uma ferramente muitíssimo usada na hora de projetar jogos, especialmente sob um ponto de vista “macro”, como pode ser visto neste trecho do GDD de Grim Fandango (Aliás, você pode baixar o GDD aqui e ler mais sobre ele aqui):

Fluxograma de Grim Fandango
As caixas em paralelo mostram tarefas que podem ser executadas paralelamente (que coisa, não? ), mas todas as tarefas paralelas devem ser completadas antes de seguir para a próxima etapa. Sinceramente, eu só sei disso com certeza porque está escrito na página do GDD – senão eu não saberia dizer se eu preciso seguir apenas um dos caminhos pararelos ou todos eles.
Um fluxograma pode parecer uma boa idéia, e realmente é, mas não suficiente para mostrar com clareza uma complexa árvore de decisões (sejam elas feitas através de diálogos ou através de ações no mundo do jogo). Por exemplo, como mostrar em um fluxograma diferentes “pesos” para ações? Diferenças entre caminhos pararelos obrigatórios e entre caminhos paralelos mutuamente excludentes? Como diferenciar o caminho padrão do herói das suas side-quests?
Não que não existam maneiras de fazer isso com fluxogramas – cores e tamanho de caixa diferentes para diferentes ênfases em decisões, tracejados diferentes para “caminhos alternativos”, um quadrado ao redor de caminhos paralelos obrigatórios… enfim, existe toda uma maneira de representar tais coisas em um fluxograma, necessitando que o designer faça uma “legenda” e pense de maneira clara em cada uma dessas coisas.
O maior limite dos fluxogramas, sob o meu ponto de vista, é quando você deseja expressar algo cada vez mais linear. O que é irônico, já que um dos pontos que leva as pessoas da prosa para o fluxograma é, justamente, a necessidade de expressar algo que fica confuso quando descrito na extrema linearidade da prosa. Ainda assim, chega-se a um ponto no qual o fluxograma, sozinho, talvez não seja mais suficiente.
Digamos que eu tenha uma conversa. Existem diferentes caminhos, eu posso falar de diferentes maneiras – digamos, eu posso dizer com que tom de voz eu falei algo – nas mais diversas ordens. Como expressar isso em um documento? Não falo da implementação – uma maneira “simples” de implementar isso seria usando variáveis que expressem o quanto o personagem tem afinidade com você, o que você conhece, e definir quais opções e eventos devem ocorrer de acordo com essas variáveis. Mas como colocar isso de maneira concisa em um documento, no qual diversas pessoas possam olhar e ter uma visão geral, mas também a visão do ponto que elas desenvolvendo naquele momento?
Uma alternativa seria usar diversos fluxogramas, para dividir em camadas o fluxo mais importante, o fluxo romântico, um grande fluxo de uma sidequest, o fluxo da sua história com um determinado personagem secundário… mas seria essa a melhor alternativa? Como dividir isso de maneira a não fragmentar a compreensão? Como ter noção do quanto uma alteração em um dos fluxogramas pode alterar o restante do jogo?
Eu realmente gostaria de saber como eles lidaram com isso em Fallout, já que esse, a meu ver, é o maior exemplo de jogo no qual você tem múltiplos caminhos, que podem ser fechados devido às suas ações, mas sem te impedir de concluir o jogo.
Vocês tem alguma idéia? Já pararam para pensar nisso?
Talvez um sistema na qual cada bloco de diálogo possui uma etiqueta, e certos blocos podem liberar ou bloquear outros blocos?
Exemplo:
start :: +greeting
greeting :: +askName, +introduce
“Hello!”
“Hello, traveller. How may I be of service?”
askName :: +tellName, -introduce
“What is your name?”
“Perhaps you should consider that it might be impolite to ask such a question without first introducing yourself?”
introduce :: +!knowsInn, -askName, +askInnNameMotive:1
“My name is Erica, and I'm looking for some place to rest for tonight… Not very expensive, if possible. Do you know of any such place?”
“Ha, ha… Ah, yes, my youngling, I do. I am Mary, and I do happen to know such a place. It is the inn of my son, The Bent Walking Stick, just down the street from here.”
tellName :: +askInn
“My bad, my name is Erica.”
“Well met, young Erica. My name is Marta. How may I help you?”
askInnNameMotive :: +askInnNameMotive.yes, +askInnNameMotive.no
“The Bent Walking Stick? That's quite a funny name. Where did it come from?”
“Haha, my dear, this is such an old story… would you be interested in hearing it?”
Aqui, depois do nome de cada bloco, segue uma lista de blocos que são liberados ou bloqueados. Todos os blocos liberados são exibidos, exceto pelos que foram bloqueados por causa de outro bloco. Esses blocos seriam “memorizados” por cada personagem, para que as conversas possam ter continuidade depois. A sintaxe “+!” indicaria um flag sendo setado, que poderia ser usado fora do diálogo. A sintaxe “:n” indicaria que esse bloco está liberado, mas apenas “n” steps depois de ser liberado. No caso, o “:1″ quer dizer que a pergunta só pode ser feita imediatamente após esta.
Talvez este sistema permitiria diálogos bastante complexos, mas só de digitar esse diálogo já me pergunto se não seria muito difícil de desenvolver diálogo assim. Certamente não é tão fácil de visualizar como um fluxograma. Além do mais, não acho que as respostas da última pergunta tenham ficado elegantes dessa maneira. Não sei qual seria a melhor forma de lidar com isso, neste caso.
A pergunta que eu faço é… será que uma árvore de diálogos tão rica é realmente importante? Se você escrever uma árvore de um personagem com 50 falas, das quais só 10 vão ser vistas pelo jogador, talvez esse esforço seria melhor gasto criando diálogos mais lineares, porém mais detalhados. O truque seria dar ao jogador a ilusão da escolha, mas mantê-lo “sandboxed” até certo limite.
Nota mental: parar de escrever comentários gigantes que ninguém vai ter a paciência de ler.
@Rodrigo: M-M-M-Mas eu li o.o
Enfim, eu também adoro essa parte de storytelling. E mais ainda para jogos, já que você pode adicionar 'interatividade' (o único jogo que eu já vi, que realmente usa mais princípíos de interactive storytelling é Façade. Dê uma olhada depois, o conceito é bem legal, mas ainda não tem uma implementação perfeita.)
O grupo de game writers da IGDA tem um artigo interessante sobre essa parte de interactive storytelling, mostrando as diversas approachs no assunto: http://gwsig.quantumcontent.com/?p=13
Aliás, tem muita coisa legal lá. Eles normalmente lançam PDFs com white papers e tals. Bem interessante para quem é da área.
Eu iria comentar, mas o comentário do Rodrigo não só falou o que eu penso, como exemplificou perfeitamente, que é a idéia de etiquetas.
Nós nos acostumamos com hierarquia como as pastas em um computador ou na lineariedade dos jogos (o que, na minha opinião está sendo o defeito atual de muitos jogos [compare Zelda: Twilight Princess com Ocarina of Time]). Se é pra ser linear como Grimm Fandangos, Monkey Island ou algo do tipo, que faça um jogo que exija que o jogador pense!
Tudo bem, temos exceções, como você mesma disse, tem Fallout. Mas, de novo, é exceção (palavrinha feia essa).
Minha sugestão é experimentar ver o sistema com etiquetas hierárquicas, adicionando ao sistema proposto pelo Rodrigo a possibilidade de sidequests e outros diálogos.
Essa idéia é boa, e eu acho que já até vi algumas implementações dela por aí.
A questão é justamente o que você falou: isso rapidamente fica não muito visível.
Ademais, sim, é possível questionar o que você disse – Isso dá muito trabalho, e será que realmente vale à pena?
A questão é que DEVERIA valer à pena. Não apenas em termos de não-linearidade, mas como criar personagens, e não apenas paredes que respondem às suas perguntas? Você até colocou um pouco disso no seu pequeno exemplo: se você apenas perguntar o nome da pessoa, ela vai te achar mal educado e você vai ter que se apresentar primeiro.
E essa área de pesquisa pode ter resultados que não apenas complicam, mas que também simplificam o trabalho do desenvolvedor: por exemplo, e se existisse uma maneira de elaborar árvores genéricas que seriam personalizadas de acordo com as caracteristicas do NPC, criando diversos cenários a partir de uma única base?
Dear, o tipo de pessoa que lê o meu blog provavelmente vai ler seu comentário, já que meus textos também não são lá muito pequenos… xD
Valeu! Dei uma olhada por cima e realmente pareceu bem interessante!
(aliás, eu deveria fazer sub-títulos nos meus posts para facilitar a vida de quem está decidindo se vai ler o texto ou não, mas, enfim…)
Vou ver se imprimo ou leio na tela do pc mesmo…
@miwi @killdream – hehe, ok ^_^”
Achei informação sobre os diálogos de Fallout 1 e 2, mas parece ser um sistema bastante primitivo e “manual”… Um diálogo complexo seria extremamente inconveniente de se fazer.
http://www.duckandcover.cx/forums/viewtopic.php...
Tem um exemplo nesse primeiro post.
Achei uma thread explicando o formato de diálogo do Fallout 1 e 2:
http://www.duckandcover.cx/forums/viewtopic.php...
Parece ser bem primitivo. Diálogos complexos seriam bastante chatos de se desenvolver nesse formato, ao que me parece…
Ou o blog está comendo meus comentários, ou algum sistema de moderação foi recentemente ligado… Caso seja moderação, favor desconsiderar meu double post anterior. :3
O Disqus estranhou aquele link e achou que era Spam
Já tirei da fila de Spam
Olá Srta. Miwi!
Descobri seu blog a pouco, pelo blog do Futuron. A primeira coisa interessante nele é o fato de tu ser uma garota que se interessa muito por desenvolvimento de games. (tu sabe que isso é como um cometa que passa ou ouvir um stradivarius cantarolar. raro… bom, talvez não nessas proporções, mas é) Contudo, se a coisa ficasse nisso, eu só teria dado uma olhadela rápida e logo me veria vendo outra coisa, confinando esse teu endereço no esquecimento. Mas seus textos são bons por merecimento. Inspiram; colocam questões realmente importantes à tona, são bem escritos e soam como uma agradável conversa. Em miúdos: gostei!
Voltarei sempre!
Ah… e já vou colocar em prática algumas coisas que tu abordou aqui. Me inspirou mesmo. ^^
Bjo
Excelente e extremamente intrigante, tanto o texto quanto o assunto.
Sobre ter pensado, já havia pensado, mas de uma forma bastante superficial…digamos que essa análise profunda que você fez foi bem interessante de ter lido, já que, como havia pensado de maneira muito simplória sobre o assunto, acabou trazendo muitas questões à tona, hehe.
De qualquer modo, é um assunto interessante já que diversos jogos (que se incluem nos meus favoritos, na grande maioria) tem trazido esse tipo de “esquema”. Lembro até hoje do Indigo Prophecy (Farenheit na europa), um excelente adventure pra PC que meio que “marcou” minha vida juro). E também o Oblivion, jogo anterior ao Fallout 3 também da bethesda. Além disso, o Nintendo DS cada dia ganha mais adventures e adventures novels que implementa de forma mais completa os esquemas dos diálogos e até onde tal resposta pode levar.
É legal notar que a interatividade com os games, a apresentação dos personagens e proximidade e carisma que estão sendo desenvolvidos tem cativado cada vez mais, provávelmente, pela realização de fluxogramas
Olá! Primeira visita ao seu blog, não foi nesse post mais o título me chamou atenção!
Bem, não sou da área de games, nem muito menos trato de temas relacionados. Mas, como um bom computeiro, me meto em todos os assuntos.
Gostaria de sugerir a você uma olhada na sintaxe e na semântica das Redes de Petri Coloridas. Tais redes são um modelo abstrato para representação de processo concorrentes envolvendo tomadas de decisão complexas, como por exemplo o “nível de carisma” de um personagem. A versatilidade de tal modelo proporciona sua aplicação nos mais diversos campos.
Talvez o modelo em si não seja de grande utilidade, mas seu funcionamento pode inspirá-la na criação de um novo conceito para aplicação em jogos.
As melhores referências você encontrará no meio acadêmico.
No mais, sucesso! Seu blog é muito interessante! Em particular, gostei da sensatez na escrita do post “Todo software tem seu preço''. E, se me permite, estarei linkando seu texto em meu blog no Under-Linux.org.