Stato dell'implementazione
Moongate è in sviluppo attivo: il ciclo di gioco classico è giocabile, e gran parte è recente e non è ancora stata provata con un client reale. Questa pagina indica cosa fa oggi il server e cosa non fa. Descrive l’albero dei sorgenti attuale; il changelog registra le aggiunte di ogni release, e la checklist delle funzionalità passa in rassegna, sistema per sistema, ciò che normalmente offrono gli emulatori UO. La roadmap indica l’ordine in cui vengono realizzati i sistemi mancanti.
A colpo d’occhio
Section titled “A colpo d’occhio”| Area | Stato | In breve |
|---|---|---|
| Login, realm e account | ✅ Funziona | Server di login, realm di gioco, trasferimento tra essi |
| Personaggi | ✅ Funziona | Creazione, eliminazione e ripristino, ingresso nel mondo, camminata e corsa |
| Altri giocatori | ✅ Funziona | Vedersi e parlare |
| Oggetti | 🟡 Parziale | Zaino, paperdoll, terreno, tooltip; i contenitori a terra si aprono e gli oggetti entrano ed escono |
| NPC | 🟡 Parziale | Regioni di spawn, script Lua, movimento casuale, camminata lungo un percorso, mostri che inseguono, fuggono, combattono e lanciano incantesimi, guardie, venditori, istruttori, guaritori, i sei champion spawn; non bloccano il movimento |
| Mondo | 🟡 Parziale | Decorazione, porte e chiavi, teletrasporti e moongate pubblici (anche tra mappe), giorno e notte, meteo, stagioni, forzieri del tesoro dei dungeon che ricompaiono e contenitori cittadini che si riempiono; nessuna casa |
| Combattimento, morte, incremento delle abilità | 🟡 Parziale | Mischia, tiro con l’arco e parata dello scudo, morte e cadaveri, uso e incremento delle abilità, ogni mestiere classico, cavalcature, domesticazione, elenchi degli aggressori; nessuna taglia |
| Magia | 🟡 Parziale | Tutti i 64 incantesimi di Magery, sedici dei diciassette di Necromancy, quattro di Chivalry, pozioni; nessun runebook, nessuna bacchetta, nessuna barra dei potenziamenti |
| Fabbricazione | ✅ Funziona | Pesca, estrazione mineraria, taglio del legno e i nove mestieri, con riparazione |
| Scripting Lua | ✅ Funziona | Script per NPC e oggetti, isolati |
| Persistenza | ✅ Funziona | PostgreSQL, salvataggi del mondo, migrazioni, backup SQL a rotazione |
| Amministrazione | 🟡 Parziale | Comandi da console e in gioco, API gRPC; nessun pannello web |
Cosa può fare un giocatore
Section titled “Cosa può fare un giocatore”- Effettuare il login, scegliere un realm, creare un personaggio (con i suoi oggetti iniziali) ed entrare nel mondo.
- Camminare e correre, con il server che controlla terreno, elementi statici, oggetti sul percorso (una porta chiusa, una cassa, un muro) e velocità.
- Vedere gli altri giocatori entro 18 caselle e parlare con loro.
- Aprire lo zaino, spostare gli oggetti al suo interno, dividere e unire pile, lasciare oggetti a terra e raccoglierli; gli oggetti lasciati a terra decadono.
- Aprire la paperdoll, vestirsi e svestirsi (incluse armi a due mani).
- Leggere tooltip e nomi di ciò che è visibile.
- Leggere pergamene personalizzate e libri nativi dai template di testo: il testo resta fisso quando vengono scambiati. Scrivere titoli, autori e pagine nei libri scrivibili portati nello zaino o in una cassetta di banca aperta. Gli oggetti iniziali possono consegnarli in modo transazionale; il set comune fornito include una lettera di benvenuto e un libro scrivibile vuoto.
- Aprire le porte, e quelle chiuse a chiave portando la loro chiave; accendere e spegnere le luci.
- Vedere passare giorno e notte, dungeon bui, e meteo, stagione e musica di ogni regione (pioggia, neve, temporali).
- Camminare su un teletrasporto, o pronunciare la parola di uno che risponde a una parola, e arrivare altrove, anche su un’altra mappa; entrare in un moongate.
- Leggere l’ora di gioco e le fasi lunari nel luogo in cui si trova:
.time. - Incontrare NPC che vagano intorno alla propria casa, salutano e rispondono e, quando lo prevede lo script, raggiungono un luogo o seguono qualcuno aggirando gli ostacoli.
- Aprire la cassetta di banca da un banchiere dicendo bank, in qualsiasi lingua del client; chiedere il balance, withdraw e deposit dell’oro tramite parlato, farsi emettere un check bancario e incassarlo con un doppio clic, oppure consegnare oro e assegni al banchiere per depositarli. La cassetta contiene un numero limitato di oggetti: Banca.
- Comprare dai venditori e vendere a loro: scegliere Buy o Sell nel loro menu contestuale o dire vendor buy o vendor sell, scegliere nella finestra e pagare con l’oro dello zaino, o della banca da 2000: Venditori.
- Imparare abilità da venditori e guaritori: scegliere Train nel loro menu o dire train, poi trascinare su di loro l’oro che preventivano: Istruttori.
- Combattere con armi da mischia e archi, parare con uno scudo, morire e lasciare un cadavere, diventare un fantasma ed essere riportati in vita: Combattimento, Morte e resurrezione.
- Usare le abilità, che crescono con l’uso, e impararle dagli istruttori: Abilità. Ogni mestiere classico ha il suo script, dal nascondersi e rubare alle abilità del bardo e al tracking; unirsi alle gilde NPC dei maestri di gilda.
- Lanciare tutti i 64 incantesimi di Magery da un libro degli incantesimi o da una pergamena, sedici dei diciassette di Necromancy e i primi quattro di Chivalry: Magery. Bere pozioni: Pozioni.
- Domare animali, farli seguire e obbedire, lasciarli in una stalla e cavalcare, statuette eteree incluse: Domesticazione degli animali, Cavalcature. Rinominare un pet, condividerlo con fino a cinque amici, assoldare un mercenario a pagamento, e far arrivare i propri seguaci insieme a sé attraverso un moongate o un teletrasporto.
- Scambiare con un altro giocatore in una finestra con una cassetta ciascuno: Scambio sicuro.
- Pescare, estrarre minerali e tagliare legna: Pesca, Estrazione mineraria, Taglialegna. Creare oggetti con uno strumento, e riparare: Falegnameria, Fabbro, Sartoria, Ingegneria, Fabbricazione di frecce, Cucina, Cartografia, Alchimia, Iscrizione.
- Fondare una gilda di giocatori su una pietra di gilda, con fedeltà, guerra e alleanza: Gilde.
- Chiedere aiuto dal menu di aiuto, e vedere gli eventi di Halloween e Natale: Aiuto, Festività.
- Recuperare punti vita, mana e stamina nel tempo, avere fame e sete, mangiare e bere; stancarsi correndo o trasportando troppo peso.
- Aprire i forzieri del tesoro dei dungeon e le casse dei negozi che si riempiono; leggere un orologio; cambiare modalità guerra.
- Tingere i vestiti: le tinture danno alla vasca il colore scelto nel selettore del client, e la vasca lo trasferisce agli abiti.
Cosa può fare un game master
Section titled “Cosa può fare un game master”- Generare e rimuovere singoli NPC:
.spawn,.remove; ucciderne uno, che lascia un cadavere con ciò che trasportava:.kill, vedi Morte e resurrezione. - Vedere le regioni di spawn nel luogo in cui si trova:
.spawns; ricevere un messaggio quando le regioni generano NPC. - Raggiungere qualsiasi punto di qualsiasi mappa, o uno dei 558 luoghi nominati, per nome o da un gump che
li elenca per mappa e categoria:
.go; attraversare le porte. - Chiudere e aprire le porte a chiave e crearne le chiavi:
.lock,.unlock,.key. - Forzare luce, meteo o stagione, provare un brano musicale:
.globallight,.weather,.season,.music. - Provare qualsiasi gump su di sé:
.gump. - Mandare un giocatore o un NPC in una cella per alcuni giorni, o liberarlo, da un gump che elenca
le celle:
.jail. La pena termina automaticamente, con una multa e una nota di rilascio..jail <name>incarcera un giocatore offline: la cella viene riservata e i giorni iniziano al login; vedi Prigione. - Leggere, pubblicare, rispondere e rimuovere sulle bacheche cittadine, ciascuna con i propri messaggi; le discussioni scadono e una bacheca piena elimina la più vecchia: Bacheche.
- Impostare fama e karma, ispezionare ciò che seleziona un cursore bersaglio:
.fame,.karma,.where. - Creare pergamene e libri personalizzati nel proprio zaino:
.book. - Creare oro e assegni bancari dal nulla:
.add_gold,.create_check. - Impostare un’abilità a un bersaglio, riempire un libro degli incantesimi e uno zaino di reagenti, marcare una runa:
.skill,.add_spell,.add_reagents,.mark_rune. - Cercare i template di oggetti e mobile e darli, posizionarli o generarli da un gump:
.items,.npcs; la barra laterale degli strumenti dello staff:.gmtools. - Ripristinare un personaggio in attesa di eliminazione:
.character.
Un amministratore posiziona anche la decorazione, riempie di nuovo le regioni di spawn (.initial_spawn),
salva, esegue un backup SQL (.sql_backup), invia messaggi globali, spegne il server e gestisce gli account.
Vedi tutti i comandi in Comandi.
Non ancora realizzato
Section titled “Non ancora realizzato”- Taglie; quote di fama e karma; le guardie cittadine non puniscono i giocatori.
- Un’IA integrata: gli NPC eseguono soltanto il proprio script Lua (
on_think,on_speech,on_spawn,on_mobile_in_range), che può farli camminare lungo un percorso connpc.walk_to; inseguire, fuggire, combattere e lanciare incantesimi vengono daicreature.luaemonster.luadistribuiti, non dal motore. Gli NPC non bloccano il movimento. - Runebook e bacchette (Recall, Mark e Gate Travel funzionano con le rune, e così i moongate pubblici); la barra dei potenziamenti.
- I segnaposto dell’Enhanced Client per il gruppo, la finestra di chat e il profilo del personaggio; quest, mappe del tesoro, mercanti giocatori.
- Il ruleset moderno: proprietà degli oggetti, resistenze, mosse speciali.
- Case e barche (posizionamento, e multi nel movimento e nella linea di vista).
- Vestire altri personaggi e requisiti di forza. I limiti di peso dei contenitori sono applicati.
- Regole delle regioni per le case. Le regioni controllano meteo, luce dei dungeon, musica, stagione e protezione delle guardie.
- Oggetti spawner (le regioni di spawn si occupano della rigenerazione).
- Lingua per giocatore, comando di ripristino dei backup SQL, pannello web di amministrazione.
- Vecchia cifratura AES/E3 di Kingdom Reborn. L’Enhanced Client effettua il login, crea un personaggio, entra nel mondo e cammina; il resto è parziale: vedi Enhanced Client.
Per area
Section titled “Per area”Rete e login
Section titled “Rete e login”- TCP con framing, pipeline per connessione, registri delle sessioni e arresto ordinato.
- Cifratura del client compatibile con POL con politiche
Disabled,OptionaleRequired(configurazione). modeesegue server di login e gioco separati oppure un processo standalone. I realm di gioco si annunciano tramite lease Redis; il login li filtra per livello dell’account e trasferisce il giocatore con un ticket monouso.- I pacchetti che il server gestisce e invia sono elencati nella guida di riferimento dei pacchetti.
- Movimento e vista: percorribilità e altezza di arrivo da terreno ed elementi statici (come ModernUO), linea di vista (come POL e ModernUO). Gli oggetti a terra bloccano il movimento (una porta chiusa, una cassa); mobile e multi non fanno ancora parte di questi controlli, e la linea di vista ignora gli oggetti. Vedi Interrogazioni del mondo.
- Settori delle mappe: giocatori, NPC e oggetti a terra si vedono entro la portata visiva; gli NPC lontani da ogni giocatore restano inattivi.
- Luce: un orologio di gioco con giorno e notte per mappa e longitudine e le fasi delle due lune; dungeon bui e prigioni poco illuminate.
- Regioni, meteo, musica e stagioni: viene seguita la regione di ogni giocatore; ogni regione ha il meteo UOX3, estratto ogni ora di gioco (asciutto al chiuso), il proprio brano musicale e, se impostata, la stagione; le stagioni delle mappe possono ruotare con i giorni di gioco.
- Decorazione: decorazione del mondo di ModernUO (e New Haven di ServUO) posizionata da
.decorate: porte (quelle cittadine lette dai telai delle porte della mappa), serrature e chiavi, insegne dei negozi, luci e teletrasporti, sia quelli su cui un giocatore cammina sia quelli che rispondono a una parola; i lampioni cittadini si accendono di notte. - Effetti: effetti grafici in un punto, su un mobile o su un oggetto a terra, in volo dall’uno all’altro,
e fulmini, dagli script con il modulo
effect; particelle per l’Enhanced Client. - Spawn degli NPC: regioni di spawn su ogni mappa, dai dati UOX3 e da quelli di ModernUO per New Haven, Malas, Tokuno e TerMur. Ogni regione si riempie fino al massimo al primo spawn dopo l’avvio, poi rigenera gli NPC gradualmente, su terra e acqua. Vedi Spawn degli NPC.
Scripting
Section titled “Scripting”- Lua 5.2 isolato con un budget di istruzioni,
wait, timer, eventi, ricaricamento a caldo e definizioni per l’editor. Vedi Scrivere script Lua. - Moduli:
engine,log,timer,events, e nel plugin Ultimadice,localization,npc,item,world,mobile,target,prompt,gump,bank,effect,moongates,locations,jail,board,book,commands,arrow,bleed,carve,champions,cliloc,combat,craft,guild,harvest,help,hue_picker,map,mount,npcguild,pet,schedule,skill,spell,stable,trainerevendor: 42 moduli in tutto. Ogni funzione offerta agli script è elencata nella guida di riferimento API Lua, generata dal codice del server. - Gump: layout XML verificati da
gump.xsd, uno script Lua per gump per le risposte, slot e gump interi costruiti in Lua, e gump concatenati conbindeopen; vedi Gump e Il tuo primo gump. - Gli script di mobile e oggetti sono associati dai template tramite
script_id. La root distribuisce 237 file Lua inscripts/: 56 script per oggetti (porte, luci, teletrasporti e moongate, orologi, libri e pergamene, bacheche, cibo e bevande, tinture, strumenti come ascia, piccone e canna da pesca, minerale e forgia, cavalcature eteree, forzieri del tesoro, manichini da addestramento, il falò e il suo legnetto, la pietra di gilda e il suo atto, il bastone del pastore), 13 script per mobile (wander.lua,monster.lua,guard.lua,guard_outsider.lua,banker.lua,shopkeeper.lua,healer.lua,stablemaster.lua,revenant.lua, animali e i gatti Orione e Vega), 22 script per le abilità, 84 script per gli incantesimi (i 64 di Magery, 16 di Necromancy, 4 di Chivalry), 21 script per gump, 39 helper condivisi incommon/, gli eventi di Halloween e Natale.definitions.luaviene generato all’avvio e non è distribuito.potion.luabeve pozioni di cura, ristoro, forza, agilità, visione notturna, veleno e antidoto. - Gli hook che gli script possono implementare includono
on_use,on_speech,on_think,on_spawn,on_death,on_mobile_killed,on_mobile_in_range,on_drop,on_equip,on_login,on_timer, e per un combattimentoon_attack,on_hit,on_miss,on_damage,on_heal,can_dieeon_resurrect; l’elenco completo è in Hook degli script. - Non ancora: timer sui mobile e un hook sul controllo dell’abilità (
check_skill).
Dati e template
Section titled “Dati e template”- Dati dello shard in
data/(mappe, città iniziali, abilità, professioni, razze, nomi, contenitori, corpi, regioni, meteo, messaggi, incantesimi, mestieri, aree di raccolta, champion spawn, la pianificazione), validati all’avvio. Vedi File di dati. - Template in
templates/: oggetti, bottino, mobile, elenchi NPC, negozi, tabelle di macellazione, regioni di spawn e decorazione, con ereditarietàbase_id, e i gump XML ditemplates/gumps. Vedi Caricare template TOML e Gump. - Sorgenti di documenti semplici in
templates/books, con variabili nominate risolte e salvate su singole pergamene e libri alla creazione. Gli allegati alle lettere sono congelati per lettera e consegnati una sola volta a chi la porta nello zaino, con peso differito e controlli atomici della capienza. Il convertitore fornisce 62 libri di lore in otto lingue da ModernUO. I libri nativi hanno copertine e pagine sfogliabili; quelli scrivibili consentono al portatore di modificare titolo, autore e pagine, con modifiche salvate sull’oggetto. Vedi Template di testo leggibile. - File del client letti da
ultima.ultima_path: dati delle caselle, mappe (MUL o UOP) e multi. - Messaggi in 8 lingue, portati da UOX3; una lingua può essere suddivisa in più file toml. Vedi Localizzazione.
Persistenza
Section titled “Persistenza”- Due database PostgreSQL (account e mondo) con transazioni e migrazioni SQL versionate,
applicate da
mgctl migrate, o all’avvio quandopersistence.auto_apply_migrationsè attivo. - Personaggi, relativi oggetti, oggetti a terra e NPC vengono mantenuti in memoria e scritti dal salvataggio periodico del mondo; i personaggi vengono salvati anche quando escono.
- Non ancora: un comando di ripristino; il ripristino di un backup SQL è un passaggio manuale con
psql.
Amministrazione e strumenti
Section titled “Amministrazione e strumenti”- Comandi da console e in gioco, tradotti in ogni lingua fornita.
- Un’eccezione registrata è una riga sulla console e un rapporto Markdown in
logs/errors, pronto per una issue; vedi Quando qualcosa non funziona. - API di amministrazione gRPC facoltativa con TLS: account e relativi ban, personaggi (rinomina, fama, karma, teletrasporto, resurrezione), giocatori online ed espulsioni, template di oggetti e mobile, la prigione, la coda di aiuto, ban IP, log, metriche, la pianificazione, messaggi globali, salvataggio e backup SQL. Nessun pannello web ancora.
- I plugin in
plugins/registrano servizi, comandi, moduli Lua, metriche, entità, SQL e la propria sezione di configurazione. Vedi Scrivere un plugin. - Strumenti:
mgctlprepara la root del server, applica le migrazioni del database; ilmoongate-convertPython converte contenuti UOX3 e ModernUO. Un esempio Docker esegue un server di login e due server di gioco, e un chart Helm fa lo stesso su Kubernetes.
Impostazioni ancora senza effetto
Section titled “Impostazioni ancora senza effetto”Le opzioni da riga di comando --log-level e --log-packets vengono analizzate e validate ma nulla
le usa ancora; vedi la
guida di riferimento della configurazione.
Creato con ❤️ da Tom
