Design of a client-server architecture for the gamification of socio-economic behavioral experiments

Human behavior in different contexts is explored by experimental sociologists and economists through decision-making experiments that reproduce socio-economic scenarios in a stylized way. Traditional experiments are organized in physical labs or through crowd-work platforms and volunteers receive economic incentives to guarantee the validity of their answers.

The general aim of the project is to explore a new way of rewarding participants, by providing them a ludic experience in lieu of the economic reward. As a first step in this direction, the project will develop a client-server architecture to run a virtual game implementing the iterated Prisoner’s Dilemma, a classic game for which many datasets of traditional experiments are available for comparison.

The idea is to exploit the ICT services of Politecnico di Milano to host the server for a mobile app. The hosting services @PoliMi are based on docker containers running on a web server. The developed architecture will be modular and scalable, to serve for future experiments of different nature.

Required skills

– Web application programming and networking

– Docker container technology
– Data base management
– Gitlab version control
Contacts:

Prof. Fabio Dercole (teacher of System’s Theory, DEIB Polimi, fabio.dercole@polimi.it),

Prof. Danilo Ardagna (teacher of Computing Infrastructures, DEIB Polimi, danilo.ardagna@polimi.it)

Simple Virtual Tabletop Environment

A causa della pandemia, molti giocatori usano oggi ambienti online collaborativi (Virtual Tabletop o VTT) come Roll20, Foundry VTT o owlbear.rodeo. L’obiettivo del progetto è fornire una piattaforma open source VTT basata su tecnologie moderne (i.e., JavaScript) all’interno del browser. Il modello di riferimento per le funzionalità è owlbear.rodeo, quindi si intende realizzare le funzionalità relative al vero e proprio tavolo di gioco (mappa condivisa con griglia, token, e possibilità di caricare/importare set di token e di mappe personali), ma non funzionalità specifiche di un particolare gioco (per questo tipo di progetto si veda “Sviluppo di Bot Telegram in Python“) e neanche la gestione della connessione audio/video (esistono già strumenti di questo tipo che potrebbero essere integrati, ma l’integrazione non è particolarmente utile).

Caratteristiche e obiettivi

  • Mappa di gioco: la mappa permette l’interazione da parte dei giocatori. È possibile definire un utente privilegiato che può caricare e modificare la mappa, mentre gli utenti normali possono solo muovere i propri token. La mappa avrà una griglia quadrata (opzionalmente, è possibile consentire la selezione di una griglia alternativa esagonale, nel caso in cui il progetto sia svolto da più persone).
  • Token: si tratta di immagini più piccole che vengono sovrimpresse alla mappa, e possono essere spostate (nel caso in cui il progetto sia svolto da più persone, è possibile associare ogni token a uno o più giocatori, consentendo solo a questi di muovere quel token, e associare opzionalmente alcune caratteristiche numeriche ai token, mostrando delle barre di progresso sopra o sotto il token stesso).
  • Salvataggio dei dati: il sistema deve consentire la persistenza, usando lo spazio di storage locale (i dati non vengono salvati su server).
  • Chat e tiro di dadi. È utile, al fine di avere un sistema abbastanza completo, realizzare una semplice chat integrata con un generatore di numeri casuali controllato da comandi con una semplice sintassi per consentire il tiro di dadi all’interno dell’applicazione.

Tecnologie: JavaScript (o affini, e.g. TypeScript), HTML, CSS, possibilmente (ma non necessariamente) un framework front-end (e.g., Vue, React o Angular)

Una prima versione si può trovare qui. Può essere usata come punto di partenza per progetti futuri.

È anche possibile partire da un VTT open source come Mythic Table. In questo caso l’obiettivo è di replicare le caratteristiche del server usando un linguaggio più portabile di C# (ad esempio Python).

Sviluppo di bot Telegram o Discord in Python

A causa della pandemia, molte persone stanno usando applicazioni di messaggistica istantanea e/o servizi di teleconferenza per svolgere attività che in precedenza erano principalmente tenute in presenza, ad esempio i Giochi di Ruolo. Telegram è una applicazione di messaggistica che ha di recente introdotto anche un supporto per le teleconferenze. Come molti servizi analoghi, Telegram supporta la possibilità di definire dei bot, che possono essere impiegati per automatizzare attività di gioco come tirare i dati, creare i personaggi, gestire e memorizzare le schede dei personaggi.

Un sistema analogo, ma più diffuso per i giochi di ruolo è Discord. La discussione seguente vale per entrambi i sistemi.

