ID:103893
 
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
BYOND could really use some sort of simple ping command. Not to be confused with the client-side command, ping() would have the server ping an address then return the round-trip time as a number.

Example:
var/ms = ping("67.228.127.155")
Yeah, it's been requested a bunch of times. No idea why it hasn't been added yet.
It hasn't been implemented yet because there are very few practical uses for it.
Warlord Fred wrote:
It hasn't been implemented yet because there are very few practical uses for it.

Well, I'm posting about it because I could really use some information regarding player connection quality. It's a rather simple thing to ask for so I don't really see any reason for it to be deferred.

I'll just have to wait in line for a response.
Warlord Fred wrote:
It hasn't been implemented yet because there are very few practical uses for it.

The practical use(s) for it would be exactly what it itself does - determines connection quality. Its standard in pretty much every online game ever made, and the few that don't have it tend to get complaints about not having it. Since its already partially available in BYOND, it shouldn't be that difficult for them to complete, and seems like a common sense addition with no downsides. They could also give us manual control over .configure_delay if it were fully implemented, since the current systems for that don't work worth a crap, and do nothing but massively degrade the gameplay experience. Really, I'd just like to see .configure_delay systems completely removed, but that's another topic.
EDIT: Also, I don't necessarily agree with being able to ping any random IP address. This should be a client/proc
Falacy wrote:
Also, I don't necessarily agree with being able to ping any random IP address. This should be a client/proc

The reason I ask to ping any address rather than a just client is so I can ping other game servers and let the player arrange them according to connection quality. It's just more resourceful that way.
It sounds like you'd need it to be a client proc. client.ping(addr) would return that client's ping time to addr. If this just returns the server's ping time to addr then you're ranking hosts by the server's connection quality, not the client's connection quality.
If you just want server to server ping, you could probably set something up using world.Export & Topic
Forum_account wrote:
If this just returns the server's ping time to addr then you're ranking hosts by the server's connection quality, not the client's connection quality.

Which is exactly as intended, seeing as how the server listing menu is only accessible offline. My goal is to create an entirely stand-alone executable the game can be played from. Players will be able to launch the game from their desktop, look for a server, and then connect to one. If they wish to join a different server they'll leave the one they're in, be sent back to their local dmb, and then immediately open the server listing menu.

Making ping() a client procedure would require a remote instance of DS (the client) to ping an address then return the value to the host server. While it's more useful, it's also more complicated and would probably require this otherwise simple feature to be shelved longer.

Falacy wrote:
If you just want server to server ping, you could probably set something up using world.Export & Topic

I tried that, actually. Export() and Topic() are way, way too slow and unreliable to provide accurate ping information.
I would like this, and I believe many others would too. It won't be hard to implant either so why not go for it?
More on this, and by the way Bump, I would like to add that I want have the ping() as well as being able to force clients to use the .configure delay # command. A shoddy work-around is to assign it in a macro, but it's not exactly what some of us need, in-case we want to periodically ping() and then adjust network-delay accordingly to better the networking.

One would assume client.Command() would allow us to use ".configure delay #", unless I'm executing it wrongly, it doesn't work.
I would like to see this feature. +1
I like this idea as well. In the mean-time use the interface to do this. Winset a timestamp to a hidden label. Then winget it back and make a new timestamp and compare the two..... Two much work, but if you must have it, it works.
Leur wrote:
I like this idea as well. In the mean-time use the interface to do this. Winset a timestamp to a hidden label. Then winget it back and make a new timestamp and compare the two..... Two much work, but if you must have it, it works.

I think the purpose of this is to have the server ping a remote machine (not necessarily a client). Also, its been mentioned that some workarounds, like using world.export, just aren't precise or reliable enough.
Man I've wanted this for a loooong time.
bump
Bump
+1!!
In response to SuperAntx
Windows has 'ping' command, Linux should have something similar. You just need to write a .dll that would ping desired address and return number.
Page: 1 2