Check out our latest project ✨ OpenChapter.io: free ebooks the way its meant to be 📖

QTI Neon

An asset by QuietTerminal
The page banner background of a mountain and forest
QTI Neon hero image

Quick Information

0 ratings
QTI Neon icon image
QuietTerminal
QTI Neon

QTI Neon is a minimal, game-agnostic, relay-based UDP multiplayer protocol library.Clients never communicate directly. The relay routes packets by destination ID in the packet header, keeping NAT traversal trivial and host addresses private. The host is just another participant — it has no special network position, only a special protocol role.Neon features:- Relay-mediated UDP with automatic NAT traversal- Connection handshake with host-assigned client IDs and session tokens- Token-based reconnection (5-minute window by default)- Opt-in reliable delivery with retransmit and duplicate detection- Per-source rate limiting (100 pps default)- Auto-ping keepalive- Optional DTLS 1.2/1.3 encryption — relay-terminated, transparent to game code- Zero game-specific logic in the relay or library

Supported Engine Version
4.2
Version String
1.0.0
License Version
MIT
Support Level
community
Modified Date
5 hours ago
Git URL
Issue URL

QTI Neon — Godot Addon

Relay-based UDP multiplayer library for Godot 4.

A NeonRelay server routes packets between a NeonHost and any number of NeonClients. Clients never connect to each other directly, so NAT traversal is trivial and host addresses stay private.

Classes

Class Role
NeonRelay Relay server — run this on a VPS
NeonHost Game session host
NeonClient Game session client
NeonConfig Shared configuration
DtlsConfig Optional DTLS encryption
GamePacketRegistry Register game packet type IDs
BatchAckManager Batch-acknowledge reliable packets
ReliablePacketManager Reliable delivery with retransmit

Quick start

# Host
var host := NeonHost.new(session_id, "relay.example.com:7777")
host.set_client_connect_callback(func(cid, name, sid): print("connected: ", name))
host.set_unhandled_packet_callback(func(type, sender, payload): print("packet from ", sender))
Thread.new().start(func(): host.start_and_run())

# Client
var client := NeonClient.new("PlayerName")
client.set_unhandled_packet_callback(func(type, sender, payload): print("packet from ", sender))
if client.join(session_id, "relay.example.com:7777"):
    Thread.new().start(func(): client.run())
    client.send_packet(PackedByteArray([0x01, 0x02]), 0x10, 1)

License

MIT — see LICENSE.

Full documentation and source: https://github.com/quiet-terminal-interactive/qtineon

QTI Neon is a minimal, game-agnostic, relay-based UDP multiplayer protocol library.

Clients never communicate directly. The relay routes packets by destination ID in the packet header, keeping NAT traversal trivial and host addresses private. The host is just another participant — it has no special network position, only a special protocol role.

Neon features:
- Relay-mediated UDP with automatic NAT traversal
- Connection handshake with host-assigned client IDs and session tokens
- Token-based reconnection (5-minute window by default)
- Opt-in reliable delivery with retransmit and duplicate detection
- Per-source rate limiting (100 pps default)
- Auto-ping keepalive
- Optional DTLS 1.2/1.3 encryption — relay-terminated, transparent to game code
- Zero game-specific logic in the relay or library

Reviews

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
QTI Neon icon image
QuietTerminal
QTI Neon

QTI Neon is a minimal, game-agnostic, relay-based UDP multiplayer protocol library.Clients never communicate directly. The relay routes packets by destination ID in the packet header, keeping NAT traversal trivial and host addresses private. The host is just another participant — it has no special network position, only a special protocol role.Neon features:- Relay-mediated UDP with automatic NAT traversal- Connection handshake with host-assigned client IDs and session tokens- Token-based reconnection (5-minute window by default)- Opt-in reliable delivery with retransmit and duplicate detection- Per-source rate limiting (100 pps default)- Auto-ping keepalive- Optional DTLS 1.2/1.3 encryption — relay-terminated, transparent to game code- Zero game-specific logic in the relay or library

Supported Engine Version
4.2
Version String
1.0.0
License Version
MIT
Support Level
community
Modified Date
5 hours ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers