|
|
(10 versioni intermedie di 4 utenti non mostrate) |
Riga 1: |
Riga 1: |
| + | {{msg:navmenu}} |
| + | |
| ==Cos'è un MUD?== | | ==Cos'è un MUD?== |
| Un MUD è un sostanzialmente un gioco di ruolo multiutente. | | Un MUD è un sostanzialmente un gioco di ruolo multiutente. |
Riga 19: |
Riga 21: |
| ==Stato del progetto== | | ==Stato del progetto== |
| Il progetto è per buona parte chiaro nelle nostre menti :) | | Il progetto è per buona parte chiaro nelle nostre menti :) |
− | Stiamo scrivendo le interfacce delle varie classi C++ e definendo le tabelle SQL. | + | Stiamo scrivendo le classi C++ e definendo le tabelle SQL. |
− | Probabilmente riprenderemo a lavorare in modo serio a settembre, dopo le vacanze.
| + | Il codice provvisorio e' disponibile nel cvs... |
− | | |
− | ==Progetto delle Claassi==
| |
− | | |
− | +------------+
| |
− | |dialog |(Dumpable, Restorable)
| |
− | +------------+
| |
− | id_dialog
| |
− | mHaveSkills
| |
− | mHotHaveSkills
| |
− | lHaveFeats
| |
− | lNotHaveFeats
| |
− | lHaveRace
| |
− | lNotHaveRace
| |
− | lHaveClass
| |
− | lNotHaveClass
| |
− | lHaveObject
| |
− | lNotHaveObject
| |
− | lHaveQuestCompleted
| |
− | lNotHaveQuestCompleted
| |
− | lHaveCurrentQuest
| |
− | lNotHaveCurrentQuest
| |
− | pStartingPhrase
| |
− | >canHear(*pg char) // valuta se il personaggio può sentire il dialogo
| |
− | | |
− | +------------+
| |
− | |phrase |(Dumpable, Restorable)
| |
− | +------------+
| |
− | id_dialog
| |
− | id_phrase
| |
− | pPngSpeaking //personaggio che stà parlando in questo momento
| |
− | mHaveSkills
| |
− | mHotHaveSkills
| |
− | lHaveFeats
| |
− | lNotHaveFeats
| |
− | lHaveRace
| |
− | lNotHaveRace
| |
− | lHaveClass
| |
− | lNotHaveClass
| |
− | lHaveObject
| |
− | lNotHaveObject
| |
− | lHaveQuestCompleted
| |
− | lNotHaveQuestCompleted
| |
− | lHaveCurrentQuest
| |
− | lNotHaveCurrentQuest
| |
− | sFrase
| |
− | sResponse1 //risposta che viene mostrata come possibilità
| |
− | iAction1 //azione che intraprende il png se si sceglie questa risposta
| |
− | pId_frase1 //frase cui si rimanda se questa risposta viene scelta
| |
− | sResponse2
| |
− | iAction2
| |
− | pId_frase2
| |
− | sResponse3
| |
− | iAction3
| |
− | pId_frase3
| |
− | >nextStep(char* risposta)
| |
− | | |
− | +------------+
| |
− | |connection |
| |
− | +------------+
| |
− | id_connection
| |
− | mHaveSkills
| |
− | mHotHaveSkills
| |
− | lHaveFeats
| |
− | lNotHaveFeats
| |
− | lHaveRace
| |
− | lNotHaveRace
| |
− | lHaveClass
| |
− | lNotHaveClass
| |
− | lHaveObject
| |
− | lNotHaveObject
| |
− | pToLocation
| |
− | >canPass(character* char) // verifica se il personaggio può passare
| |
− |
| |
− | +------------+
| |
− | |spell |(Dumpable, Restorable)
| |
− | +------------+
| |
− | id_spell
| |
− | sName
| |
− | iSpellContainer
| |
− | TYPE_AREA //incantesimo ad area
| |
− | TYPE_TARGET //incantesimo a targhet
| |
− | TYPE_PERSONAL //incantesimo personale
| |
− | iType //uno dei valori sopra
| |
− | mHaveSkills
| |
− | mHotHaveSkills
| |
− | lHaveFeats
| |
− | lNotHaveFeats
| |
− | lHaveRace
| |
− | lNotHaveRace
| |
− | lHaveClass
| |
− | lNotHaveClass
| |
− | iHaveObject //oggetto magico, compoonente materiale, etc..
| |
− | sLongDesc
| |
− | iDuration
| |
− | lAddFeats
| |
− | lLoseFeats
| |
− | mAddSkills
| |
− | mLoseSkills
| |
− | lAddItems
| |
− | lLoseItems
| |
− | iAddPF
| |
− | iLosePF
| |
− | iNewLocation
| |
− | iRandomPercentage //percentuale di variazione casuale intensit
| |
− | >cast()
| |
− | >cast(character* target)
| |
− | | |
− | +------------+
| |
− | +|character |(Container)
| |
− | |+------------+
| |
− | | id_character
| |
− | | sName
| |
− | | sDescription
| |
− | | lRace
| |
− | | mClass //lista delle classi con livello
| |
− | | pLocation
| |
− | | mSkills
| |
− | | lFeats
| |
− | | mTempSkills //mSkills modificate da magie etc.
| |
− | | lTempFeats //lFeats piu' modifiche per magie etc
| |
− | | lSpells
| |
− | | mActiveSpells /spells attivi e loro durata residua
| |
− | | lObjects
| |
− | | iPf
| |
− | | iPx
| |
− | | pOnHand1 //puntatore all'oggetto dell'inventario in mano destra
| |
− | | pOnHand2
| |
− | | pOnHead
| |
− | | pOnNeck
| |
− | | pOnFinger1
| |
− | | pOnFinger2
| |
− | | pOnBody1
| |
− | | pOnBody2
| |
− | | >fight(character* target)
| |
− | | >flee()
| |
− | | >move(connection* destination) //vai in un'altra location
| |
− | | >give(object* item)
| |
− | |
| |
− | | +------------+
| |
− | +--|pg |(Dumpable, Restorable)
| |
− | | +------------+
| |
− | | sPassword
| |
− | | iPlayedTime
| |
− | | mLocationVisited //mappa di location visitate e numero di visite
| |
− | | iPx //punti di esperienza
| |
− | | iInactivityTime //tempo di inattività
| |
− | | lQuestCompleted
| |
− | | lCurrentQuest
| |
− | | >talk(pg* target) //chat
| |
− | | >shout() //manda messaggio a tutti i pg nella tua stessa location
| |
− | | >talk(png* target) //start dialog
| |
− | |
| |
− | | +------------+
| |
− | +--|png |(Dumpable, Restorable)
| |
− | +------------+
| |
− | lKnownPG //lista dei pg conosciuti
| |
− | lDialog //lista ordinata dei dialoghi da tentare di fare
| |
− | pDefaultDialog //Dialogo da fare nel caso nessuno nella lista possa essere fatto
| |
− | | |
− | +------------+
| |
− | +-|object |(Dumpable, Restorable, Container, Magical, Wearable)
| |
− | | +------------+
| |
− | | id_object
| |
− | | sName
| |
− | | sDescription
| |
− | | iWeight
| |
− | | mMagic //magie contenute con loro numero di cariche
| |
− | | lWearingPlaces //lista di posti in cui e' possibile indossarlo (se ha magie possono funzionare solo se indossato)
| |
− | | iWeared //indica se e' indossato o no l'oggetto
| |
− | | WEARED_YES
| |
− | | WEARED_NO
| |
− | | LOC_HEAD
| |
− | | LOC_NECK
| |
− | | LOC_BODY1
| |
− | | LOC_BODY2
| |
− | | LOC_FINGER1
| |
− | | LOC_FINGER2
| |
− | | LOC_HAND1
| |
− | | LOC_HAND2
| |
− | | >dump()
| |
− | | >restore()
| |
− | | >cast(spell* id_spell)
| |
− | | >isWearableOn(int wearLocation)
| |
− | |
| |
− | | +------------+
| |
− | +--|usable |
| |
− | | +------------+
| |
− | | iMagicItem
| |
− | | MAGICITEM_YES
| |
− | | MAGICITEM_NO
| |
− | | iDuration
| |
− | | lAddFeats
| |
− | | lLoseFeats
| |
− | | mAddSkills
| |
− | | mLoseSkills
| |
− | | lAddItems
| |
− | | lLoseItems
| |
− | | iAddPF
| |
− | | iLosePF
| |
− | | iNewLocation //dove fa spostare il target l'uso dell'oggetto
| |
− | | iRandomPercentage //percentuale di variazione casuale intensit
| |
− | | iNumCharges
| |
− | | >use(character* target)
| |
− | |
| |
− | |
| |
− | | +------------+
| |
− | +--|container |(Container)
| |
− | +------------+
| |
− | lContainedObject
| |
− | iMaxContainedWeight
| |
− | >addObject(object* object)
| |
− | >removeObject(object* object)
| |
− | >removeObject(object* nomeOggetto)
| |
− | >containedWeight()
| |
− | | |
− | +-------------+
| |
− | |fakeLocation |
| |
− | +-------------+
| |
− | id_fakeLocation
| |
− | pN //puntatori alle altre connection che puntano alle alre fake location
| |
− | pNE
| |
− | pE
| |
− | pSE
| |
− | pS
| |
− | pSW
| |
− | pW
| |
− | pNW
| |
− | pUP
| |
− | pDW
| |
− | pLocation //puntatore alla location associata alla fakeLocation
| |
− | lPg //lista dei pg presenti nella location
| |
− | iEmptyTime //tempo da quando nessun pg è nella location
| |
− | | |
− | +-------------+
| |
− | |location |
| |
− | +-------------+
| |
− | id_location
| |
− | sName
| |
− | sShortDescription
| |
− | sLongDescription
| |
− | lObjects
| |
− | lPng
| |
− | >locationMsg(char* msg) //messaggio da mandare a tutti i pg nella location
| |
− | | |
− | | |
− | CONVENZIONI NEI NOMI DELLE VARIABILI
| |
− | | |
− | La prima lettera indica il tipo:
| |
− | p->puntatore
| |
− | i->intero
| |
− | m->map, hash
| |
− | l->lista
| |
− | s->stringa
| |
− |
| |
− | Le parole che compongono la variabile vanno in minuscole con l'iniziale di ogni parola maiuscola.
| |
− | | |
− | La seconda lettera va maiuscola.
| |
− | | |
− | CONVENZIONE NEI NOMI DELLE COSTANTI
| |
− | | |
− | Vanno tutte in maiuscole.
| |
| | | |
− | CONVENZIONI NEI NOMI DEI METODI
| + | ==Progetto== |
| + | [[PanoramicaMUD|Panoramica del funzionamento del server]] |
| | | |
− | Sono preceduti da > che non fa parte del nome
| + | [[ClassiMUD|La versione provvisoria delle classi del server]] |
Cos'è un MUD?
Un MUD è un sostanzialmente un gioco di ruolo multiutente.
Ogni giocatore ha un personaggio con determinate caratteristiche e abilità da guidare e far interagire con gli
altri personaggi in una ambientazione virtuale.
Classicamente i MUD hanno ambientazione fantasy, del tipo:
Sei un elfo chierico con forza 52, difesa 36, capacità di volare ecc. ecc.
Cos'è in breve YourCityMud?
YourCityMUD (nome provvisorio) sarà (o quantomeno vorremmo fosse) un MUD molto flessibile ed efficiente, rilasciato sotto la GPL.
Chi costruirà le ambientazioni potrà scegliere più o meno tutto: potrà scegliere gilde del tipo Fighetti, Reppettoni, Punkabestia ecc... abilità come "Resistenza all'alcool" ed ambientare il tutto nella sua città, provincia, mondo immaginario.
Si potranno ideare quest sia automatiche sia scritte di pugno dai creatori dell'ambientazione.
Realizzazione
YourCityMUD sarà scritto in C++, appoggiandosi un po' sul PostgreSQL.
Il C++ è stato scelto perché il codice sarà pesantemente ad oggetti e per assicurare efficienza al programma.
Ci appoggeremo al PostgreSQL (che gestisce l'ereditarietà tra tabelle) per tenere memoria delle ambientazioni e per gestirle e crearle facilmente via web.
YourCityMUD sarà costituito da un server e un numero imprecisato di client (telnet, grafici, via web, ecc.) che comunicheranno direttamente col server in XML o con un modulo che gestirà le comunicazioni in XML col server (per il telnet, per es.).
Stato del progetto
Il progetto è per buona parte chiaro nelle nostre menti :)
Stiamo scrivendo le classi C++ e definendo le tabelle SQL.
Il codice provvisorio e' disponibile nel cvs...
Progetto
Panoramica del funzionamento del server
La versione provvisoria delle classi del server