Categorieën
Nerd Alert

Interactieve verhalen schrijven met Twine

Tijdens een conferentie over storytelling wees gastspreker Niels ’t Hooft – hybride schrijver en ontwikkelaar van de leesapp Immer – de zaal op Twine, een programma waarmee je eenvoudig interactieve verhalen kan schrijven. Deze zogenaamde Twines houden het midden tussen een verhaal en een videogame. Wanneer je zoals ik halverwege de veertig bent en in je tienerjaren flink gegamed hebt, word je waarschijnlijk net zo enthousiast als ik in die zaal werd bij het idee dat het schrijven van je eigen Monkey Island ‘binnen handbereik’ lag. Want zeg nou zelf: welke nerd wil dat nou niet!?

Hoe het allemaal begon

Als nerdy jochie dat opgroeide in de jaren ’80 smulde ik van de choose your own adventure-boeken. Deze Bouquet-achtige, van oorsprong Amerikaanse, reeks werd altijd geschreven in de tweede persoon enkelvoud, waardoor je je als lezer vereenzelvigde met de protagonist van het verhaal. Als lezer, hoofdrolspeler en aspirant avonturier werd je aan het einde van een hoofdstuk of paragraaf voor een keuze gesteld. Elke keuze-optie verwees naar een andere pagina met een nieuwe scène en zo verliep het avontuur telkens anders.

Niet zelden eindigde zo’n verhaallijn uiteindelijk tot een even bizarre als tragische dood en moest je weer van vooraf aan beginnen. De officiële reeks bestond uit 184 boeken, maar de serie kende vele spin-offs en copycats en ook grote mediabedrijven zoals Disney en Marvel gaven titels volgens dit format uit.

Het choose your own adventure-format raakte eind jaren tachtig in de vergetelheid, waarschijnlijk mede door de opkomst van de home entertainment systems die steeds goedkoper werden. Ook ik ruilde deze tamelijk absurde boekjes in voor een Atari 2600 en weer wat later voor een MSX home computer, waarop ik niet alleen spelletjes speelde, maar ook mijn eerste stapjes in de wereld van het programmeren zette. En ja, dat waren in het begin vooral text adventures, die erg leken op deze geliefde boekjes.

De jaren ’80 revival

Fast forward naar 2022. De jaren ’80 zijn weer (of nog steeds) hip. Er is een herwaardering van de popcultuur van dat decennium gaande en de bijbehorende digitale iconografie wordt weer omarmd. Zo is Stranger Things – een van de meest succesvolle series van de afgelopen jaren – een eerbetoon aan de kaskrakers uit die tijd, is pixel-art een geliefde stijl voor games en verschijnen er in de literatuur de laatste jaren succesvolle titels die met zoete weemoed teruggrijpen naar die tijd. Een van de meeste bekende voorbeelden hiervan is het boek Ready Player One van Ernest Cline, dat later door Steven Spielberg verfilmd werd, maar ook De Wonderjaren van Billy Marvin van Jason Rekulak loopt over van smeuïge eighties nostalgie.

En opvallend genoeg zie je ook dat het choose your own adventure-format weer vaker opduikt. Zo verschijnen er steeds meer prentenboeken die op verschillende manieren experimenteren met keuzemogelijkheden. Een mooi voorbeeld hiervan is de serie ‘speelboeken’ van Sylvie Misslin, waarvan momenteel alleen nog Op Zoek Naar de Schat van Z. de Verschrikkelijke te verkrijgen is.

Ook is er een aantal striptekenaars dat deze manier van verhalen vertellen toepast. Het meest sprekende voorbeeld hiervan is Ryan North, een Canadese schrijver/striptekenaar die in een Kickstartercampagne ruim een half miljoen dollar binnenhaalde voor To Be Or Not To Be, zijn ‘verknipte’ en ‘verstripte’ hervertelling van Shakespeare’s klassieker Hamlet (waar inmiddels ook een iOS app van is verschenen). Ook met zijn opvolger Romeo And/Or Juliet oogste North ontzettend veel lof.

