Skip to content

Una caccia al tesoro guidata da un Bot

Il 26 agosto, in occasione della summer school “Coding in your Classroom, Now!”, si è svolta una grande caccia al tesoro nel centro storico di Urbino: 26 gruppi, composti da 139 partecipanti complessivamente, si sono sfidati inseguendo indizi attraverso le strade strette e ripide della città, seguendo gli ordini di un… bot.

Il gioco è stato sviluppato durante la settimana precedente l’evento e l’intero team alle spalle della caccia al tesoro ha impiegato i concitati minuti appena prima dell’inizio sistemando gli ultimi bug. (Beh, la maggior parte di essi.)

La summer school, rivolta agli insegnanti di tutte le classi, ha avuto come obiettivo principale quello di portare il coding nelle scuole, cercando di coinvolgere sia gli insegnanti che i giovani studenti. Pertanto, era logico che la stessa caccia al tesoro, chiamata “Urbino Code Hunting”, si basasse su giochi di coding.

Treasure hunt bot, registration

Ciò che ha reso interessante la caccia al tesoro è che l’intero processo di registrazione, l’effettiva caccia, la soluzione degli indovinelli e le altre meccaniche di gioco erano gestite direttamente da un bot Telegram. Chiunque avesse un account Telegram poteva facilmente registrarsi nei 4 giorni precedenti il gioco semplicemente iniziando una conversazione con lo stesso.

Le registrazioni al gioco erano gestite da una comune conversazione con il bot.

Il bot chiedeva agli utenti di risolvere un gioco “preliminare” (per preparare i giocatori a ciò che sarebbe venuto dopo e lavorare a un qualche tipo di captcha), da quanti altri partecipanti sarebbe stata composta la squadra oltre al capogruppo, e il nome del gruppo.

Urbino Code Hunting map

Solitamente una caccia al tesoro chiede ai giocatori di trovare oggetti nascosti o raggiungere posti segreti basandosi su indizi, più o meno vaghi. Nel nostro caso, il gioco effettivo era costruito attorno indovinelli di coding assegnati dal bot, ma non sul riconoscere i posti grazie agli indovinelli, sia perché il tema del gioco era il coding, sia perché molti dei partecipanti non conoscevano bene la città. Dunque le postazioni da raggiungere erano indicate esplicitamente dal bot.

Il gioco vero e proprio era così strutturato:

  • 1) Ogni gruppo ha una postazione casuale da raggiungere (un’ubicazione geografica precisa che corrisponde a un punto sulla mappa).
  • 2) Raggiunto il posto assegnato, il gruppo scatta un selfie e lo invia al bot.
  • 3) Il bot sceglie uno degli indovinelli di coding e aspetta la risposta della squadra. Il bot obbliga ad un’attesa di 1 minuto tra un tentativo e l’altro.
  • 4) Se la soluzione è corretta, si ottiene dal bot un nuovo indizio per l’enigma finale.
  • 5) Andare al punto 1.

Abbiamo identificato 30 postazioni ben distribuite nella città, contrassegnate da una descrizione, una precisa posizione GPS, un ID numerico, e un codice segreto (16 caratteri alfanumerici casuali).

Ogni posto aveva il suo codice segreto di 16 caratteri.

Come faceva il bot ad accertarsi che il gruppo avesse raggiunto la propria destinazione? Semplice. Avevamo stampato 30 cartelli di carta (su fogli A4), uno per ogni postazione, con uno speciale QR Code collegato a un URL che seguiva questo schema:

https://telegram.me/treasurehuntbot?start=0123456789ABCDEF

Questo link utilizza la funzione Telegram di deep linking: dopo aver aperto l’URL attraverso la scansione del QR Code, il telefono avvia automaticamente il client Telegram e invia la sequenza “/start 0123456789ABCDEF” al nostro bot, senza mostrarla effettivamente all’interno della conversazione. Dato che ogni QR Code conteneva il codice segreto di 16 caratteri della postazione all’interno dell’URL, il bot sapeva con certezza quale codice il gruppo aveva scansionato e dunque la postazione raggiunta.

Il bot guidava ciascun gruppo lungo la propria strada attraverso una sequenza di 12 posizioni. Per assicurarsi che le squadre non si seguissero fra loro e che non si radunassero nella stessa area, tale sequenza è stata scelta casualmente per ogni team.

Al fine di assicurare il massimo della correttezza, le sequenze di postazioni sono state generate in anticipo con un limite alla lunghezza massima (e minima).

Gli enigmi, che erano erogati non appena un gruppo raggiungeva una postazione ed aveva inviato un selfie di conferma, erano basati sui quiz CodyRoby. Questi semplici giochi di logica utilizzano convenzioni condivise, come i blocchi colorati di pseudo-codice Blockly usati in Code.org e le carte coding CodyRoby.

Sample CodyRoby quiz

Esempio di domanda.

Tutti gli indovinelli richiedevano almeno un paio di minuti per essere risolti e la risposta poteva essere data con un semplice messaggio di testo, solitamente una singola lettera o un singolo numero. Le risposte venivano accettate in modo magnanimo, con spazi bianchi, in maiuscolo o minuscolo, e in varie formattazioni. Le risposte sbagliate obbligavano ad un’attesa forzata di 60 secondi prima del tentativo successivo.

Le risposte corrette, invece, non soltanto permettevano al gruppo di proseguire, ma lo premiavano anche con un importante indizio che sarebbe poi servito per risolvere l’ultimo rebus: non appena una squadra raggiungeva l’ultima posizione (che ci siamo assicurati fosse la stessa per tutti i gruppi), le veniva consegnata una mappa (una vera, tangibile, autentica mappa di carta) da usare per scovare il posto esatto in cui era nascosto l’ambito premio.

Il primo gruppo che lo avesse raggiunto, avrebbe vinto il premio e ricevuto un altro meraviglioso QR Code. (E comunque, chi è che non ama i QR Code?) Quest’ultimo codice segnalava la fine del gioco per tutti i partecipanti.

Un canale Telegram era usato per trasmettere informazioni, condividere i selfie, e rendere il gioco più coinvolgente.

Il canale Telegram Urbino Code Hunting è stato creato il giorno del gioco e tutti i partecipanti sono stati invitati ad aderirvi. I principali progressi dei gruppi erano trasmessi nel canale, insieme a tutti i selfie scattati dalle varie postazioni. Il canale permetteva ai partecipanti e a noi di monitorare lo stato del gioco, e dunque di renderlo più coinvolgente mano a mano che i gruppi raggiungevano la loro destinazione finale.

Urbino Code Hunting selfie collection

Una parte di tutti i selfie collezionati dal bot.

Il bot è stato gestito da un programma PHP e da un database MySQL, assemblati in meno di una settimana. Il codice sorgente è stato pubblicato su Github sotto licenza MIT, se volete dare un’occhiata. Attualmente, installare il bot per una caccia al tesoro nel vostro giardino potrebbe non essere tra i compiti più facili, ma stiamo già lavorando per renderlo riutilizzabile per tutti.
(E abbiamo altri piani significativi—e spaventosi?—per il futuro…)

Torna su