Questa proposta è volta a realizzare bot che supportino specifici regolamenti di Giochi di Ruolo (meglio se open source). A titolo di esempio, sarebbe possibile supportare la SRD di Traveller (https://www.traveller-srd.com), impiegando l’implementazione python-telegram-bot (https://github.com/python-telegram-bot) dell’API per i bot Telegram.

Esempi di attività che potrebbero essere supportate:

  • Gestione del tiro dei dadi.
  • Memorizzazione e visualizzazione delle schede dei personaggi.
  • Generazione dei personaggi.
  • Gestione della campagna (memorizzazione e visualizzazione di personaggi non giocanti e del diario della campagna).
  • Automazione della scheda del personaggio (usando i comandi del bot e, dove utile, la tastiera virtuale).
  • Strumenti per il master che consentano di svolgere delle attività nascoste attraverso una conversazione separata con il bot.
  • Consentire l’accesso nella app alla mappa dell’universo di Traveller (https://travellermap.com) ed eventualmente anche ad altre fonti di dati sull’universo (e.g., https://travellertoolsdemo.azurewebsites.net/world).

Di seguito, un elenco di altri giochi che è possibile implementare (si tratta in generale di giochi open source, o comunque dotati di documenti di specifica aperti, si può vedere anche la pagina di Wikipedia sul movimento Open Gaming per altre idee):

Progetti già realizzati (utilizzabili come punto di partenza, esempio, etc):

Simulazione di sistemi elettorali in Python

Docente

Giovanni Agosta (web, mail)

Area di ricerca

Metodologie e architetture software avanzate

Keyword

Simulazione

Tecnologie da utilizzare

Python, librerie di analisi di dati (pandas, numpy)

Descrizione (max 500 caratteri)

Il progetto ha come obiettivo la realizzazione di un simulatore di sistemi elettorali usando come dati in ingresso gli open data del Ministero dell’Interno relativi alle elezioni politiche del 2013 (quando saranno disponibili, anche quelli relativi alle elezioni politiche del 2018).

Fasi del progetto:

  • Acquisizione dati (da csv con pandas/numpy)
  • Sviluppo della simulazione di uno o più sistemi elettorali (e.g., proporzionale con sbarramento, maggioritario di collegio, rosatellum, italicum, etc.)
  • Sviluppo della parte di presentazione dei dati (diagrammi a torta, mappe, etc.)

Nota bene: il progetto è ancora disponibile, ma si parte dalla versione più recente già sviluppata, disponibile su github.

Floating-point to fixed-point conversion

Docente

Giovanni Agosta (web, mail)

Area di ricerca

Architetture

Keyword

Fixed-point arithmetics

Sito web del progetto
TAFFO

Tecnologie da utilizzare

C++

Descrizione (max 500 caratteri)

Obiettivo di questo progetto è analizzare le prestazioni di un sistema di conversione semi-automatica da aritmetica in virgola mobile ad aritmetica in virgola fissa, realizzando una mini-applicazione benchmark (a partire da quelle delle suite mantevo o mediabench), per confrontare le prestazioni della versione in virgola fissa realizzata con il sistema semi-automatico con una versione generata manualmente.

Machine Learning techniques to Model Data Intensive Application Performance

Nowadays, Big Data are becoming more and more important. Many sectors of our economy are now guided by data-driven decision processes. Spark is becoming the reference framewrok while at the infrastructural layer, cloud computing provides flexible and cost-effective solutions for allocating on-demand large clusters, often based on GPGPUs.  In order to obtain an efficient use of such resources, it is required a model of such systems being at the same time precise and efficient to use.

One common way to model multi-class systems makes use analytical models like queueing networks or Petri nets. However, despite having a great accuracy in performance prediction, their significant computational complexity limits their usage. Machine learning techniques can solve this problem and develop models being accurate and scalable at the same time.

This project involves the development and validation of models for Big Data clusters based on Spark or based on GPGPUs to support deep learning applications training.  The project will develop benchmarking scripts to gather operational data and will compare multiple machine learning algorithms like Support Vector Regression, Linear regression and random forests.

[NESLab] IoT Dashboards

NESLab runs a number of IoT deployments at different places. One example is the zero-maintenance IoT deployment we are running at the Mithræum of Circus Maximus,UNESCO-protected underground archaeological site in Rome (Italy). Unique to our work is the use of energy harvesting through thermal and kinetic energy sources. Unlike existing energy-harvesting deployments that are limited to a few months of operation in the best cases, our system has been running with zero maintenance for more than 3 years, including 3 months of site inaccessibility due to a COVID19 lockdown. This project is about building a graphical dashboard showing the sensor data coming in real-time from the Mithræum and other similar IoT deployments we are running. We plan to use modern dashboard tools like Graphana. The project is part of the research activities of NESLab.

[NESLab] CubeSat Simulator

CubeSat (U-class spacecraft) is a type of miniaturized satellite for space research that is made up of multiple cubic modules of 10 cm × 10 cm × 10 cm size. CubeSats often use commercial off-the-shelf components for their electronics and often run open-source software. As such, they represent a formidable, yet low-cost platform for space research combining aerospace engineering, mechanical engineering, electronics, and computer science. NESLab successfully launched a CubeSat in 2019 that was operational for 5 months and is planning two more launches in the next two years.

The goal of the project is to help build a CubeSat simulator that combines hardware and software. The basis for the hardware part is the AMSAT CubeSatSim Project. The software part is to be developed. The project is part of the research activities of NESLab.

Least squares adjustment of 3D surveying networks

Docente

Mirko Reguzzoni (mail)

Referente del progetto

Lorenzo Rossi ( mail)

Area di ricerca

Metodologie e architetture software avanzate

Keyword (max 3 separate da virgola)

Leat-squares, Surveying

Descrizione (max 500 caratteri)

The goal is to develop a software for geodetic network adjustment (total station, level and GNSS receiver data). The software needs an interface to load, visualise and manage the observations and the results of the linear / non-linear least squares adjustment. Required geoid corrections have to be predicted from a geoid model. Vectorial (shp or dxf) and tabular (txt) formats are required for the output.

Earth crustal thickness from gravimetric inversion by Wiener filtering

Docente

Mirko Reguzzoni (mail)

Area di ricerca

Metodologie e architetture software avanzate

Keyword (max 3 separate da virgola)

Gravimetric-inversion, Wiener-filter, Satellite-data

Descrizione (max 500 caratteri)

The goal is to write a software that is able to model the discontinuity surface between Earth crust and mantle from satellite gravimetric observations. This surface is called Moho. It is required to read the gravity data from an online service (http://icgem.gfz-potsdam.de), to strip the data under the assumption of a two-layer model and finally to solve the inverse gravimetric problem through an iterative Wiener filter procedure in planar approximation. The output surface has to be properly visualized, together with the error estimates.