Azioni

Differenze tra le versioni di "PanoramicaMUD"

Da MontelLUG WIKI.

Riga 25: Riga 25:
  
 
==Ciclo principale==
 
==Ciclo principale==
 +
 +
# Aggiorna connessioni
 +
## Nuove richieste di connessione
 +
### Verifica login
 +
### Se la login è affermativa inserisci in coda alla lista dei pg connessi
 +
## Pg disconnessi senza logout
 +
### Verifica se qualcuno non agisce da troppo tempo
 +
### Togli dalla lista dei pg chi non agisce da troppo tempo
 +
# Cicla sulla lista dei pg connessi e per ognuno esegui i seguenti passi:
 +
## Controlla il socket e vedi cosa ha chiesto di fare il pg
 +
## Esegui l'operazione richiesta dal pg
 +
### Se non è una richiesta di spostamento
 +
#### Esegui l'operazione
 +
### Se è una richiesta di spostamento
 +
#### Valuta se il pg può entrare nella nuova FakeLocation attraverso la Connection
 +
#### Se la Connection dà esito positivo carica in memoria la Location
 +
#### Aggiorna la lista delle location caricate in memoria
 +
#### Sposta il PG
 +
## Invia la risposta al pg
 +
# Aggiorna la lista delle Location Caricate in Memoria
 +
## Salva nel db le Location e tutto ciò che contengono he sono da troppo tempo senza nessun pg
 +
## Rimuovi dalla memoria Location che sono da troppo tempo senza nessun pg
  
 
==Fase di Spegnimento==
 
==Fase di Spegnimento==

Versione delle 13:46, 19 lug 2004

FUNZIONAMENTO DEL SERVER

Fase di Init

Alla partenza il server fa le seguenti attività:

  1. Imposta la propria configurazione
    1. Carica le impostazioni di default
    2. Carica le impostazioni inserite nel file di configurazione
      1. Ip del server PostgreSQL
      2. Nome del database
      3. Nome utente per il db
      4. Password per il db
      5. Tempo di persistenza in memoria location senza pg
      6. Tempo massimo di inattività di un pg prima della disconnessione automatica
  2. Connessione al database
    1. Creazione connession al database
    2. Test della connessione
  3. Congruenza con il database
    1. Verifica del disegno del database se congruente con la versione del programma
    2. Eventuale aggiornamento del disegno del db
  4. Pulizia dal database di tutti gli oggetti a tempo scaduti
  5. Caricamento in memoria di tutte le fakelocation
  6. Inizializza la lista dei pg connessi
  7. Inizializza la lista delle Location caricate in memoria

Ciclo principale

  1. Aggiorna connessioni
    1. Nuove richieste di connessione
      1. Verifica login
      2. Se la login è affermativa inserisci in coda alla lista dei pg connessi
    2. Pg disconnessi senza logout
      1. Verifica se qualcuno non agisce da troppo tempo
      2. Togli dalla lista dei pg chi non agisce da troppo tempo
  2. Cicla sulla lista dei pg connessi e per ognuno esegui i seguenti passi:
    1. Controlla il socket e vedi cosa ha chiesto di fare il pg
    2. Esegui l'operazione richiesta dal pg
      1. Se non è una richiesta di spostamento
        1. Esegui l'operazione
      2. Se è una richiesta di spostamento
        1. Valuta se il pg può entrare nella nuova FakeLocation attraverso la Connection
        2. Se la Connection dà esito positivo carica in memoria la Location
        3. Aggiorna la lista delle location caricate in memoria
        4. Sposta il PG
    3. Invia la risposta al pg
  3. Aggiorna la lista delle Location Caricate in Memoria
    1. Salva nel db le Location e tutto ciò che contengono he sono da troppo tempo senza nessun pg
    2. Rimuovi dalla memoria Location che sono da troppo tempo senza nessun pg

Fase di Spegnimento

DESCRIZIONE DELLE CLASSI

Mappa

La mappa e' realizzata tramite 3 classi: Location, FakeLocation e Connection.

Location

