Moongate.Network.Packets
Definizioni dei pacchetti Ultima Online, serializzazione basata su span e registrazione dei pacchetti per Moongate.
Installazione
Section titled “Installazione”Richiede .NET 10. Usa la versione del package disponibile nel feed NuGet configurato.
dotnet add package Moongate.Network.PacketsFunzionalità
Section titled “Funzionalità”- Un insieme iniziale di pacchetti per ClassicUO 7.x, inclusi messaggi di login, controllo, ping e funzionalità supportate.
- Un registro dei pacchetti che usa metadati per registrazione e ricerca degli opcode.
- Lettori e scrittori basati su span per la serializzazione dei pacchetti.
- API di codifica e decodifica testabili indipendentemente da un server TCP.
Esempio
Section titled “Esempio”Registra il pacchetto ping, congela il registro e decodifica un frame codificato:
using Moongate.Network.Packets.General;using Moongate.Network.Packets.Registry;using Moongate.Network.Packets.Serialization;
var registry = new PacketRegistry();registry.RegisterIncoming<PingPacket>();registry.Freeze();
var bytes = PacketCodec.Encode(new PingPacket(42));
if (!registry.TryDecode(bytes, out var packet, out var opCode) || packet is not PingPacket ping){ throw new InvalidOperationException($"Could not decode opcode {opCode:X2}.");}
Console.WriteLine($"{opCode:X2}:{ping.Sequence}");Vedi Pacchetti e handler per la tabella completa degli opcode integrati, un pacchetto personalizzato, test a livello di byte e integrazione nell’host.
Dipendenze e ambito
Section titled “Dipendenze e ambito”Questo package dipende da Moongate.Core. Non richiede Moongate.Network per codificare o decodificare pacchetti.
L’insieme di pacchetti è un sottoinsieme del protocollo UO. La decodifica richiede un frame di pacchetto completo; buffering e framing di un flusso TCP appartengono all’integrazione del trasporto. Handler dei pacchetti e dispatch sul ciclo di gioco appartengono all’integrazione del server.
Licenza e sorgenti
Section titled “Licenza e sorgenti”Distribuito con licenza AGPL-3.0-or-later. Vedi il repository dei sorgenti e la licenza.
Creato con ❤️ da Tom
