Programmeer je eigen avonturen in Twine

Programmeer je eigen avonturen in Twine

Interactieve verhalen vertellen én programmeren met één tool

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 de paragraaf voor een keuze gesteld. Elke keuze verwees naar een andere pagina met een nieuwe scene 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 voor af aan beginnen. De officiële reeks bestond uit184 boeken, maar de serie kende vele spin-offs en copycats en ook grote mediabedrijven zoals Disney en Marvel gaven titels volgens dit format uit.

Slechts enkele van de bizarre eindes uit de Choose Your Own Adventure reeks

Het choose your own adventure-format raakte eind jaren tachtig in de vergetelheid, waarschijnlijk 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 wat later voor een MSX home computer, waarop ik niet alleen spelletjes speelde, maar ook voorzichtig mijn eerste stapjes in het programmeren zette. En ja, dat waren in het begin vooral text adventures, die erg leken op die geliefde boekjes.

De jaren ’80 revival

Fast forward naar 2018. De jaren ’80 zijn weer (of nog steeds) in. Er is een herwaardering van de popcultuur van dat decennium gaande en de bijbehorende digitale iconografie wordt weer helemaal omarmd. Zo is de succesvolle serie Stranger Things een eerbetoon aan de kaskrakers uit die tijd, wordt pixel-art weer volop gebruikt in reclame en games en verschijnen er in de literatuur de laatste jaren succesvolle titels die met zoete weemoed teruggrijpen naar die tijd.

Het meest succesvolle voorbeeld hiervan is Ready Player One van Ernest Cline (een boek waarvan de verfilming door Steven Spielberg in maart in première gaat), maar ook De Wonderjaren van Billy Marvin van Jason Rekulak loopt over van de smeuïge eighties nostalgie.

En opvallend genoeg zie je ook dat het choose your own adventure-format weer vaker gebruikt wordt. Zo verschijnen er steeds meer prentenboeken die op verschillende visuele manieren experimenteren met keuzemogelijkheden, zoals bijvoorbeeld Joehoe! Sprookjesprins? van Sylvie Misslin en Jouw Verhaal van Madalene Matoso.

De eerste pagina uit Joehoe! Sprookjesprins

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 in enkele korte animaties voor kinderen met het format. In 2017 kwamen al De Gelezen Kat: Gevangen in een Verhaal en Buddy Thunderstruck: De Misschienstapel uit en dit jaar zal nog Stretch Armstrong: The Breakout volgen. Als het experiment slaagt, wil Netflix in de toekomst ook soortgelijke films voor volwassenen uitbrengen. (Let op: de interactieve elementen van deze animaties werken vooralsnog alleen in de mobiele apps van Netflix).

Zelf interactieve verhalen schrijven

Maar hoe cool 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: Programmeer je eigen avonturen in Twine.

Want van al die verschillende tools om interactieve fictie te schrijven (zoals Inkle, Undum, ChoiceScript, StoryNexus of Varytale) is Twine volgens mij de optie met de laagste instap. Deze open source software is ontwikkeld door Chris Klimas en wordt al ruim negen 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: The Temple of No)

 

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-it op het 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, via welke je door je verhaal dwaalt.

Een deel van het Twine prikbord met passages en links (Uit: Space Madness)

Verschillende narratieven

Je kan deze ‘boomstructuur’ zo ingewikkeld maken als je zelf wilt en je kan verschillende vertelvormen voor je verhaal gebruiken. Paul Nelson 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.

Uit: The Story Element: Designing Branching Narrative

  • Foldback: het verhaal verloopt langs meerdere keuzepunten, maar komt op een gegeven moment weer samen op één punt. Vanaf dit punt zijn opnieuw meerdere keuzes mogelijk, maar die worden niet beïnvloed door de keuzes van vóór dit foldback point. Enzovoorts.

  • 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.

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.

Je hebt hiertoe een volledig arsenaal aan functies ter beschikking en je kan hiermee als een volleerd programmeur aan de slag gaan. Je kan gebruik maken van variabelen en conditionele logica en je kan afbeeldingen en geluiden toevoegen. Met CSS maak je je verhaal verder op en met JavaScript duik je pas echt de diepte in. 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:

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

Passage 1 - Een gouden sleutel
De programmeur schrijft:
Je vindt een oude sleutel onder de deurmat. (set: $sleutel to true)
Je loopt door een open deur naar [[de volgende kamer]].

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

Eenmaal in Passage 2 aangekomen 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.

Passage 2 - De volgende kamer
De programmeur schrijft:
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.]
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 prima 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. Enzovoorts.

Digitale geletterdheid en Twine

Voor Bibliotheken die aan de gang willen met digitale geletterdheid combineert Twine dus op prachtige wijze het vertellen van verhalen met de vaardigheid computational thinking en worden daarnaast de vaardigheden creatief denken en probleem oplossend vermogen getraind.

Het grote voordeel van Twine is bovendien dat het voor de beginnende gebruiker niet heel erg ingewikkeld is, maar dat het de gevorderde gebruiker tegelijkertijd talloze mogelijkheden biedt. Het grote nadeel is dat er niet of nauwelijks Nederlandstalige informatiebronnen te vinden zijn (maar daar zouden wij als ProBiblio iets in kunnen betekenen).

Aan de slag!

De ervaring leert dat de onoverzichtelijk en hopeloos gedateerde homepagevan Twine veel mensen afschrikt. Mijn eerste advies is dus om daar doorheen te prikken. Die site is al jaren niet bijgewerkt maar de software krijgt nog op regelmatige basis een update. Gelukkig is er 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.

Natuurlijk is ook YouTube een dankbare informatiebron. Daar zijn talloze tutorials te vinden. Tenslotte is er ook een aantal schrijvers van interactieve fictie die interessante blogs met tips en tricks bijhouden. Kijk maar eens achter de volgende links:

Mocht je interesse na dit verhaal gewekt zijn, maar weet je nog steeds niet hoe je Twine in jouw bibliotheek zou kunnen inzetten, schroom dan niet om contact met mij op te nemen via e-mail (RBrok@probiblio.nl) of Twitter. Ben je nog steeds niet overtuigd bekijk en speel dan via de links zeker even de spellen The Temple of No en A Recepy for Love om te ervaren wat de mogelijkheden van Twine zijn.

 

Meer blogposts van Ruud Brok