Members of Le Chifre team:
The core idea of our project was to create something more interactive than pure text generation. Given our shared interests, we quickly converged on the idea of creating a game-ish “choose your own adventure” text game.
This could also be seen as a way of enabling the user to explore the NOC list in an entertaining way.
At first we wanted to be able to create a Hero’s Journey type of structure (see our previous post) and use various archetypes to structure interactions between characters.
To this end we chose four archetypes (the Hero, the Mentor, the Trickster and the Shadow) and had to find a way to annotate the character of the NOC list with which archetypes they mostly reflect.
We identified some of the main characteristics of these archetypes and programmatically annotated the list with them (see previous post).
Sadly during the codecamp we didn’t have time to implement all what we set out for.
The final product is a system that allows you to explore the first part of the journey: the interaction between the Hero and the Mentor.
The user is free to make the characters interact with each other (in logical ways, according to Scealextric) and should make them reach the point where the Hero is inspired by the Mentor to embark on the journey to defeat the Shadow.
The characters are chosen according to our categorization and the settings and interactions are defined accordingly to the characters that are interacting. (see previous post for example)
Upon beginning the implementation, we quickly realised that certain action triples presented to the user were unsuitable for the given archetype they were interacting with. For example, when following the “Hero’s Journey” template, one of the first and central plot devices involves having the Mentor archetype encourage and inspire the Hero to leave their home and set out on a grand adventure. Naturally this means that interactions involving harming or insulting the mentor would not be conducive to the advancement of the plot. From using the program ourselves, we found that on a regular basis the suggested actions would inevitably lead to negative outcomes which did not adhere to the “Hero’s Journey” template at all. One possible solution, and one we tried to implement (but as previously mentioned did not have time to fully complete) was to annotate each action triple with a measure of sentiment polarity using a sentiment analysis toolkit. Each action was analysed by taking their associated idiomatic representations and given a polarity score. From these scores, the program would choose the most relevant actions to present to the user. In the case of the Mentor, these would be ones which have a positive outcome for the Protagonist and a neutral to good outcome for the mentor. In this manner, only positive actions were supposed to be chosen in order to encourage the user to arrive at the next logical step in the “Hero’s Journey”. However, this approach also posed a number of challenges. Firstly, the seemingly primitive nature of automated polarity scoring led to certain incoherent action triples being chosen. To tackle this, the team decided to use a manually annotated polarity score kindly provided by another team. The other major challenge lied in the data set itself. It seemed that the majority of action triples inevitably led to disastrous and negative outcomes. This makes sense when trying to provide conflict and drama, along with climaxes and crises, all of which are essential in a good story. However, for our purposes, we needed more benevolent action triples which suited the interactions between two “good” characters. The lack of such action triples meant that very few options could be given to the user, and this in turn limits both the scope of certain sections of the story, along with damaging the immersiveness of the “choose your own adventure” mechanic.
To conclude we are pretty satisfied with the system achieved even if it’s still very limited: it creates fun stories and interactions that are interesting to read.
Better even it is challenging, as it forces the user to imagine ahead how the characters will react to actions they do, which is very seldom intuitive and banal.