segunda-feira, 7 de março de 2022

projeto arlequim pt.3: o fluxo de uma cena


Uma cena no jogo não tem a intenção de simular uma cena narrativa normal, não mais do que combate em video games costumam se assemelhar a cenas de combate em outras mídias. O foco é mais no game design e no fluxo da cena em direção à certos momentos significativos de mudança no estado do mundo, como dois personagens mudando a relação entre um e outro, ou um personagem ganhando uma característica nova de personalidade.

Para simplificar um problema comum de narrativas procedurais, a sequência de causalidade entre uma série de eventos, a ideia é que um evento não proceda outro de forma direita, quero dizer, com uma relação direta de causalidade. A relação entre dois eventos ocorrendo é mais lateral. Quando um evento ocorre ele altera o estado do mundo daquela cena, o próximo evento a ocorrer é influenciado por esse estado do mundo e influencia ele em retorno.

Os eventos que ocorrem em uma cena influenciam sim um ao outro, não são 100% aleatórios e desconexos, mas essa influência ocorre de forma lateral através do estado do mundo que ambos compartilham, sem que um evento leve à outro de forma direta. Esse é um tipo de causalidade mais difícil de autorar em um sistema procedural, seja por que exige um sistema com uma capacidade mais complexa de identificar padrões em uma simulação ou por que exige mais conteúdo gerado por parte do desenvolvedor.

Quando eu falo do estado do mundo me refiro a duas coisas, os personagens que fazem parte desse mundo e as características que compõe cada um, e o contexto atual da cena, os aspectos que ela acumulou até o momento.

Um ato numa cena, que não é nada mais complexo que uma ação atômica, como um personagem discutindo com outro durante uma briga, ou contado uma piada para os amigos, ou acertando um soco em um oponente, só pode ser "gatilhado" em uma cena se cumprir certos pré requisitos. Um personagem acertar outro com um soco por exemplo, pode exigir que esse personagem seja agressivo, tenha uma opinião muito negativa do seu alvo ou esteja com o humor muito bravo.

Esse evento portanto faz referência ao estado do mundo, o humor, a personalidade ou as relações de um personagem, para saber se pode ocorrer ou não, e sendo influenciado pelo estado do mundo ele também é influenciado por eventos que afetaram esse estado do mundo. Digamos que um evento passado em que um personagem A provoca um personagem B levou o personagem B a ficar exaltado e isso cumpriu os pré requisitos para que o evento do soco pudesse ocorrer. O sistema não racionaliza que a provocação levou o personagem provocado a bater no outro, o que é mais rígido e complexo de autorar, o primeiro evento simplesmente atualizou o estado do mundo permitindo que o segundo evento cumprisse seus pré requisitos.

Isso segue o princípio de Quality Based Narrative e permite que unidades narrativas sejam autoradas de forma quase auto contida sem que o desenvolvedor ou o sistema tenham que lidar com uma sequência de causalidade mega complexa. Uma unidade narrativa só especifica os pré requisitos para acontecer de forma lógica e coesa e múltiplos outros acontecimentos que levem o estado do mundo a cumprir esses requisitos podem se tornar a possível causa dessa unidade narrativa poder ocorrer.

Além de ter pré requisitos, todo ato (um evento) em uma cena também é sensibilizado para certos aspectos. Esses aspectos, cujo conjunto total eu ainda estou no processo de iterar, fazem referência ao tipo de evento ocorrendo, como conflito, amizade, interferência, introspecção, e por aí vai. Um ato tem mais chance de ocorrer se os aspectos a que ele está sensibilizado são mais prevalentes na cena. A ideia é ter um modo flexível e genérico de fazer com que eventos semelhantes influenciem a frequência um do outro por compartilharem aspectos.

Apesar dos atos não levarem uns aos outros de forma linear, eu no momento estou planejando as cenas meio que de forma a criar certas sequências, para que uma cena tenha caminhos possíveis e contrastantes que ela pode tomar dependendo do RNG e dos personagens que o jogador botar dentro dela.

Isso pode envolver coisas como certos atos exigindo que um personagem esteja com o humor em um certo estado e um ato "preparatório" que dirige o humor do personagem para aquele ponto. Dessa forma o jogador pode ver um evento alterando o humor do personagem acontecer algumas vezes e depois eventos novos que ocorrem em decorrência dessa mudança, passando a ideia de um arco narrativo?? talvez??

fluxo de atos expressivos na cena teste de discussão verbal

 

Na hora de planejar o conjuntos de atos narrativos que podem ocorrer, eu tenho organizado eles em volta de aspectos chave que simbolizam bem os múltiplos caminhos que uma cena pode seguir. Na cena de discussão por exemplo, um caminho de conflito leva os personagens discutindo a ficarem cada vez mais agressivos uns com os outros e potencialmente piorarem ainda mais sua relação, enquanto um caminho de harmonia pode levá-los a superar a inimizade ou pelo menos não piorar as coisas.

A ideia é que o jogador assista os pequenos atos acumulando esses aspectos em direções diferentes, levando a cena a se concluir em uma situação de conflito ou de harmonia por exemplo, o que foi de certa forma um pouco influenciado por esse texto sobre estados narrativos, da Emily Short. A diferença é que no momento, a conclusão da cena não acontece de forma determinista e ainda usa aleatoriedade ponderada.

Uma cena com uma grande quantidade de "conflito" não vai necessariamente se concluir com um ato de conflito, apenas possui mais chance disso. Eu venho refletindo sobre a possibilidade de experimentar com esse determinismo apenas no ato conclusivo, que é um momento importante para marcar a identidade da cena e sumarizar o que ocorreu.

Também venho refletindo sobre o algoritmo que calcula a influência dos atributos na chance de um ato ocorrer. No momento atribuir um aspecto minoritário a um ato imediatamente mina a chance dele de ocorrer, visto que esse aspecto sempre vai ser um porcentagem minúscula do contexto da cena. Estou pensando na possibilidade de testar adicionar um peso adicional aos aspectos dependendo da proporção total deles no deck de atos da cena.

Quer dizer, se o aspecto harmonia aparece apenas três vezes entre os atos de uma cena, ele terá um peso três vezes maior quando compor o contexto da cena que um aspecto que aparecer nove vezes no deck total. Isso significa que quando um dos poucos atos de harmonia acontecer, isso aumentará significativamente a chance de outros atos de harmonia.

Isso tem o risco de causar o problema oposto, dificultando a presença dos aspectos mais básicos e fundamentais da cena, que passariam a ter uma influência bem mais reduzida. Acho que isso seria mitigado pelo fato dos atos serem tratados como cartas em um baralho sendo sorteadas uma depois da outra. O jogo sorteia um ato da lista e depois roda um algoritmo de rejeição para ver se aceita que aquele ato seja executado, que é onde entra a influência dos aspectos da cena. Se a maioria dos atos no baralho são de conflito, eles ainda tem mais chance de serem sorteados mesmo que o peso do algoritmo beneficie os aspectos mais raros.

Sem comentários:

Enviar um comentário

Floreio, minha gramática de geração procedural de texto

Gostaria de falar um pouco da ferramenta de geração procedural de texto por gramática de substituição que eu venho desenvolvendo na Unity pa...