{"id":9554,"date":"2016-09-13T18:07:59","date_gmt":"2016-09-13T16:07:59","guid":{"rendered":"https:\/\/informatica.uniurb.it\/triennale\/?p=9554"},"modified":"2016-09-14T15:50:17","modified_gmt":"2016-09-14T13:50:17","slug":"una-caccia-al-tesoro-guidata-da-un-bot","status":"publish","type":"post","link":"https:\/\/informatica.uniurb.it\/triennale-informatica\/una-caccia-al-tesoro-guidata-da-un-bot\/","title":{"rendered":"Una caccia al tesoro guidata da un Bot"},"content":{"rendered":"
Il 26 agosto, in occasione della summer school \u201cCoding in your Classroom, Now!\u201d, si \u00e8 svolta una grande caccia al tesoro nel centro storico di Urbino: 26<\/strong> gruppi, composti da 139<\/strong> partecipanti complessivamente, si sono sfidati inseguendo indizi attraverso le strade strette e ripide della citt\u00e0, seguendo gli ordini di un\u2026\u00a0bot<\/strong>.<\/p>\n Il gioco \u00e8 stato sviluppato durante la settimana precedente l\u2019evento e l\u2019intero team alle spalle della caccia al tesoro ha impiegato i concitati minuti appena prima dell\u2019inizio sistemando gli ultimi bug. (Beh, la maggior parte di essi.)<\/p>\n 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 \u201cUrbino Code Hunting<\/a>\u201d, si basasse su giochi di coding.<\/p>\n <\/p>\n Ci\u00f2 che ha reso interessante la caccia al tesoro \u00e8 che l\u2019intero processo di registrazione, l\u2019effettiva caccia, la soluzione degli indovinelli e le altre meccaniche di gioco erano gestite direttamente da un bot Telegram<\/a>. Chiunque avesse un account Telegram poteva facilmente registrarsi nei 4 giorni precedenti il gioco semplicemente iniziando una conversazione con lo stesso.<\/p>\n Il bot chiedeva agli utenti di risolvere un gioco \u201cpreliminare\u201d (per preparare i giocatori a ci\u00f2 che sarebbe venuto dopo e lavorare a un qualche tipo di captcha<\/em>), da quanti altri partecipanti sarebbe stata composta la squadra oltre al capogruppo, e il nome del gruppo.<\/p>\n Solitamente una caccia al tesoro chiede ai giocatori di trovare oggetti nascosti o raggiungere posti segreti basandosi su indizi, pi\u00f9 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\u00e9 il tema del gioco era il coding, sia perch\u00e9 molti dei partecipanti non conoscevano bene la citt\u00e0. Dunque le postazioni da raggiungere erano indicate\u00a0esplicitamente dal bot.<\/p>\n Il gioco vero e proprio era cos\u00ec strutturato:<\/p>\n Abbiamo identificato 30 postazioni ben distribuite nella citt\u00e0<\/a>, contrassegnate da una descrizione, una precisa posizione GPS, un ID numerico, e un codice segreto (16 caratteri alfanumerici casuali).<\/p>\n 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:<\/p>\n Questo link utilizza la funzione Telegram di deep linking<\/em><\/a>: dopo aver aperto l\u2019URL attraverso la scansione del QR Code, il telefono avvia automaticamente il client Telegram e invia la sequenza \u201c 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 \u00e8 stata scelta casualmente per ogni team.<\/p>\n Gli enigmi, che erano erogati non appena un gruppo raggiungeva una postazione ed aveva inviato un selfie<\/em> di conferma, erano basati sui quiz CodyRoby<\/a>. Questi semplici giochi di logica utilizzano convenzioni condivise, come i blocchi colorati di pseudo-codice Blockly <\/em>usati in Code.org e le carte coding CodyRoby<\/a>.<\/p>\n 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\u2019attesa forzata di 60 secondi prima del tentativo successivo.<\/p>\n 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\u2019ultimo rebus: non appena una squadra raggiungeva l\u2019ultima 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\u2019ambito premio.<\/p>\n Il primo gruppo che lo avesse raggiunto, avrebbe vinto il premio e ricevuto un altro meraviglioso QR Code. (E comunque, chi \u00e8 che non ama i QR Code?) Quest\u2019ultimo codice segnalava la fine del gioco per tutti i partecipanti.<\/p>\n
<\/p>\nLe registrazioni al gioco erano gestite da una comune conversazione con il bot.<\/strong><\/h4>\n
<\/p>\n\n
Ogni posto aveva il suo codice segreto di 16 caratteri.<\/strong><\/h4>\n
https:\/\/telegram.me\/treasurehuntbot?start=0123456789ABCDEF<\/pre>\n
\/start 0123456789ABCDEF<\/code>\u201d al nostro bot, senza mostrarla effettivamente all\u2019interno della conversazione. Dato che ogni QR Code conteneva il codice segreto di 16 caratteri della postazione all\u2019interno dell\u2019URL, il bot sapeva con certezza quale codice il gruppo aveva scansionato e dunque la postazione raggiunta.<\/p>\nAl fine di assicurare il massimo della correttezza, le sequenze di postazioni sono state generate in anticipo con un limite alla lunghezza\u00a0massima (e minima).<\/strong><\/h4>\n
<\/p>\n
\n<\/em><\/p>\nUn canale Telegram era usato per trasmettere informazioni, condividere i selfie<\/em>, e rendere il gioco pi\u00f9 coinvolgente.<\/strong><\/h4>\n