Packet Profiler - accurately measure remote packet bandwidth!

v1.2.1

  • Fixed in-game profiler errors
  • Added buildrelease.project.json file
1 Like

No errors, but pressing Ctrl + F5 doesn’t appear to do anything.

1 Like

Are you testing this in-game? Additionally, where did you parent the localscript? I’ve set up a test place and it seems to be working fine in game.

1 Like

When running the script a few seconds after the game loads, it works fine. The problem might just be specific to our game.

1 Like

Congratulations! This is a very cool plugin!
Perhaps you should collaborate with @Eltobb to make it more Eltobb-suitey?

1 Like

If Elttob could make icons, that would be awesome :slight_smile:
But as it stands now I’m quite content with the UI design, and don’t have much reason to change it. The profiler isn’t meant to fit the rest of the studio UI suite since it’s meant to visually mimic the microprofiler’s design:

3 Likes

Hey! Is there a way to make it so only certain players can use the in-game profiler?

You should be able to just modify the LocalScript and add a return statement at the top, e.g.

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

local AllowedIds = {123456}
if not AllowedIds[LocalPlayer.UserId] then
    return
end

-- your code
1 Like

v1.2.2

  • Updated profiler UI to better resemble microprofiler UI, which as a side benefit provides better performance
  • Fixed Running label not updating to Paused when selecting a frame
  • Fixed tooltip UI’s offset being off when clicking a frame
  • Fixed lint errors
  • Fixed plugin-dev errors

v1.2.3

  • Updated byte sizes to be more accurate for values in tables
  • Updates number and vector2 byte sizes to be more accurate
1 Like

v1.2.4

  • Updated boolean to be 1 byte instead of 2
  • Fixed RemoteName.profiler not working properly
4 Likes

v1.2.5

  • Renamed file extensions from .lua to .luau
  • Renamed RemoteName.profiler to RemoteFunctionEvent.profiler for better clarity
  • Added aftman.toml and Rojo 7.2.1 support
1 Like

Is a vector3int16 supposed to show up as 1 byte?
image

Ah, sorry - no, they shouldn’t. I accidentally wrote Vector3Int16 with a capital I instead of a lowercase i.

2 Likes

v1.2.6

  • Renamed Vector2Int16 to Vector2int16
  • Renamed Vector3Int16 to Vector3int16
1 Like

Occasionally I notice that the amount of data received from the Roblox ctrl+f7 profiling tool indicates higher amounts of data received bandwidth than what is being shown on the packet profiler.
And from few tests I’ve made, It seems like the packet profiler is pretty consistent data-wise.
I also discovered that the high data receive (shown by roblox ctrl +f7 tool) in my game is inconsistent (by testing the exact same scenarios and getting different results of data received bandwidth).


(Shown - Roblox Ctrl+f7 tool displays 28 KB/s while packet profiler is pretty much empty)
In my opinion, It might suggest that the roblox data receive profiler is not accurate/relaible.
I would greatly appreciate it if someone could offer an alternative theory or explanation for this.

Thanks!
(P.S this plugin is awsome!)

1 Like

I’ve noticed the same issues while measuring packet sizes; due to this, when calculating the packet size of data types I had to:

  • send data through remotes and measure the outcome
  • perform the measurement three times, and then average the result
  • perform this measurement on three data amounts (10, 100, 1000) and perform linear regression to figure out the scale coefficient

My observations have been the same as yours, and have led me to the following educated guesses, which may or may not be interlinked:

  • the packet receive step is not stable, but rather occurs every few odd frames. This can cause fluctuation between each second.
  • Since roblox averages the result and it’s unknown how it’s calculated, numbers from the previous few seconds may impact the calculation on the current second.
  • Roblox’s profiler also seems to take into account for physics and other internal labels, since even in a completely empty baseplate the receive rate hovers at ~0.1-0.2kb/s.
1 Like

Thanks, I appreciate the in-depth details; they are really helpful.

Your calculation methodology of the packet size seems reliable to me. (and even more, when compared to the unknown one, on roblox’s end).
So this makes me even more confident about our assumptions.

Thanks!
Great work!!

1 Like

Does this support measuring Remotes that are created at runtime? The plugin won’t measure my game’s packets as they don’t exist prior to pressing play and just displays an empty window.

Hey,
It doesn’t seem like it does at the moment. What you could do is add a BindableEvent called “RemoteFunctionEvent.profiler” anywhere in ReplicatedStorage, connect to all remotes created at runtime, and send data to the plugin with :Fire(Remote, … arguments)