En zelfs Netflix experimenteert sinds een paar jaar met het choose your own adventure-format in haar producties. De afgelopen jaren ontwikkelde de videogigant met deze techniek een aantal kinderseries zoals Stretch Armstrong: The Breakout en Minecraft: Storymode en introduceerde ze met Black Mirror: Bandersnatch, een volwaardige interactieve speelfilm, waarin een jonge computerprogrammeur verwoede pogingen doet om zijn favoriete choose your own adventure-boek te vertalen naar een videogame en hierbij knettergek wordt (net zoals de auteur van dat boek). En zo is de cirkel rond.

Zelf interactieve verhalen schrijven

Maar hoe tof zou het zijn als je zelf choose your own adventure-verhalen zou kunnen schrijven!? Het goede nieuws is dat er online verschillende gratis tools te vinden zijn waarmee dit mogelijk is. En dat brengt me eindelijk bij de titel van dit stuk: ‘Interactieve Verhalen Schrijven met Twine’. Want van al die verschillende tools om interactieve fictie te schrijven (zoals InkleUndum en ChoiceScript) is Twine namelijk het meest eenvoudig voor beginners. Deze open source software is ontwikkeld door Chris Klimas en wordt al ruim tien jaar door een trouwe, maar kleine schare fans gebruikt om online interactieve verhalen te vertellen.

A Twine is like a game, but for teenagers who want to be in the past…

uit: Temple of No

De Basis

Wanneer je de software voor het eerst gebruikt, is er geen enkele kennis van code noodzakelijk. Het programma vertaalt hypertext (webpagina’s) naar een visueel overzichtelijk prikbord. Door bepaalde woorden tussen [[dubbele haakjes]] te zetten worden deze woorden hyperlinks naar nieuwe passages, die automatisch worden aangemaakt en verbonden. Deze passages worden als een soort post-its op een prikbord weergegeven. Op deze manier ontstaat er vrij snel een ‘doorklikbaar’ verhaal en dat zonder dat er één woord code getypt hoeft te worden. Het programma vertaalt je spel uiteindelijk weer terug naar een serie html-pagina’s met tekst en hyperlinks, waarmee je door het verhaal kan navigeren.

Een deel van een Twine prikbord met passages en links

Verschillende narratieven

Je kan deze ‘boomstructuur’ zo ingewikkeld maken als je zelf wilt en je kan verschillende vertelvormen voor je verhaal gebruiken. Paul Nelson (schrijver van onder andere interactieve fictie) beschrijft op zijn blog de volgende vertelstructuren:

  • Beads on a string: het verhaal speelt zich in één rechte lijn af, met weinig of geen interactiviteit. Goed om een gevoel te krijgen bij het aanmaken van passages en het linken ervan.
  • Branching Narrative: het verhaal vertakt zich via verschillende keuze-opties in meerdere richtingen, waardoor er steeds verschillende verhalen met elk een eigen einde ontstaan. Het nadeel van deze structuur is dat het aantal te schrijven scenes snel toeneemt.
  • Foldback: het verhaal verloopt langs meerdere keuzepunten, maar komt op een gegeven moment weer samen op één punt, het foldback point. Vanaf dit punt zijn opnieuw meerdere keuzes mogelijk, maar die worden niet beïnvloed door de keuzes van vóór het foldback point. Enzovoorts. Het voordeel van deze structuur is dat je het aantal scenes beperkt houdt. Een nadeel is dat de keuzes eigenlijk niet relevant zijn, omdat ze allemaal naar hetzelfde punt leiden.
  • Instant Death: het verhaal kent meerdere keuzemomenten, maar er is maar één keuze die je verder brengt in het verhaal. De overige keuzes lopen allemaal dood.

Natuurlijk maakt het slim combineren van bovenstaande structuren dat een interactief verhaal interessant blijft en dat de verschillende keuze-opties daadwerkelijk relevant voelen.

Programmeren in Twine

Twine wordt echter nog leuker wanneer je allerlei vormen van interactiviteit gaat inbouwen in je verhaal. Je kan dan denken aan sleutels die je moet vinden voordat je een deur kan openen, levenspunten die afnemen als je met een monster vecht of een inventaris waarin je objecten die je vindt virtueel opslaat.

