so far ive wanted to sync a client with an ongoing song so people could join in halfway through the song.
i’ve tried using workspace:getservertimenow() for everything, but that results in delays for different devices and latency
are there any alternatives, maybe converting getservertime now into an offset for time() or os.clock()?
What if you incorporate ping to the time?
all the song timings happen on the client. so ping shouldnt matter, the only thing affected by ping would be the start time, whiuch is recorded on the server
idk bro ![]()
So due to technical limitations we can’t do live things.
Could we try to make a “ghost” trail of the other players actions so player 1 would see player 2 actions 0.5 secs delayed?
its not seeing other people’s progress through the song, the song is just being played from that point and everyone who joins in can be around the same position in the song
the problem si that workspace:getservertimenow() seems to change based on latency and the performance of the device, so it wont just be extremely accurate off the bat, you have to calibrate it manually for the rhythm timings
What if first client always sends song position to server?
Ping different ~300 per player/600ping (0.6sek)
player:GetNetworkPing()
Sound instances have a Time property to say how far through the audio it is.
Should be easier to just do some back and forth calibration by sending the server the clients ping (average it out a bit over the span of a second or two) and offsetting where the player drops in accordingly (ie if they’re on 1000 ping you’d want them to be 500ms further ahead in the song than what the server is setting as a baseline “sync” time)
is this possible when using soundservice’s play local sound?