Indice - Progetto di Reti di Calcolatori - Fabio Adani e Marco Chiesi
Specifiche

Descrizione del sistema

Lo scopo del presente progetto è realizzare una piattaforma distribuita per l'esecuzione di giochi multiplayer. In particolare le caratteristiche volute sono le seguenti:

  • Interazione client-server. Ogni giocatore dispone di un'applicazione client in grado di collegarsi a un server che fornisce tutte le funzionalità relative ai vari giochi, come ad esempio creazione di partite, scambio di messaggi tra gli utenti (chat).
  • Modularità. Il sistema è modulare, cioè è possibile aggiungere e togliere i giochi installati sia sul server che sul client. Ovviamente i moduli dei giochi devono essere creati ad hoc per funzionare sul sistema.
  • Aggiornamento dinamico. Un server, oltre alla gestione vera e propria dei giochi, fornisce ai clienti anche la possibilità di scaricare nuovi giochi presenti sul server, che saranno poi installati come plug-in nell'applicazione client.
  • Autenticazione. Il sistema prevede l'autenticazione degli utenti al momento della connessione al server, tramite nome utente e password. L'autenticazione è demandata a un server apposito adibito esclusivamente alla gestione degli utenti.
  • Archittettura multiserver. Il sistema è composto da un certo numero di server completamente connessi tra loro (collegamento peer-to-peer). Ogni server mantiene lo stato di tutta la rete e provvede a sincronizzarsi con gli altri.
  • Dinamicità. Ciascun server può connettersi o disconnettersi dalla rete in qualsiasi momento senza che venga alterato il funzionanamento della rete. Chiaramente in caso di disconnessione i client connessi a quel server saranno anch'essi disconnessi dalla rete.
  • Trasparenza. Ciascun utente può collegarsi a uno qualunque dei server della rete ed interagire in modo trasparente con tutti gli altri presenti nella rete, anche se connessi tramite altri server.
  • Estendibilità. Il sistema è in grado di gestire diversi tipi di gioco, sia a livello di interazione tra i giocatori (giochi a turni e in tempo reale), sia a livello di architettura (peer to peer, client server, ibrida). Questo è possibile grazie all'indipendenza del sistema dai moduli che realizzano i singoli giochi.
  • Portabilità. Il sistema può essere eseguito su qualsiasi piattaforma hardware. Come vedremo questo aspetto è intrinsecamente legato al linguaggio di programmazione utilizzato (Java).

Contestualmente alla realizzazione del sistema, saranno anche creati due giochi per mettere in evidenza alcune delle caratteristiche sopra elencate.

Indietro Inizio pagina Avanti
Indice   Fabio Adani e Marco Chiesi