Subskrybuj newsletter o cyfrowej humanistyce i innowacjach w sektorze kultury

Budujemy muzealną grę tekstową z Twine i zbiorami Muzeum Emigracji (część I)

Okładka lekcji: portret kota w renesansowym stroju / Źródło: AI

Wprowadzenie

Twine to proste w użyciu narzędzie, które pozwala na tworzenie interaktywnych fikcji - narracji angażujących czytelnika i czytelniczkę we współtworzenie fabuły. Możliwości, jakie daje Twine i format interaktywnej fikcji, można wykorzystać do przygotowania interaktywnego przewodnika po muzeum cyfrowym albo użyć w trakcie warsztatu, którego celem byłaby twórcza praca ze zdigitalizowanymi zbiorami.

Cele lekcji

Celem lekcji, którą podzielimy na trzy części, jest nauczenie się tworzenia interaktywnych fikcji z Twine. Poznamy podstawy teorii hipertekstu, przećwiczymy tworzenie leksji i relacji między nimi, nauczymy się zarządzać zmiennymi i umieszczać w opowieści materiały wizualne.

Efekty

Efektem pracy będzie prosta przeglądarkowa gra tekstowa, w której wykorzystamy zasoby cyfrowe gdyńskiego Muzeum Emigracji.

Lekcja podzielona jest na trzy części. W pierwszej poznamy podstawy hipertekstu i systemu Twine, w drugiej - przygotujemy leksje i nauczymy się programować zmienne, a w trzeciej - uzupełnimy leksje wykorzystując materiały historyczne ze zbiorów Muzeum Emigracji, złożymy grę w całość i opublikujemy.

Wymagania

Do skorzystania z lekcji wymagana jest jedynie przeglądarka internetowa. Z Twine możemy pracować też w aplikacji desktopowej, ale wersja online jest wystarczająca.

Część merytoryczna

Fikcja interaktywna (interactive fiction, IF) to forma narracji, w której odbiorcza czy odbiorczyni może wpływać na rozwój fabuły poprzez podejmowanie decyzji i rozmaite interakcje. O interaktywnej fikcji mówi się zazwyczaj wobec narracji tekstowych, ale ten sposób prowadzenia fabuły możliwy jest też w filmach czy opowieściach wizualnych.

Interaktywne fikcje

Interaktywne fikcje mogą być czytane/grane w druku - warto przypomnieć sobie wydawane na przełomie lat 80./90. tytuły W poszukiwaniu Króla Artura (1989), Ostrze gilotyny (1989), Tajemnica Atlantydy (1990), Pierścienie Saturna, Na tropie miast ze złota, Piracki Rejs (1991) czy W poszukiwaniu źródeł Nilu (1991). Dziś funkcjonują (także w Polsce) wydawnictwa specjalizujące się w grach tego typu.

Gry tekstowe czy interaktywne fikcje można budować także w postaci cyfrowej - to zdecydowanie łatwiejsze i szybsze rozwiązanie, ponieważ systemy wspierające tworzenie takich gier udostępniają narzędzia do zarządzania opowieścią i łączenia ze sobą poszczególnych jej elementów. Możliwe jest też skorzystanie ze zmiennych, pozwalających grającym/czytającym na niezależne konstruowanie postaci w trakcie gry, gromadzenie wirtualnych obiektów, walkę itp. Gry tekstowe online są też bardziej dostępne - do korzystania z nich wystarczy przeglądarka i można umieścić je na własnej stronie.

Długa tradycja hipertekstu

Hipertekst to system organizacji informacji, który umożliwia przeglądanie i poruszanie się po treści w nieliniowy sposób. We frazie czytać książkę od deski do deski jest zapisane doświadczenie lektury jednokierunkowej: zaczynamy od pierwszej strony i zatrzymujemy się dopiero na okładce. Taka lektura jest przechodzeniem ze strony na kolejną stronę w porządku rosnącym. Przeczytałem już sto stron, ale zostało jeszcze trzysta, uff 😫 - nudną lekturę skończymy dopiero na stronie 400.

