A proof-of-concept Hytale server listener implementation in Go.
This project was a learning exercise exploring Hytale's protocol in Go. The architecture and patterns are heavily inspired by @Sandertv's excellent gophertunnel library for Minecraft: Bedrock Edition (except I made it worse). For an actual, maintained Hytale protocol implementation in Go, check out: gotale/gophertale.
- QUIC-based networking with TLS 1.3
- ALPN protocol negotiation (
hytale/1) - Self-signed certificate generation
- Bidirectional packet streaming
- Packet serialization with variable-length encoding, null bits, and offset tables
- Implemented packets:
Connect/ConnectAccept/DisconnectPing/Pong/StatusAuthGrant/AuthToken/ServerAuthToken
- Insecure mode (Although the client at the moment will NOT allow this)
- Authenticated mode with full Hytale auth flow:
- Identity token validation via JWKS
- Authorization grant exchange
- Access token validation with certificate fingerprint binding
- Scope verification (
hytale:client,hytale:editor,hytale:server)