Ciao,
ultimamente sto riscrivendo un giochino, e intendevo strutturarlo in modo più consono alla filosofia ad oggetti... vi spiego.
Lato server ho tre classi che possiamo definire fondamentali, sono Giocatori, Fisica, e Input/Output.
Queste tre classi devono comunicare tra loro, e i messaggi che si scambiano probabilmente influenzeranno il funzionamento su più di una classe, quindi ogni comunicazione deve essere tracciata.
Per esempio, la richiesta di sparare arriva nella classe Input, viene avvisata la classe Giocatore dove viene controllata la validità dell'azione (giocatore connesso, arma in uso, proiettili sufficienti ecc...), se ok viene spedita alla classe Fisica che crea l'oggetto nel mondo fisico (e anche qui si possono generare errori). se la Fisica da l'ok, allora al giocatore viene tolto un proiettile, ecc... e a questo punto si ritorna da Input/Output che invia il messaggio al client.
Attualmente c'è un sistema che funziona ma è implementato male (l'ho scritto alla buona) ma ora vorrei migliorare.
Le idee di pensiero che son saltate fuori sono fondamentalmente 2:
1. Ogni classe possiede le sue classi Azioni, le quali hanno un ID che si occupa di tracciare il messaggio, e un metodo run() che prende in input la classe priciplale da modificare (Giocatori, Fisica, Input/Output) e un'Azione di risposta(NULL se non c'è) e che si occuperanno delle modifiche, check, e creare le azioni da inviare alle altre classi.
2. Un sistema a messaggi. Ogni messaggio viene interpretato all'interno delle classi principali (Giocatori, Fisica, Input/Output) che possiederanno un metodo per ogni messaggio (più o meno), senza giochi di riferimenti o altro
In pratica, meglio il codice in metodi all'interno delle classi principali o comunque di loro classi "naturali" (ad esempio la classe Giocatore è una classe "naturale" della classe Giocatori) o contenerlo in classi ben distinte?
Esistono anche 3 idee sul sistema di trasmissione dei messaggi:
1. il classico sistema ad albero. Solo 2 classi "vicine" possono comunicare tra loro
2. una classe "postino", possiede un riferimento di ogni classe principale, ed esse contengono un riferimento ad esso, così un messaggio può spostarsi con solo due passaggi.
3. Una ibrida, una clase postino tra i vari container di oggetti fisici, giocatri e IO, ma poi saranno questi a smazzare il messaggio/azione ai loro figli
Scusate il papiro ma è da un pò che son dietro a questo progetto e ci tengo venga bene.
Secondo voi quali sono le metodologie migliori? e perchè? Ne conoscete altre?
Un grosso grazie a chi mi vorrà aiutare