Oczywiście taki sposób czytania nie dotyczy wszystkich książek: podręczniki, książki kucharskie, encyklopedie i słowniki raczej przeglądamy - w praktyce lektury całość nie jest dla nas wartością. Nielinearną strategię czytania tekstu literackiego zaproponował Julio Cortázar w słynnej Grze w klasy (1963) czy Raymond Queneau, współzałożyciel grupy OuLiPo. W książeczce dla dzieci Bajeczka na twoją modłę (1967) Queneau zaproponował coś, co przypomina menu programu komputerowego działającego w terminalu albo nawet instrukcję warunkową w programowaniu:

  1. Czy chcesz posłuchać bajeczki o trzech małych dziarskich ziarnkach grochu? Jeśli tak, patrz pod 4. Jeśli nie, patrz pod 2.
  2. A może wolisz bajeczkę o trzech wysokich suchych podpórkach?

Co ciekawe, Christian Vandendorpe, z którego książki Od papirusu do hipertekstu. Esej o przemianach tekstu i lektury (2008) zaczerpnąłem ten cytat, twierdzi, że hipertekst w ujęciu informatycznym znaczy coś zupełnie innego niż w ujęciu teorii literatury: tam hipertekst to wywodzenie czy budowanie nowych tekstów na bazie poprzednich - Ulisses Yoyce’a ma być hipertekstem Odysei.

Historia informatycznego hipertekstu zaczyna się w latach 30. (Vannevar Bush), a wyrażona zostaje wprost w 1963, kiedy Ted Nelson, zresztą twórca tego pojęcia, tworzy koncepcję systemu gromadzenia informacji, w którym nieistotna jest kolejność (czy ścieżka) dostępu do określonego dokumentu. Ignorowanie klasycznej książkowej linearności umożliwia bezpośrednie linkowanie ze sobą poszczególnych dokumentów (leksji, tekstonów czy writing space) - dotrzeć do nich można w różny sposób. Wdrożeniem hipertekstowego modelu publikowania informacji jest sieć WWW, czyli przeglądarkowy internet. Twórca WWW Tim Berners Lee wdrożył koncepcję Nelsona - sieć stron WWW nie ma uporządkowanej struktury, można poruszać się po niej swobodnie i docierać do żądanej informacji w różny sposób poprzez publikowane w różnych miejscach hiperłącza. Dzięki WWW i linkom możemy też łatwo budować interaktywne fikcje i gry tekstowe - kod w języku HTML i adresy URL umożliwiają dynamiczne przechodzenie między leksjami.

Hipertekst - schemat relacji między dokumentami / Źródło: CC BY-SA Robert Cailliau, Wikimedia Commons

Ostatecznie treść publikowana w postaci hipertekstu jest nie tyle narracją, ile bazą danych, którą przeglądamy w dowolny sposób. To trochę tak, jakbyśmy rozpisali powieść na setki kolorowych karteczek i prosili czytelników i czytelniczki o samodzielne ich układanie. W ten sposób tracimy kontrolę nad fabułą, ale otwieramy się na nowe możliwości odczytania naszej pracy.

Hipertekstowa gra muzealna

Tyle teorii, a co z praktyką? Jak system leksji i hiperłączy odnieść do zbiorów Muzeum Emigracji? Czy oddając osobom czytającym / grającym tak dużą kontrolę nad poruszaniem się po naszej treści jesteśmy w stanie zachować jakiś podstawowy kierunek narracji?

Systemem hipertekstowym jest już witryna zbiorów muzeum - pozwala na swobodną eksplorację zdigitalizowanych obiektów. Możemy korzystać z kolekcji, wyszukiwania, przeglądać zbiory zawierające określone metadane (np. korespondencję). Trudno tutaj o opowieść - rzeczywiście mamy do czynienia z czymś w rodzaju bazy danych.

