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

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 here.

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.

42 Likes

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

3 Likes

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

3 Likes

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.

3 Likes

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.

2 Likes

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?
1 Like

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.

3 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.

3 Likes

I’ve just installed the studio plugin and I’m running into an issue with the UI:


For whatever reason, the bottom of the sidebar looks like it’s been cut off or not formatted properly
I’ve tried resizing the widget and moving it around but it’s still like that…

When I try to generate, it just shows this:
image

So at the moment, I’m glad there’s a template file that I can edit and generate output from, but I’m unable to create new network descriptions

Mind telling me what resolution you’re on? It’s probably an issue with the scaling.

2 Likes

Really? My window resolution’s 1920 x 1080 and studio looks just fine

Released a new version that should hopefully fix the rendering issues.

2 Likes

Just downloaded it – still the same unfortunately

Sorry for the late response, do you mind creating a GitHub issue about it, alternatively we could converse over devforum messages.

2 Likes

Windows release zip is empty, nothing in it

Thanks for pointing it out, I’ve replaced the empty windows zip in the latest release with one containing the built application.

1 Like

I don’t really have a github so I’ll shoot you a DM, thanks!

1 Like

Blink 0.12.0

This release contains new features and improvements.

Added

  • New set type, a string boolean key value pair dictionary, useful for sending over game/world flags.

Improvements

  • Blink is now available for linux (aarch64 and x86-x64), macos (aarch64 and x86-64).
2 Likes