Really neat effect I gotta admit. Looking at it, it doesn’t seem too hard to implement (every start of a programmer’s hell ). Ight, let’s get real now, to spawn the dots, you can just use 1x1 frames or 2x2, basically see what fits you, spawn them randomly and for each one pick a random position every say, 3 seconds, and move it there, now that part is done, draw some lines, I looked closely in some points of the vid and doesn’t seem like it connects the closest dots but it does connect to some close ones, getting distances shouldn’t be too hard, just something like:
(p1.AbsolutePosition - p2.AbsolutePosition).Magnitude
Where p1 and p2 are 2 different frames, you can then sort it using table.sort()
and either choose the closest one or pick a random one from the, say, closest 5
That will be very expensive to compute, use things like a grid and only take distances from the closest, say 9 boxes, obviously the number will differ according to the grid size
Drawing lines between the circles won't be too hard so I don't think I need to go over it, it's just some trigonometry - math - so ya, although If you need help with it feel free to ask me.
Now for the mouse interactivity part, remember the grid we had earlier? Well, it'll be very handy now! Check for dots in the same grid (or closer ones if your using a more compact one) then check for the mouse delta, using your own function as `UserInputService:GetMouseDelta()` won't work in this case, then by checking directions and clamping the values to a reasonable range, move the circles.
It would be helpful to make a class circle which has a velocity value, it moves by that velocity value every frame so no `TweenService` is needed! It will also help, greatly, with the mouse part. Good luck!