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.
|