Workshop di Videogame Design al Linux Day di Spotorno

Ieri si è tenuto in tutta Italia il Linux Day, la giornata annuale dedicata alla promozione del Software Libero e in particolare dei sistemi operativi GNU/Linux. In qualità di utente Linux di lungo corso, ho partecipato a varie edizioni della manifestazione e ad altre iniziative similari come il Software Freedom Day, parlando dei miei progetti di designer e sviluppatore.

Quest’anno ho voluto superarmi, proponendo un workshop di Videogame Design un po’ particolare, Armato solo del linguaggio di programmazione Inform 6, avrei tentato di realizzare un’avventura testuale in diretta col pubblico, senza usare alcun manuale, schema, traccia, ambiente di sviluppo preconfigurato o trucco di sorta. L’obiettivo era di disegnare e programmare un videogioco completo, basato interamente sull’ispirazione dei partecipanti e la voglia di partecipare a quello che era a tutti gli effetti un esperimento di brainstorming avventuroso.

Incuriositi dalla mia proposta, gli amici del Govonis GNU/LUG hanno accettato di ospitarmi al loro Linux Day, organizzato a Spotorno presso la splendida Sala Convegni Palace, sul lungomare Kennedy. Così, dopo una breve introduzione a base di Stregatto, sono andato in scena col mio singolare workshop, che in un’ora scarsa di design collettivo ha prodotto risultati piuttosto assurdi, ma spero anche divertenti.

Una foresta con un cinghiale parlante e tante altre cose bizzarre

L’avventura comincia infatti in una foresta, in cui c’è un cinghiale… parlante! Proprio così, dopo che mi è stato chiesto di creare la foresta e il cinghiale, alla mia puntuale domanda “Che cosa fa il cinghiale nella foresta?”, qualcun altro ha risposto: “Parla!”. Io ho accettato di buon grado di farlo parlare, scoprendo che il cinghiale può dare informazioni utili per trovare i funghi che il giocatore deve raccogliere e mangiare.

Secondo il cinghiale, i funghi avrebbero dovuto essere a nord. Peccato che qualcun altro si sia inventato di mettere una capanna a nord della foresta. Così niente funghi, per ora. Alla fine, aprendo un armadio aggiunto all’uopo nella capanna, si trova un passaggio segreto che conduce a est, in un prato disseminato di funghi. Missione compiuta? Sì, se ci siamo ricordati di prendere il cestino di vimini che permette di raccogliere i funghi e quindi di mangiarli.

Cinghiali parlanti, armadi a doppio fondo e funghi probabilmente allucinogeni sono quindi lo strampalato risultato della mia prima live di game design in Inform 6. Personalmente mi sono molto divertito a tradurre in righe di codice gli spunti creativi del pubblico e spero di poter ripetere presto l’iniziativa, magari in qualche scuola o università della mia zona, o anche di fuori. L’evento, grazie all’interessamento dell’amico Giò Barbera, ha avuto una bella presentazione su IVG, il principale sito di informazione della provincia di Savona.

Una avventura testuale da giocare e studiare

Come promesso ai partecipanti, pubblico qui di seguito il codice sorgente del gioco, perché tutti possano vedere come si può facilmente scrivere un’avventura testuale in Inform 6 partendo da zero. Il file gioco.inf può essere compilato da riga di comando, dopo aver installato il compilatore inform e creato una sottodirectory lib per le librerie di sistema parser, verblib, replace e italiang, con l’istruzione:

inform gioco.inf +language_name=Italian +include_path=lib -C0

Il listato in realtà non è un esempio di programmazione ideale perché c’è un piccolo bug relativo al punteggio, che può essere aumentato a dismisura, e alcune azioni sono definite in maniera un po’ strana. Chiaramente nella diretta del workshop c’è stato poco tempo per affinare il codice, ma se ora correggessi il listato temo che si perderebbe lo spirito dell’iniziativa ;)

Constant STORY “Linux Day 2015^”;
Constant HEADLINE “Benvenuto al Linux Day di Spotorno!^”;

Constant MAX_SCORE 10;
Include “parser”;
Include “verblib”;
Include “replace”;

Object foresta “Foresta”
with description “Sei in una foresta. A nord vedi una capanna, mancano solo i due cuori.”,
n_to Capanna,
has light;

Object capanna “Capanna”
with description “Sei nella capanna. A sud torni alla foresta.”,
before [;
Go: if (noun==e_obj && mobile hasnt general) “Non puoi andare in quella direzione.”;
],
s_to Foresta,
e_to prato,
has light;

Object mobile “mobile” capanna
with name ‘mobile’ ‘armadio’,
description “Il mobile @`e un armadio.”,
after [;
Open:
give self general;
score=score+3;
“Aprendo l’armadio hai trovato un passaggio a est.”;
],
has static openable;

Object cestino “cestino” capanna
with name ‘cestino’,
description “@`E un cestino di vimini per funghi, ma non quelli della piscina.”,
after [;
Take: score=score+2;
],
has container open;

Object cinghiale “cinghiale” foresta
with name ‘cinghiale’,
description “Il cinghiale parla!”,
life [;
Tell, Ask:
if (capanna has visited) “Ti lamenti col cinghiale che a nord non ci sono funghi. Il cinghiale ti dice di guardare oltre.”;
“Il cinghiale ti chiede perch@’e sei qui. Tu gli rispondi che stai cercando dei funghi porcini. Il cinghiale allora ti suggerisce di andare a nord.”;
],
has static animate;

Object prato “prato”
with description “Attraverso l’armadio della capanna sei arrivato in un prato.”,
w_to Capanna,
has light;

Object funghi “funghi” prato
with name ‘funghi’ ‘fungo’,
describe “^Ci sono molti funghi qua!”,
description “Puoi provare a mangiarli, se ti fidi.”,
before [;
Take: if (cestino notin player) “Non hai nulla in cui metterli.”;
],
after [;
Eat: deadflag=2; score=score+5; “Mmm, buoni!”;
],
has edible pluralname;

[Initialise;
location=foresta; “Riuscirai a trovare e a mangiare i funghi nascosti senza farti trollare dal cinghiale?^”;
];

Include “italiang”;

Come già detto in passato, chi vuole imparare a scrivere giochi del genere in Inform 6 può dare un’occhiata alla parte pratica della mia doppia guida su come creare avventure testuali.