Nasza gra musi jednak mieć jakąś fabułę. Nie chcemy zrobić encyklopedii ani słownika, interesuje nas nie tyle przedstawienie wszystkich obiektów, co zwrócenie uwagi na jakiś ich specyficzny zbiór oraz umożliwienie odbiorcom i odbiorczyniom jakiejś nowej formy interakcji z nimi. Niech nie tylko oglądają wybrane przez nas obiekty, ale z nich - w ramach gry - skorzystają 🤓.

Otwarte w 2015 roku Muzeum Emigracji w Gdyni

opowiada globalną historię Polek i Polaków. Z inicjatywy władz miasta w historycznym gmachu Dworca Morskiego, skąd przez dziesięciolecia wypływały polskie transatlantyki, powstała instytucja, która o dziejach wyjazdów i losach Polaków na świecie opowiada w ścisłym związku ze współczesnością. Historia emigracji toczy się bowiem każdego dnia. Jej najróżniejsze wymiary przedstawia wystawa stała. W Muzeum Emigracji w Gdyni wspólna historia Polaków łączy się z dialogiem na temat współczesności. Migracje są dynamicznym procesem dziejącym się obok nas, a nie historycznym faktem. Dotykamy zjawiska, które na całym świecie wydarza się ciągle na nowo. Migracje zmieniają obraz całego świata. Również dziś.

Nasza gra poświęcona powinna być emigracji - temat ten opisują zbiory Muzeum, z których będziemy korzystać. Emigracja jest pojęciem zawierającym pewną dynamikę - podjęcie decyzji o wyjeździe, podróż, rozpoczynanie nowego życia w nowym miejscu. Taka dynamika nadaje się już na fabułę gry. Ponieważ stworzymy niewielką grę, właściwie jedynie jej wersję demo, skoncentrujmy się na jednym etapie: przygotowaniach do wyjazdu. Oto podstawowy naszego scenariusza:

  • rzeczywistość historyczna: lata 30. XX wieku,
  • przestrzeń: Gdynia,
  • fabuła: przygotowania do wyjazdu do Ameryki. Bohater otrzymał pieniądze na wyjazd do USA od rodziny mieszkającej tam już od końca XIX w., jednak nie jest to wystarczająca suma. Bohater przyjeżdża do Gdyni, aby wejść tam na statek, ale musi dorobić do biletu na transatlantyk i przygotować wszystkie niezbędne dokumenty,
  • cel gry: wykupienie biletu (karty okrętowej) i wejście na statek.

Ponieważ osią naszej gry będzie uzbieranie odpowiedniej sumy, pozwalającej na kupno biletu, jej mechanizm może zawierać jakieś działania matematyczne - nie będzie to wyłącznie klikanie pomiędzy leksjami, ale podejmowanie wyborów, które zwiększą lub zmniejszą pulę dostępnych środków. Będzie to możliwe, bo Twine pozwala na korzystanie ze zmiennych.

Fabuła gry rozpisana na hipertekst

Zanim w ogóle zajmiemy się warstwą merytoryczną gry i przygotujemy wstępne rozpoznanie historyczne, musimy rozpisać schemat fabuły na system hipertekstu. W klasycznej grze tekstowej to proste. Wyobraźmy sobie, że sceną gry jest tajemnicze zamczysko, a my poruszamy się po komnatach szukając skarbów i unikając potworów. Każda komnata będzie tutaj leksją hipertekstu. Klikając w jedną, będziemy mogli przejść do labiryntu kolejnych, czasem trafiając na potwory lub w ślepe zaułki.

Ale jak na leksje przepisać przygotowania do migracji? Umówmy się, że kliknięcie w daną leksję będzie wyborem fabularnym osoby grającej, pewną decyzją co do tego, co zrobić, aby zebrać niezbędne fundusze na wyjazd. W zależności od tego, jaki to będzie wybór, pula środków zmniejszy się albo zwiększy. Oczywiście nie zbudujemy tutaj otwartego świata jak z gier o Wiedźminie, ale damy możliwość pewnego wyboru.

