Array multidimensionale mappa browsergame

Lollo_090

Nuovo Utente
31 Gen 2013
11
0
1
Ciao a tutti!
Sto sviluppando un browsergame e mi sono trovato davanti un problema quando, dopo le prime prove, ho cominciato a creare una struttura che ospitasse una mappa di dimensioni adatte ad un discreto numero di utenti.
Il tutto è gestito tramite un demone php e uno scambio di socket tra server e client, questo per far sì di avere i dati in una serie di matrici anziché dover fare query su DB per ogni richiesta, per ovvie motivazioni. Di conseguenza tutti i dati sono immagazzinati nella ram e sempre accessibili.
Il problema si è presentato quando questa matrice ha cominciato ad ospitare una mappa consistente: circa 7.000.000 di chiavi. So che può sembrare un numero esagerato, ma secondo i conti, a livello di giocabilità, non sono poi così tanti
Facendo così il server richiede diversi GB di memoria solo per creare la mappa. Si è pensato ovviamente di fare un a mappa che si riempisse gradualmente e quindi evitare di occupare questo spazio anche a mappa vuota, però il dubbio è di stare facendo la struttura in modo sbagliato, o che magari ce ne fosse uno migliore...

PHP:
$x=1;
$y=1;
for($z=1; $z<7372800;$z++){
    if($x>3840){$x=1;$y++;}
    $mat = rand(12,19);
    $quantita = rand(1, 10);
    $MAPPA[$x.'-'.$y] = array(
                            'materiali'=>array(
                                    'nome'=>$mat,
                                    'quantita'=>($quantita/5)
                             )
                        );
    $x++;
}
 
Ultima modifica di un moderatore:
Alla fine abbiamo optato per un database in mongodb e un demone in nodejs e sembra che il problema sia risolto! :)
 

Discussioni simili