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

Regolamento del gioco

Il gioco si svolge su un campo rettangolare e prevede l'interazione fra due giocatori ed avviene tramite due racchette ed una pallina.
Ogni giocatore controlla una racchetta di forma circolare ed ha l'obiettivo di fare entrare la pallina, anch'essa di forma circolare, nella porta dell'avversario.
La partita termina quando uno dei due giocatori ha raggiunto il numero di goals precedentemente fissato per vincere (oppure nel caso in cui, per vari motivi, la comunicazione tra i due non sia più possibile).
Il campo è diviso longitudinalmente in tre parti. Le due parti esterne costituiscono le due aree di pertinenza dei giocatori e sono le uniche zone del campo in cui essi possono muoversi, mentre la zona centrale è off-limits per entrambi.

Un match si articola in due fasi :

  • nella prima fase vengono impostati i vari parametri della partita, in particolare parametri geometrici, dinamici e grafici
  • nella seconda fase si svolge la partita vera e propria e l'interazione avviene finalmente sul campo di gioco, secondo le impostazioni fissate precedentemente

I parametri personalizzabili possono sostanzialmente essere distinti in cinque categorie :

  • geometrici - riguardano le dimensioni del campo, delle aree, della pallina, ecc.
  • fisici - vanno a calibrare i modelli fisico-matematici usati per i movimenti delle racchette, della pallina e gli scontri tra essi
  • grafici - permettono di impostare i colori dei vari elementi del gioco
  • regolamentari - in sostanza il numero do goals per vincere
  • personali - riguardano le impostazioni personali dei singoli giocatori (come il nome)