Dzięki zmiennym w Twine możemy zdynamizować rozgrywkę. Będziemy na bieżąco aktualizowali portfel naszego bohatera oraz odliczali dni do wypłynięcia statku - zarabianie pieniędzy wymaga przecież czasu. W tym czasie trzeba też gdzieś mieszkać i coś jeść.

Rozpoznanie historyczne

Nie mamy tu czasu na przygotowanie porządnego rozpoznania historycznego - osoby z Muzeum Emigracji byłyby tu bardziej kompetentne. Ze względu na fabułę gry potrzebujemy nie tylko ogólnego kontekstu (polskie emigracje do USA w latach 20./30.), ale też konkretów: cen za wynajem pokoju / mieszkania, cen żywności, wysokości zarobków czy cen biletów.

Portal historyczny Hrabia Tytus przygotował krótki przegląd cen i zarobków z drugiej połowy lat 30. Zarobki wahały się oczywiście w zależności od płci, kompetencji i branży. Urzędnicy średniego szczebla, pracownicy umysłowi oraz robotnicy wykwalifikowani zarabiali około 160-260 zł miesięcznie, robotnicy (poligrafia, górnictwo) - 200-400 zł miesięcznie, robotnicy niewykwalifikowani - około 130 zł miesięcznie, a gospodynie domowe / służba domowa - około 80 zł miesięcznie. Postać, którą będziemy budować w grze, jest osobą bez kwalifikacji, która może podjąć niskopłatne prace fizyczne.

Możemy zrozumieć historyczne wartości wynagrodzeń za pracę wyłącznie wtedy, kiedy odniesiemy je realnych kosztów życia codziennego. Mąka pszenna (1 kg) kosztowała 49 gr, ziemniaki (1 kg): 10 gr, wołowina (1 kg): 1,53 zł, wieprzowina (1 kg): 1,52 zł, słonina (1 kg): 1,58 zł, masło (1 kg): 3,98 zł, jaja (ok. 15 sztuk): 1,51 zł, mleko (litr): 26 gr. Za obiad w budzie z wyszynkiem trzeba było zapłacić 1-2 zł, ale w hotelu Wiktoria mógł kosztować 10 razy tyle. Mydło do prania (1 kg) kosztowało 1,30 zł, kostka mydła toaletowego: 1 zł, ręcznik bawełniany: 2 zł, biała męska koszula: 9,5 zł, męskie półbuty: 24,66 zł. Za bilet do kina płacono 40 gr. Loty z Okęcia do Paryża kosztowały 300 zł, do Berlina: 133 zł, Lwowa: 50 zł, wycieczka statkiem po fiordach Norwegii kosztowała około 850-1350 zł.

Zwróćmy też uwagę, że Gdynia była swego czasu najdroższym miastem w Polsce. Jak pisze Tomasz Piątek w książce Gdynia obiecana. Miasto, modernizm, modernizacja 1920-1939, powodem była m.in. peryferyjność miasta (a więc koszty importu dóbr) oraz wielka masa osób szukających tu pracy, która windowała ceny wynajmu. W 1934 roku - jak przytacza Piątek - miesięczny czynsz w Gdyni w 1934 wahał się między 50 a 80 zł. W naszej grze postaramy się odnieść do tych realiów, chociaż będziemy musieli je uprościć. Założmy też, że bilet na statek kosztuje 800 zł. Nasz bohater będzie miał na starcie gry 500 zł od rodziny w USA. Musi zarobić kolejne 300 i oczywiście utrzymać się w Gdyni.

Budujemy postać

Musimy przygotować szablon naszej postaci. Obok opisu, który wprowadzi osoby grające w rzeczywistość epoki, potrzebujemy zestawu zmiennych, które będą identyfikować naszego bohatera i które będą podlegać zmianie w czasie gry.

zmienna wartość początkowa
$tydzien 52
$portfel 500
$zdrowie 100
$mieszkanie 0

Załóżmy, że nasz bohater będzie miał rok (52) tygodnie na to, aby wsiąść na statek. Jeśli zmienna $tydzien będzie miała wartość 0, zmienna $portfel powinna mieć wartość nie mniejszą niż 800. Decyzje gracza będą wpływały na wartość $portfel, ale także zmniejszały wartość zmiennej $tydzien i modyfikowały wartość $zdrowie.

