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.
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!
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.
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.
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:
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
For the event types, what’s the difference between SingleSync and SingleAsync?
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.
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.
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:
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