All'inizio del match si ha una distinzione nel ruolo dei due giocatori. Vi è un master ed uno slave.
Il master ha il diritto di modificare tutti i parametri (naturalmente sempre all'interno del loro dominio) a parte quelli personali dello slave. Viceversa lo slave può modificare solo i propri parametri personali, ma viene comunque notificato riguardo alla variazione degli altri.

PARAMETRI GEOMETRICI

Attualmente i parametri geometrici modificabili e i limiti di variabilità sono

NOME DEL PARAMETRO
SIGNIFICATO
VAL. MIN.
VAL. MAX.
UNITA'
FIELDLENGTH Lunghezza del campo
200
800
pixels
FIELDHEIGHT Larghezza del campo
200
400
pixels
ZONE Lunghezza delle aree rispetto a FIELDLENGTH
10
45
%
RACD Diametro della racchetta
10
FL*ZONE%
pixels
BALLD Diametro della pallina
10
RACD
pixels
GOALHEIGHT Larghezza della porta rispetto a FIELDHEIGHT
10
100
%

L'immagine seguente può chiarire meglio come questi parametri andranno ad influenzare l'ambiente di gioco.


PARAMETRI DINAMICI

Per la dinamica degli oggetti coinvolti si sono usate formule derivate dalle fondamentali della fisica. Quindi i particolare

Evidentemente la trattazione del problema è bidimensionale e questa formula, insieme alle seguenti, è da intendersi relativamente ad ognuno dei due assi cartesiani.

In particolare il moto della racchetta è soggetto alla seguente legge :

(dove con spinta si intende quella dovuta all'input dell'utente, mentre con attrito_rac si intende l'attrito viscoso applicato alla racchetta)

Nello scontro della racchetta con le pareti del campo la componente perpendicolare della sua velocità è soggetta alla seguente legge:

quindi il paramero anel rappresenta il coefficiente di anelasticità negli urti della racchetta contro i bordi del campo

Per quanto riguarda la pallina l'accelerazione è data solo da

(con attrito_ball = attrito viscoso per la pallina, che può essere diverso dal corrispondente per le racchette)

Inoltre per la pallina è possibile settare un valore massimo per la velocità.
Lo scontro della pallina contro le pareti è modellato come uno scontro completamente elastico.

Lo scontro tra una racchetta ed una pallina è più complesso. Si consideri al riguardo la seguente figura:

Lo scontro rappresentato in figura avviene con i centri di racchetta e pallina allineati sull'asse X. Questo è il modo più semplice per esprimere le equazione che lo governano. In seguito si vedrà come considerare il caso generico.
L'assunzione che si è fatta è che la racchetta non risenta minimamente dell'urto, come se avesse massa infinita rispetto a quella della pallina. La pallina, invece, in seguito ad un urto vedrà modificata unicamente la componente della sua velocità sull'asse che congiunge i due centri.
Indicando con vb' tale velocità prima dell'urto e con vb'' la stessa dopo l'urto (mentre la vr rappresenta la componente della velocità della racchetta sul medesimo asse, la quale come detto rimane invariata) vale la seguente formula:

Rimane da generalizzare questo discorso, considerando urti lungo un asse qualsiasi. Semplicemente si calcoleranno le conseguenze dell'urto in un sistema di riferimento con asse x coincidente con la retta passante per i due centri. Questo lo si farà utilizzando la formula appena introdotta.
A questo punto non rimarrà altro che convertire i vettori dal sistema di riferimento relativo a quello assoluto.


Le formule per passare da un sistema di riferimento ad un altro sono le seguenti :

Quindi ricapitolando i parametri dinamici sono :

NOME DEL PARAMETRO
SIGNIFICATO
ATTRITO_RAC Attrito viscoso della racchetta
SPINTA Forza di spinta dell'input
IMPULSO Impulso dato dalla racchetta alla pallina
ANEL Anelasticità della racchetta negli urti con bordi
ATTRITO_BALL Attrito viscoso della pallina
VELMAX Velocità massima della pallina
PARAMETRI GRAFICI

E' possibile impostare il colore del campo (background) e della pallina.

PARAMETRI REGOLAMENTARI

Si può per ora impostare il numero di goals necessario per vincere.

PARAMETRI PERSONALI

Ogni giocatore può decidere il proprio nome ed il colore della propria racchetta .

SECONDA FASE : SVOLGIMENTO DELLA PARTITA

In base alla configurazione scelta nella fase precedente ha ora inizio il gioco. La pallina viene inizialmente posta nella zona del master e successivamente ad ogni goal nella zona del giocatore che l'ha subito. Gli urti tra racchetta e pallina provocano effetti secondo le formule espresse nel paragrafo precedente.

Tematiche introdotte dal Real-time

La scelta di realizzare un gioco real-time comporta alcune sostanziali problematiche di ordine tecnico. Per applicazioni di questo tipo il problema più grande è la prestazione della rete. Tipicamente si caratterizza tale prestazione con due misure : la larghezza di banda e la latenza.
La larghezza di banda è la quantità di dati che si può trasferire in un determinato lasso di tempo, mentre la latenza è il tempo che impiega un pacchetto di dati per andare dal mittente al destinatario.

Larghezza di banda e latenza pongono vincoli molto stringenti nella realizzazione di giochi di rete real-time. Però mentre la banda influenza sostanzialmente la scalabilità del gioco e può essere affrontata anche ad uno stadio avanzato del progetto (per esempio introducendo tecniche di compressione), la latenza influisce direttamente sulla comprensione del gioco, e questo problema deve essere già affrontato nelle fasi iniziali di progetto.
Per affrontare le latenze tipiche di una connessione via internet (supponiamole di 200-300 ms), la tolleranza di tali latenze deve fare parte del modello di comunicazione del gioco.

Le latenze implicano che le visioni che i giocatori hanno dello stato del gioco siano non perfettamente sincronizzate. Questo evidentemente non può essere evitato e del resto è ammissibile che per piccoli periodi di tempo questo avvenga. La cosa importante è riconciliare la visioni del mondo in seguito ad avvenimenti significativi.

Pur non considerando la realizzazione di questo gioco il punto cruciale del progetto si sono però cercate soluzioni progettuali che soddisfino almeno in parte le esigenze ora esposte.

Indietro Inizio pagina Avanti
Indice   Fabio Adani e Marco Chiesi