L’ICS (institue of Cognitives Sciences) est un laboratoire interdisciplinaire qui intègre l'expertise de chercheurs des Sciences de la Vie (psychologie cognitive, neurosciences) et de médecine (pédopsychiatrie, neuro-pediatrie) avec celle de chercheurs des Sciences Humaines et Sociales (linguistique computationelle et théorique et philosophie) pour étudier la nature et la spécificité de l'esprit humain.
Le doctorant, qui n’est pas un développeur, a besoin d’accumuler des données expérimentales. Il a besoin que des volontaires jouent l’un contre l’autre un nombre de fois à définir, sans jamais savoir qui sont leurs adversaires. On définira une partie comme étant un certain nombre de rounds. Un round est défini comme une confrontation trahison-collaboration entre les deux volontaires.
Ce projet est dépendant de la librairie libconfig.
Exécutez la commande suivante dans un terminal.
sudo apt install libconfig-dev
Exécutez la commande suivante dans un terminal.
dnf install libconfig-devel
Exécutez la commande suivante dans un terminal.
# Clonez le dépot Github
$ git clone https://github.com/victordrnd/socket-server.git
# Aller vers le répertoire
$ cd socket-server
# Compiler le projet (make all, make server, make client)
$ make all
# Executer le serveur/client
$ ./output/server
$ ./output/client
La configuration du serveur se trouve dans le fichier output/config/server_config.cfg
une fois le serveur compilé.
bind_ip = "0.0.0.0";
bind_port = 7799;
max_simultaneous_connection = 50;
game_configuration =
(
{
name = "room_1";
initial_amount = 50;
nb_games = 10;
clients = (
{client_id = 1;},
{client_id = 2;}
);
},
{
name = "room_2";
initial_amount = 50;
nb_games = 10;
clients = (
{client_id = 3;},
{client_id = 4;}
);
}
);
La configuration du client se trouve dans le fichier output/config/client_config.cfg
une fois le client compilé.
client_id = 1;
server_ip = "127.0.0.1";
server_port = 7799;
Il est par ailleurs possible de modifier la configuration en ajoutant des arguments à l'exécution du programme, ces changements sont prioritaires par rapport au fichier de configuration.
Usage: client [OPTION...]
client -- Dilemme du prisonnier de l'Institut des Sciences Cognitives
-c, --client_id=1 Force client_id over config file
-h, --host=127.0.0.1 Force server_ip over config file
-p, --port=7799 Force server_port over config file
-?, --help Give this help list
--usage Give a short usage message
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
Une fois les deux adversaires connectés, la partie se lance, chacun des joueurs fait alors un choix, trahir ou collaborer.
Choix n° 1 | Choix n° 2 | Détails |
---|---|---|
COLLABORATE | COLLABORATE | Aucune perte d'argent |
BETRAY | COLLABORATE | Le client 1 double sa mise, le client 2 perd la sienne |
COLLABORATE | BETRAY | Le client 2 double sa mise, le client 1 perd la sienne |
BETRAY | BETRAY | Les deux clients perdent leurs mises |
Une fois la partie terminée, les résultats sont accessibles dans le fichier {nom_room}.csv
.
Remarque : A chaque démarrage de partie sur cette room, les anciennes données associées à cette salle sont suprimmées. Il est important de sauvegarder les résultats après chaque partie.
La documentation spécifique au développement de ce projet est disponible ici