Blink | An IDL compiler written in Luau for ROBLOX buffer networking. | 0.11.1

Blazingly fast, DX-oriented, buffer networking.


1.6-3.7x faster than ROBLOX
1000x less bandwidth than ROBLOX

GitHub | Documentation | Releases

About

Blink is a powerful tool that completely changes how you do networking on ROBLOX. Blink has it’s own interface description language which is used to describe the networking events in your game, this is then translated into Luau for the best possible performance. It offers both a CLI and Studio Plugin version so you can take advantage of its many benefits regardless of whether you use an external editor or not.

Performance

Blink aims to generate the most performant and bandwidth-efficient code for your specific experience, but what does this mean?

It means lower bandwidth usage directly resulting in lower ping* experienced by players and secondly, it means lower CPU usage compared to more generalized networking solutions.

* In comparasion to standard ROBLOX networking, this may not always be the case but should never result in increased ping times.

Benchmarks are available on the official site.

Security

Blink does two things to combat bad actors:

  1. Data sent by clients will be validated on the receiving side before reaching any critical game code.
  2. As a result of the compression done by Blink it becomes harder to snoop on your game’s network traffic.

Getting Started

Convinced? Head over to the installation page to get started with Blink.

License

Blink is open sourced under the MIT License so you can do whatever you want as long as you provide attribution.

9 Likes

you missing an “s” behide the url cause no worky

Oops, thanks for pointing it out. Link should work now.

1 Like

Hey!

This looks really great and promising! However, I saw the name, Blink. Wasn’t Blink taken by Google and used as chrome rendering engine? You should suggest rename though!

Regardless, it looks great!

Thanks for the kind words, I really appreciate it! As for the name, I think it should be fine as the projects don’t have anything in common.

1 Like

I checked the benchmarks, nice work. Could you include Warp as an additional test? Also, if you can reduce P0 further, I would absolutely recommend this.

Could you include Warp as an additional test?

I actually used to have warp included but it stopped working after one of it’s releases, I will look into getting it working again.

Also, if you can reduce P0 further, I would absolutely recommend this.

I assume you’re talking about kbps, the issue with the kbps benchmark is that the faster something runs the higher the kbps is due to it being able to send more packets per second (Example: ROBLOX sending fifteen 100 byte packets per second versus blink sending sixty 30 byte packets per second). I try to account for this by scaling the kbps usage Kbps * (60 / FPS) but this still isn’t as accurate to the true bandwidth usage as I’d like it to be. I’m looking into a better way to benchmark bandwidth usage.

1 Like

Man, here I was despairing over Zap not having Studio drop in releases… Blink looks really good!
I’ll try it out myself, but since I’m a bit of a noob regarding these, I have some questions:

  1. Does it do batching? I’ve heard a few times that this is the main way “network” type modules have an advantage over regular remotes, getting rid of the overhead
  2. For the event types, what’s the difference between SingleSync and SingleAsync?

Yes!

SingleSync means it will not wrap the callback in task.spawn so if the callback yields it will yield the whole deserialization process.
SingleAsync means that the callback will be wrapped in task.spawn at the slight cost to performance.
If you plan to yield in your event callbacks use SingleAsync otherwise use SingleSync.

2 Likes

Nice work, it’s the first full compiler I’ve seen in LuaU ( +1 for using Lune ). I popped in to say that I really appreciate your project structure here. It’s a lovely repository filled to the brim with information to learn from, even as an advanced LuaU developer.

2 Likes