Contiene una descrizione dell'ambiente e la lista di oggetti e personaggi non giocanti presenti all'interno dell'ambiente. Le informazioni contenute nella location sono normalmente immagazzinate nel db (su disco); vengono caricate in memoria solo quando almeno un personaggio giocante è nella location. Dopo tot tempo in cui nella location non vi è più nessun pg, viene salvata nel db e tolta dalla memoria.

FakeLocation

E' lo scheletro della location, mantenuto sempre in memoria per rappresentare la mappa. Contiene un'identificativo, un puntatore alla Location di cui e' scheletro, i puntatori alle Connection vicine e la lista dei personaggi giocanti.

Connection

Rappresenta la connessione tra FakeLocation. Gestisce i permessi di accesso alle FakeLocation da parte dei pg.


Esempio

Per muoversi un giocatore controlla la FakeLocation in cui si trova e chiama un metodo della sua FakeLocation per andare a nord. La FakeLocation chiede alla Connection se il personaggio puo' passare e in caso di risposta positiva modifica il puntatore FakeLocation del personaggio, altrimenti gli notifica il rifiuto.

Permessi

Gli oggetti, le connection, i dialoghi etc. non possono essere accessibili da tutti. Ad esempio, per attraversare una connection potrebbe essere necessario saper volare, o scalare o nuotare; per poter usare un oggetto può essere necessario essere un mago, o un elfo, o avere una determinata forza. Object, connection, dialog e answer contengono tutti un oggetto access, esemplare di una classe che rappresenta le condizioni per cui un oggetto è utilizzabile, una connection attraversabile, un dialogo udibile e una risposta sceglibile. Nella classe access sono contenute condizioni nella forma:

-Skills da avere almeno tot

-Skills da non avere o avere fino a tot

-Feats da avere

-Feats da non avere.

-Classe o Razza a cui appartenere o meno

Le condizioni imposte dagli oggetti (es. se hai una corda puoi attraversare una connection in salita) si risolvono associando agli oggetti delle skill o feature (quando si raccoglie una corda si attiva la feature "scalata" o simili)

Personaggi

Oggetti

Dialoghi

I dialoghi sono il punto distintivo di questo MUD. Anche i png fanno dialoghi sensati ed interattivi. I dialoghi sono tutti salvati nel db e vengono caricati in memoria a bisogna. Ogni dialogo è formato da frasi.

Dialog

Il dialogo ha dei permessi per essere sentito ed un link alla frase iniziale.

Phrase

La frase ha un testo che la rappsenta e una lista di possibili risposte. Ogni risposta viene presentata solo se consentito dai permessi di ogni risposta.

Answer

Contiene un testo, degli accessi per decidere se visualizzarla, un'azione che il personaggio parlante fa e un puntatore alla frase successiva.

Esempio:

Dialogo n° 45:(lo possono sentire solo gli elfi ricchioni). La prima frase è la n° 123

Frase n° 123: "Vai a baciare l'orco omofobico". Risposte possibili: "Va bene", "Fottiti"

Risposta "Va bene": vai alla frase n° 324.

Risposta "Fottiti": azione -> attacca (il png che stà dicendo il dialogo attacca il personaggio).

Quest

Vediamo una quest come una "maglietta" che il pg indossa, su cui ci sono scritti i dialoghi dei png (personaggi non giocanti) che incontra e le informazioni sull'avanzamento della quest (persone uccise, oggetti trovati, membra smembrate, posti visitati etc.).

Ci sono due tipi di quest all'interno del mud:

- quelle autogenerate;

- quelle create ad hoc dagli amministratori.



Create ad hoc

Le scritte sulla maglietta sono create da un amministratore (probabilmente tramite interfaccia web). L'amministratore potendo creare i dialoghi e potendo scegliere chi e in che situazione li pronuncia, può creare qualsiasi tipo di avventura.

Autogenerate

Una funzione si occupa di creare una quest in base a determinati modelli. Ad esempio:

- Vai a prendere quell'oggetto e portamelo.

- Uccidi dolorosamente tizio, caio e sempronio (che saranno di una gilda avversa e alla portata).

- etc.