Credits

Il progetto "Isola di Mon" è nato nel giugno 2000 da un'idea di Turst, dai codici di Dado e dal lavoro della Redazione di Mon. Nonostante vari cambiamenti nella Redazione stessa, tra cui l'avvicendamento prima di Dado e poi di Turst, il progetto ha continuato progressivamente a crescere. Ospitato inizialmente da gioco.net e poi, per molto tempo dall'ottimo servizio offerto dal portale Gamesnet, nel dicembre 2004 "L'isola di Mon" è parte integrante del progetto O.G.R.E., sviluppato anch'esso dai gestori del gioco.

Redazione di Mon
Oberon - Programmatore e Progettista
Shonte - Programmatore
Thalion - Progettista


Collaboratori

Si ringraziano tutti coloro che, seppur non menzionati, hanno contribuito o contribuiscono allo sviluppo del progetto; tra questi in particolare ci sono Arien, Opalyne, Dwalden, Kataryna, Ishtar e Morrigan.
Si ringrazia infine l'utenza che, nonostante vari problemi, ha sempre contribuito trasmettendo l'entusiasmo per andare avanti, proponendo, criticando, ma soprattutto giocando!!


Storia del Progetto:

"L'Isola di Mon" nasce sull'orma di città virtuali già presenti e nate da pochi anni, ma con l'obbiettivo di offrire all'utenza un prodotto più completo e si contraddistingue da subito per diverse soluzioni innovative rispetto alle alternative già presenti, tipo il sistema Locazionale Discreto a chat, l'uso di bacheche e messaggi privati, anche se inizialmente presentava un'ambientazione decisamente approssimativa ed abbozzata.

La scelta di aprire un Test a troppe persone portò, in breve tempo, diversi problemi a livello di gestione, ma permise ad un largo numero di giocatori (tra cui le persone che compongono l'attuale Staff) di conoscere questo progetto.
Problemi di server e a livello di Staff portarono all'avvicendamento, in tempi e modi diversi, di entrambi gli ideatori del Progetto e al trasferimento sul server attuale.

Il nuovo Staff ha portato al progetto nuova vita, idee ed entusiasmo. Il codice è stato totalmente riscritto o corretto e vi sono state numerose implementazioni (tra le più importanti ci sono le classi, i lavori e gli oggetti) ed è stato promosso il Gioco di Ruolo con l'istituzione di un gruppo di Game Master a cui è stata affidata la gestione del gioco con quest che coinvolgono tutta la comunità o, in modo casuale, i singoli personaggi.
L'ambientazione è stata scritta da capo (lavoro che tuttora va avanti) ridonandole solide basi, originalità e coerenza.

Ora come ora il progetto va avanti. Si può dire che con l'attuale metodo di programmazione MON abbia raggiunto quasi il massimo, e per questo che lo Staff inizierà a lavorare ad un nuovo sistema di gestione per i “MUD by Browser” (il tipico Mud gestito tuttavia tramite il browser proprio del giocatore).


Struttura del Gioco:

Mon, essendo un'evoluzione di una Città Virtuale, ha adottato fin dall'inizio come unico client un browser grafico.
Man mano la passione dei membri dello staff per gli RPG cartacei ha portato ad adottare diverse scelte di ambientazione e tecniche. L'esperienza maturata nel corso del tempo, sia tecnica, sia gestionale, ha reso evidente la necessità di un maggiore controllo sulle azioni che inizialmente, come in tutte le città virtuali, erano affidate alla descrizione e buon senso dei giocatori. Non vi è nessun client da installare da parte dell'utente, ciò rende MON giocabile da qualsiasi sistema operativo dotato di connessione alla rete e con un browser grafico che supporti javascript (uso ridotto al minimo per evitare incompatibilià tra le versioni) e cookies, indipendentemente dal Sistema Operativo, librerie installate, hardware della macchina.

Gli svantaggi sono però diversi: non c'è di fatto un server che interagisce e permette l'interazione diretta tra client. Viene tutto "emulato" salvando su database o variabili di sessione i dati, e richiamati dagli script php. Ciò può portare problemi di "emulazione" da parte del server di funzioni generalmente gestite da timer.

I timer delle azioni vengono attualmente gestiti, lato server a "priori"; ogni azione non gratuita (scrivere nelle chat è considerato come nella maggior parte di RPG un'azione che non richiedete tempi e sforzi eccessivi) attiva un timer una volta eseguita e non permette di compiere nuove azioni per tutta la durata del timer. Si lavorerà nell'immediato futuro ad un sistema di gestione NPC (Not player characters) utilizzando probabilmente uno script eseguito ciclicamente sul server sfruttando il CRON sotto Linux. Tutti i controlli devono necessariamente venire eseguiti dal server, l'alternativa banale sarebbe utilizzare lato client dei codici javascript... ma si possono facilmente bypassare :)

Ciò causa un continuo flusso di dati, tamponato in parte dalla gestione della cache del browser, risultando in un più pesante consumo di banda rispetto ai C-MUD (ricordiamo che non possiamo mandare dati "grezzi" al client ma output in html, oltre a dover inviare immagini).

Il consumo di memoria però risulta essere inferiore. In futuro, probabilmente nel prossimo progetto, ciò potrà essere tamponato ulteriormente con una gestione migliore di turni. L'unico problema non affrontato rimane la gestione delle chat, che per un numero elevato di utenti tende ad essere pesante data la mole di query al database.
Un sistema di caching lato server è implementabile attualmente, ma non funzionerebbe altrettante bene con il nuovo progetto in porto e non se ne vede la necessità per il numero attuale di utenti contemporanei che, dislocati su più chat, renderebbero di marginale questo tipo di risoluzione. Il codice lato server è totalmente php, che negli ultimi anni si è affermato per la sua semplicità, completezza e solidità nel campo della programmazione sul web.

Il codice fu inizialmente scritto da Dado in php3, non utilizzava sessioni ma semplicemente conservava i dati di login in 2 cookie. Decidendo poi di abbandonare il progetto per incompatibilità con l'altro fondatore Turst, la gestione dei codici passò a Shonte.
Passando sul server offerto da GamesNet, il codice fu quasi totalmente riscritto prima in php4 e poi in php5, spostando e scrivendo diverse funzioni per rendere più semplice la modifica del codice, implementando diverse modifiche (tra le quali gestione classi, livelli e oggetti), snellendo il codice e utilizzando delle sessioni al posto dei cookie. Gli script php vengono eseguiti sul momento alla richiesta del browser e interagendo con il database o fogli di testo possono generare l'output sia html/javascript nel caso che venga utilizzato direttamente dal browser, sia come normale foglio di testo nel caso in cui venga utilizzato da un filmato in macromedia flash.