Podstawowa struktura opowieści w Twine

Wejdźmy teraz na stronę Twine i wybierzmy przycisk Use in your browser. W menu Story wybieramy opcję New: podajemy tu tytuł naszej opowieści / gry.

Twine - zakładanie nowej opowieści / Źródło: Twine

Nasza gra jest na bieżąco archiwizowana w pamięci przeglądarki, można też ją wyeksportować do pliku, korzystając z menu Build i opcji Export as Twee. Taki plik zaimportować można do dalszej edycji, korzystając z menu Library i opcji Import. Warto regularnie archiwizować sobie na dysku postępy pracy nad grą.

Podstawową strukturą w Twine jest story - opowieść albo gra, złożona z wielu elementów. Ponieważ wciąż poruszamy się w przestrzeni hipertekstowej, story będzie po prostu siecią (zbiorem) leksji (dokumentów), które w Twine określa się jako passages - to przejścia albo fragmenty. Można powiedzieć, że relacja między story a passages jest relacją podobną do relacji między witryną internetową a pojedynczymi stronami tej witryny.

Po stworzeniu nowej opowieści, w panelu roboczym pojawia się pierwsza leksja: to startowy dokument, od którego zacznie się nasza gra:

Twine - zakładanie nowej opowieści / Źródło: Twine

Jeśli klikniemy dwa razy na pole pierwszej leksji, otworzy się panel edycji jej treści. Wklejmy tam poniższy tekst i fragment kodu:

Nazywasz się ''Antoni Sulikowski'', masz 21 lat. Pochodzisz z małej wsi pod Rzeszowem. Jest wiosna 1934 roku, przyjechałeś właśnie do Gdyni w poszukiwaniu pracy. Chcesz wyjechać do Ameryki, ale nie masz pełnej sumy na bilet. Dalsza rodzina, która wyemigrowała do USA jeszcze pod koniec XIX wieku, podarowała Ci trochę dolarów - z sumy 800 zł, koniecznej do opłacenia karty pokładowej na SS Polonia, brakuje Ci 300 zł. Masz rok na zarobienie tych pieniędzy - inaczej rodzina zza oceanu zacznie domagać się zwrotu darowizny...

(set: $tydzien to 52)
(set: $portfel to 500)
(set: $zdrowie to 100)
(set: $mieszkanie to 0)

Wysiadasz na dworcu Gdynia Główna, wychodzisz na ulicę. Widzisz na horyzoncie port i morze. 

Musisz znaleźć miejsce do spania.

W Twine możemy łatwo mieszać zmienne ($tydzien, $portfel itd.) z tekstem. Definiujemy zmienne w następujący sposób:

(set: $nazwa_zmiennej to wartosc_zmiennej)

Wartością zmiennej może być liczba, ale też tekst.

Twine - budowa nowej leksji / Źródło: Twine

Niech teraz Antoni Sulikowski zrobi pierwszy krok w nieznane. Musi gdzieś mieszkać, więc w naszym hipertekście stwórzmy leksję, która zagwarantuje mu mieszkanie kosztem kilkudziesięciu złotych odjętych z portfela. Z menu Passage wybieramy opcję New - pojawi się nowa, pusta leksja. Nazwijmy ją Nocleg w hotelu robotniczym i zedytujmy w następujący sposób:

Dzięki poleceniu nauczyciela z rodzinnej wsi udało Ci się znaleźć nocleg w hotelu robotniczym na dalekim Grabówku. Jest was czterdziestu w wielkiej, dusznej sali - ale lepsze to niż spać na ulicy. Łóżko kosztuje tutaj złotówkę za noc, ale nie wiesz, jak długo wytrzymasz w takich warunkach.

(set: $tydzien to $tydzien - 1)
(set: $portfel to $portfel - 7)
(set: $zdrowie to $zdrowie - 10)
(set: $mieszkanie to 1)


''Karta gry''

