Salta ai contenuti

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.

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

  • 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.

  • 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.

  • 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 con npc.walk_to; inseguire, fuggire, combattere e lanciare incantesimi vengono dai creature.lua e monster.lua distribuiti, 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.

  • TCP con framing, pipeline per connessione, registri delle sessioni e arresto ordinato.
  • Cifratura del client compatibile con POL con politiche Disabled, Optional e Required (configurazione).
  • mode esegue 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.
  • 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 Ultima dice, 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, trainer e vendor: 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 con bind e open; 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 in scripts/: 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 in common/, gli eventi di Halloween e Natale. definitions.lua viene generato all’avvio e non è distribuito. potion.lua beve 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 combattimento on_attack, on_hit, on_miss, on_damage, on_heal, can_die e on_resurrect; l’elenco completo è in Hook degli script.
  • Non ancora: timer sui mobile e un hook sul controllo dell’abilità (check_skill).

  • 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 di templates/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.

  • Due database PostgreSQL (account e mondo) con transazioni e migrazioni SQL versionate, applicate da mgctl migrate, o all’avvio quando persistence.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.

  • 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: mgctl prepara la root del server, applica le migrazioni del database; il moongate-convert Python 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.

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

Offrimi un caffè