[v0.2.0] Graphite | Modern High-Perf Networking Library for Roblox

:high_voltage:Graphite

Make your networking easy, fast, predictable.

GitHub Repo | Creator Store | Wally


:bell: About

Graphite is a continue of Quartz Project Designed to make networking like a flow.
Graphite using CC(Congestion control) called QNC (Queue Network Control) which using technologies like PI/PID and CoDel

:red_exclamation_mark:This module is in Pre-Release, API maybe can changed!

:star: Features:

  • Very easy API with builder pattern
  • Type safe networking, Graphite using Validator
  • Compact, structure binary serialization with no type tags
  • Slice batching, Not just naive batching, only advanced
  • QNC - Smart Congestion control algorithm
  • 37 advanced and basic types

:rocket: Basic Usage(Client):

local Graphite = require(path.to.Graphite)

local Event = Graphite.Event("Test")
      .type(Graphite.String8)
      .droppable()
      .build()

Event.OnClientEvent(function(str: string)
    print(`got from server {str}`)
end)
-- autocomplete fully working!

Server:

local Graphite = require(path.to.Graphite)

local Event = Graphite.Event("Test")
    .type(Graphite.String8)
    .droppable()
    .build()
game.Players.PlayerAdded:Connect(function(player: Player)
    Event.FireClient(player, "hello")
end)

:handshake: Contribution:

  • View official roadmap
  • see CONTRIBUTING.md in github repo

:magic_wand: RoadMap

  • Optimized pools for anything
  • No runtime tables
  • Bitpacking and ZigZag
  • More QoS Features
  • ???(Secret)
How u will be rate Graphite?
  • Cool
  • Not bad
  • Looks interesting
  • AMAZING
  • API cool
0 voters
Another rate
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0 voters

My other projects:

3 Likes

Damn bro PID controllers for congestion

Where have I seen that in Luau before

Not Only PID, CoDel Also included in QNC

but this is not “canon” CoDel, in QNC CoDel is very changed. Also CoDel dropping only works on droppable channles.

In my tests QNC dropped ~3000 packets when Queue was 30000 packets

My Model is banned on Creator store :sob: Please use github repo

creator store is taken down, not sure how to setup github and want to try it. what can i do?

i can send you a rbxm file of module

yes please, or you can provide the rbxm directly in the post?

Here:
Graphite.rbxm (19.8 KB)

this is very cool! the only problem i have is in the basic usage you have to do tostring(bool) or else you get this error: attempt to concatenate string with boolean

i don’t have a use for it but its nice

The issue is in the example usage (string concatenation with a boolean), not in the library itself.
I’ve fixed the documentation example. Thanks for pointing it out.

1 Like

:up_left_arrow: News Log #1 - Small changes

  • QNC CoDel part is now more aggersive to high delay
  • Fixed Packet drop on Client side
  • Removed debug prints(forgot)

:up_left_arrow: News Log #2 - Optimization

  • Eliminated GC allocations in hot path (table & buffer pooling)
  • Improved performance and latency stability

:up_left_arrow: News Log #3 - Test

Ran a burst test with 10,000 packets (u8 payload).

Results:

  • 130 ms total processing time
  • 8 network slices
  • 81 packets dropped by QNC (droppable channel)
  • Max slice size: 2735 bytes

Queue stayed stable under heavy load.

:up_left_arrow: News Log #4

  • Graphite is now avaliable in creator store!

:up_arrow: Update 0.1.1

  • Added RTT module for QNC
  • QNC Is now adaptive by RTT module
  • Normal CoDel max drop procent (25%)

:up_left_arrow: News Log #5

  • Graphite is now avliable on Wally!

:up_left_arrow: News Log #6 - Better RTT module

  • RTT module now using buffers instead basic numbers

:up_arrow: Update 0.2.0

  • Added type String8
  • QNC CoDel part is now using math.ldexp for more aggresive drop
  • optimized i24/u24 writing

I like the api patterns wondering if this is something that will be continued to newer versions?
considering using this for a project