In parole povere, si tratta di un mix di php,mysql e gml che dovrebbe evitare a chi crea giochi online di inserire manualmente l'indirizzo IP dell'host, fornendo invece una lista di partite in cerca di giocatori, come da immagine sottostante:
![Immagine](http://www.ekalia.com/gm/gameserver/screenshot.png)
COSA SERVE
Per far funzionare il tutto vi servono:
- La gex della 39dll di bobistaken
- Uno spazio web con mysql (altervista può andare bene)
- Questo file zip contenente il gmk+exe d'esempio e le pagine php (GM8) o questo file gmk (GM7, solo editabile)
COME FUNZIONA
Il funzionamento é piuttosto semplice a grandi linee, abbiamo un database di partite in cerca di giocatori su un server, game maker tramite l'aiuto della 39dll si collega a delle pagine php sul server che vanno ad estrarre o modificare dati nel database. Eventuali parametri che devono andare a finire nel database come il nome della partita sono inviati nella richiesta della pagina php
Abbiamo le seguenti pagine:
list.php: Questa pagina genera la lista delle partite, che vengono restituite a Game Maker come stringhe. Sta poi al programmatore estrarre i necessari dati dalle stringhe. Se l'accesso alla pagina avviene tramite un browser, viene mostrata una tabella di partite in html.
insert.php: Permette di indicare al server la creazione, modifica o aggiornamento di una partita. Si aspetta di ricevere come parametri il nome del giocatore e il nome della partita stessa. L'ip di chi crea la partita viene salvato, di conseguenza se si chiama questa pagina dopo aver creato una partita, la partita viene aggiornata.
delete.php: Permette di eliminare una partita
config.php: contiene le informazioni di collegamento al database
Per questioni di sicurezza, non é possibile creare piu di una partita per IP. La creazione di una partita per un ip gia esistente nel database, andrà a modificare la partita esistente senza crearne una nuova.
UTILIZZO
Prima di tutto va creato sul server il database mysql che conterrà le partite. Di default il sistema si aspetta di trovare una tabella in mysql contenente i seguenti campi:
ip (VARCHAR 255)
name (VARCHAR 255)
player (VARCHAR 255)
last_update (DATETIME)
Ovviamente si tratta di campi minimi, a seconda del gioco e di quello che si vuole andrebbero ampliati
In seguito, aprire il file config.php e inserire nei vari campi i dati del proprio database, come il nome, server, password ecc... e caricare tutti i file php sul server.
A livello di game maker l'esempio incluso dovrebbe coprire la maggior parte dell'utilizzo standard. Ci sono alcuni punti però da tenere presente e alcuni script da configurare:
1. nell'evento create del controller_obj abbiamo la variabile "host". Va inserita in quella variabile l'indirizzo del sito con i file php (es: "www.gmitalia.altervista.org")
2. Negli script get_list_scr, upload_scr, delete_scr vanno modificati gli indirizzi delle pagine php sul server (es: "/gamemaker/miogioco/list.php")
IMPORTANTE! Quando si crea una partita sul server tramite lo script upload_scr, viene inserita la data di creazione della partita. Dopo 15 secondi, se questo script non viene chiamato nuovamente, la partita sparisce in automatico. Idealmente quindi, mentre l'host aspetta giocatori, ogni circa 10 secondi deve comunicare nuovamente al server (sempre con upoad_scr) che é ancora in attesa ed eventualmente un cambiamento nel nome della partita