I have a digital board consisted of many parts (well, not many, but it’s crucial for all of them to update simultaneously). Looping alone without RenderStepped/Heartbeat, although it’s a great idea, can display delays on “potato” PCs.
I know using RenderStepped/Heartbeat are the best options (preferrably renderstepped since it renders prior to each frame), but let’s say I want to hit it after a specific amount of time. How would I do that?
(for an example; have all boards update every 5 seconds before that frame renders)
local heartbeat = game:GetService("RunService").Heartbeat;
local function heartbeatWait(waitTime)
local now = os.clock();
while true do
if os.clock() - now >= waitTime then break; end
heartbeat:Wait()
end
end
Is there anything like this with RenderStepped? This is a great solution, but, when thinking about it twice, RenderStepped renders it prior to the next frame.
local renderStepped = game:GetService("RunService").RenderStepped;
local function renderSteppedWait(waitTime)
local now = os.clock();
while true do
if (os.clock() - now) >= waitTime then break; end
renderStepped:Wait();
end
end
while true do
print("this is in a 1 second delay loop using the RenderStepped wait event");
renderSteppedWait(1);
end