Zostało tygodni: $tydzien
Portfel:  $portfel zł
Zdrowie: $zdrowie
Mieszkanie: $mieszkanie

Jak widać, w tej leksji modyfikujemy zasoby naszego bohatera - nocleg kosztuje określoną sumę i wpływa negatywnie na zdrowie. Jeśli chciałby przez cały rok mieszkać w taki sposób, straci je zupełnie - za każdym razem nocleg w hotelu robotniczym będzie odejmował 10 punktów od zmiennej $zdrowie, co powinno urozmaicić rozgrywkę. W treści leksji dodałem też kartę gry, opisującą na bieżąco wszystkie parametry bohatera i rozgrywki.

Mamy już dwie leksje, ale nadal to nie hipertekst - oba dokumenty nie są połączone. Trzeba to zmienić: w treści leksji Przybycie do Gdyni zamieńmy

Musisz znaleźć miejsce do spania.

na

Musisz znaleźć [[miejsce do spania->Nocleg w hotelu robotniczym]].

W ten sposób pod frazę miejsce do spania dodamy hiperłącze do leksji Nocleg w hotelu robotniczym. Na ekranie roboczym Twine zobaczymy teraz, że obie leksje są połączone. miejsce do spania to nazwa linku, a Nocleg w hotelu robotniczym to nazwa leksji. Alternatywnie moglibyśmy podać taki link:

Musisz znaleźć miejsce do spania: [[Nocleg w hotelu robotniczym]].

Między naszymi leksjami pojawiło się połączenie:

Twine - łączenie leksji / Źródło: Twine

Spodziewamy się, że po przejściu na tę leksję zmienią się wartości karty gry. Możemy to sprawdzić, wybierając z menu Build opcję Play. Kiedy bohater wybiera nocleg w hotelu robotniczym, traci trochę pieniedzy i zdrowia:

Twine - łączenie leksji / Źródło: Twine

Udało się: w kolejnej części lekcji Twine zajmiemy się budowaniem siatki relacji między leksjami. Już teraz jednak widać, jak funkcjonuje system hipertekstowy w Twine. Naszą grę, nawet w takiej szczątkowej postaci, możemy wyeksportować do pliku HTML i umieścić na stronie: wybieramy menu Build i opcję Publish to File.

Podsumowanie

Hipertekst wcale nie musi służyć wyłącznie do prezentacji wiedzy: tworząc odpowiednie relacje między leksjami możemy budować interaktywne fikcje i gry tekstowe. Dzięki Twine możemy robić to w trybie graficznym, niemal bez kodowania, do tego wykorzystując dowolne zmienne. W tej lekcji udało się nam poznać podstawy hipertekstu oraz podstawy pracy z Twine: tworzenie leksji i relacji między nimi.

Wykorzystanie metod

Hipertekst jako forma organizacji wiedzy rozwijany jest od lat 30. XX wieku. Sieć WWW jest wdrożeniem hipertekstu do publikowania internetowego - każda strona jest leksją wielkiej sieci, po której możemy się swobodnie poruszać.

Warto pamiętać, że hipertekst ma też swój wymiar literacki. W portalu Techsty.art.pl zapoznać się można z literacką twórczością hipertekstową i dyskusją krytyczną na temat literackich hipertekstów.

Dzięki Twine możemy łatwo wykorzystać potencjał hipertekstu do publikowania interaktywnych przewodników po kolekcji czy szczegółowego opisywania wybranych obiektów: można wyobrazić sobie podzielenie reprodukcji cyfrowej jakiegoś dzieła na fragmenty i przypisanie im linku do określonej leksji, w której znajdziemy dokładny opis i komentarz krytyczny.

Pomysł na warsztat

Cykl lekcji o Twine może być inspiracją do warsztatu tworzenia własnych interaktywnych fikcji albo gier tekstowych. Może to być też okazja do nauki podstaw hipertekstu (leksje, hiperłącza) oraz dyskusji o tym, jakie zalety i jakie ograniczenia ma taka forma organizacji wiedzy.