Dato che è un pò che non scrivo qualcosa, mettiamo online il progetto che mi sta tenendo super impegnato in questo periodo:
E‘ presto spiegato: sto cercando di far funzionare e di creare un ambiente MMORPG. Ovviamente non è una cosa semplice nè tantomeno gestibile in completa solitudine, specie senza strumenti o tools per sviluppare almeno le basi e le fondamenta, come ad esempio il motore 3D e la gestione di client-server e scambio dati fra i due.
Perciò la ricerca è iniziata nel mare grande del web, ed è finita fortunosamente con l’approdo a una soluzione “ibrida” che mi concede un toolset preconfezionato e solamente da configuare di strumenti per lo sviluppo del mondo virtuale e relativo client , senza (TEORICAMENTE) troppi pensieri per il setup di server, client e fasi di autenticazione, gestione login e setup di database relazionali del gioco e del programma.
Dico teoricamente perchè come sempre Murphy ci ha messo la zampa…e ovviamente quello che sembra un semplice setup, con tanto di miniguida di poche righe e con poche spiegazioni che scendano nei dettagli o in eventuali problematiche, è assolutamente insufficiente dato che l’intero pacchetto NON sembra voler funzionare correttamente, in nessun modo.
In pratica, il server in questione funziona completamente in JAVA e a parte il mio completo digiuno (a parte qualche piccolo script, ma nulla di che) su questo linguaggio, presenta delle difficoltà oggettive non tanto per il setup della VM e dell’appliance che viene generata, quanto perchè verrebbe a mancare seguendo solo il setup (per altro funzionante e relativamente semplice da preparare) suggerito nel download di un qualsivoglia gestione di patch e aggiornamenti INCREMENTALI e non MONOLITICI.
Detto più semplicemente: il client al login sul server NON controlla come fanno tutti i MMORPG un elenco di file e eventualmente scarica una patch o quello che è cambiato, ma semplicemente manda login /pass criptati e scambia informazioni sul blocco di file che presume essere presente anche sul server. Questo ovviamente genera problematiche per quanto riguarda eventuali sviluppi di sorgenti, patch, aggiunte e modifiche al setup iniziale del server, e ne impedisce di fatto l’uso in un eventuale ambiente di produzione (al momento simulato da me, ma in futuro, chissà…).
Ovviamente però non sono persona da fermarmi a queste difficoltà, e dopo un ulteriore ricerca, ho trovato quella che potrebbe essere una buona soluzione, cioè l’uso di un repository.
Repository sono speciali “program server directory” che permettono quello che si chiama “version control” : in due parole, se c’è un cambio di file su un repository, speciali programmi client consentono di avere SOLO il file modificato aggiornato, sempre tenendo quindi aggiornate cartelle sul PC client e sul server. Diciamo che somiglia alle cartelle “sincronia file” di windows…
Il fatto è che far funzionare questi repository con Windows, è un disastro, specie se si vuole mettere anche un pò di sicurezza (user+pass in MD5)… perchè cambiano i permessi delle cartelle e dei file in modo automatico ogni volta che un client “controlla” se ci sono aggiornamenti.
Ho provato per circa 15 giorni a gestire una macchina virtuale (tramite VMWare che come ho già detto trovo un ottimo prodotto) con Win XP Sp3 e questi due componenti : ogni tentativo di creare un sistema stabile, sicuro, e funzionale, è fallito.
Le cause erano le più varie, riconducibili comunque quasi sempre al fatto che windows non gestisce in maniera decente sicurezza e acceso ai singoli file (infatti un tentativo eseguito senza creare regole di sicurezza è pienamente riuscito, ma ha smesso di funzionare appena aggiunte regole di login al repository….)
Negli ultimi 5 giorni sto lavorando con Linux Xubuntu 8.04 . Questo perchè è una release che conosco abbastanza, ha una community (ubuntu) che è molto vasta con molte persone disposte ad aiutare, e perchè è una distro leggera, con poche necessità di risorse, addirittura meno di XP.
Il server questa volta mi sta dando problemi con la parte in Java, i compilatori Linux sono di qualità inferiore, o almeno mi sembra, visto che SVN, il repository, il server web (apache sia su xp che su linux) funzionano, ma il motore del server non si avvia correttamente.
Questo però è il risultato più vicino al funzionamento corretto del programma… penso che se su XP ho dedicato 15 gg, a linux complice la mia maggiore ignoranza del sistema operativo in sè, posso dedicare anche più tempo, soprattutto perchè Java è comunque indipejndente dal SO, quindi forse è solo un problema di configurazione della VM java…
Vedremo…