De programmeertaal die Twine hiervoor gebruikt is een combinatie van HTML en Javascript. Je hebt zo een volledig arsenaal aan functies ter beschikking en je kan als een volleerd programmeur aan de slag gaan. Je kan gebruik maken van variabelen en conditionele logica en je kan afbeeldingen en geluiden toevoegen. Maar hoe ziet dit er dan uit? Als je bijvoorbeeld een specifieke sleutel nodig hebt om een kist open te kunnen maken zou je dat als volgt kunnen programmeren (hier wordt het even wat technischer).

De programmeurs schrijft:
Passage 1 - Een oude sleutel

Je vindt een oude sleutel onder de deurmat. (set: $sleutel to true)
Je loopt door een open deur naar [[de volgende kamer]].

In Passage 1 vindt de speler een oude sleutel en daarom krijgt de variabele met de naam sleutel ($sleutel) de waarde ‘true’. En omdat [[de volgende kamer]] tussen dubbele haakjes staat maakt Twine daar automatisch een nieuwe passage met die naam voor aan en linkt deze aan de eerste passage.

De speler ziet:
Je vindt een oude sleutel onder de deurmat.
Je loopt door een open deur naar de volgende kamer.
De programmeurs schrijft:
Passage 2 - De volgende kamer

In de kamer staat een houten kist. De kist zit op slot.
(if: $sleutel is true)[Je opent de kist met de oude sleutel!]
(else:)[Je krijgt de kist zonder sleutel niet open.]

Door op de link ‘de volgende kamer’ te drukken kom je als speler in passage 2. Eenmaal daar kan de speler nu een houten kist openen. Zou hij die sleutel niet hebben gevonden (en de variabele $sleutel dus nog steeds de beginwaarde ‘false’ hebben), dan zou de tekst achter (else:) verschijnen. De kist gaat dan dus niet open.

De speler ziet:
In de kamer staat een houten kist. De kist zit op slot.
Je opent de kist met de oude sleutel!

Een if/else-test als deze zou bijvoorbeeld kunnen functioneren als foldback point in het gelijknamige narratief zoals ik hierboven heb omschreven. In die houten kist zou weer een zwaard kunnen zitten waarmee een monster dat de enige brug over de rivier bewaakt geveld kan worden (het volgende foldback point). De mogelijkheden zijn eindeloos maar met deze paar regels code kun je al de nodige interactiviteit in je verhaal aanbrengen. Natuurlijk is er nog veel meer mogelijk met Twine maar daar kan ik een aparte blog over schrijven.

Aan de slag!

De ervaring leert dat de onoverzichtelijk en hopeloos gedateerde homepage van Twine veel mensen afschrikt. Mijn eerste advies is dus om daar doorheen te prikken. Die site is al jaren niet bijgewerkt maar de software zelf krijgt nog op regelmatige basis een update. Gelukkig is er ook een uitgebreide Wiki-pagina beschikbaar, waarin alle beschikbare functies worden uitgelegd, en kun je veel nuttige informatie vinden in het Twine Cookbook, waarin allerlei kant en klare oplossingen op veel voorkomende problemen te vinden zijn.

Wil je het meteen serieus aanpakken, dan is er een Domestika Course te volgen (Spaans met Engelse ondertiteling), maar natuurlijk vormt ook YouTube een dankbare informatiebron. Tenslotte is er een aantal schrijvers van interactieve fictie (zoals Paul Nelson) die blogs vol pennen met tips en tricks over Twine en het schrijven van interactieve verhalen. Kijk maar eens achter de volgende links:

Mocht je interesse na dit verhaal gewekt zijn, maar weet je nog steeds niet hoe je Twine kan gebruiken zoek me dan op op Twitter. Ben je nog steeds niet overtuigd bekijk en speel dan via de links zeker even de interactieve verhalen The Temple of No en A Recepy for Love om te ervaren wat de mogelijkheden van Twine zijn.

Deze blogpost verscheen eerder in aangepaste vorm op de website van Probiblio.

Één reactie op “Interactieve verhalen schrijven met Twine”

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.