Discuss Scratch

Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

I need to check if there is a difference in everyone's time-in-seconds sensor to see if my idea of automatic connecting and disconnecting system works.

http://beta.scratch.mit.edu/projects/10083509/

▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.
bobbybeetest
Scratcher
15 posts

Need Help Testing Multiplayer Engine

I think what might work well is to designate one person (e.g. a VPS running a program that speaks cloud protocol) who can be gauranteed to have an accurate timer, and have that single person be responsible for timing. Alternatively, you could try peer-to-peer load-balancing of the timers.
Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

bobbybeetest wrote:

I think what might work well is to designate one person (e.g. a VPS running a program that speaks cloud protocol) who can be gauranteed to have an accurate timer, and have that single person be responsible for timing. Alternatively, you could try peer-to-peer load-balancing of the timers.
Since I don't really have a VPS, I'm going to have to stick with p2p load-balancing. Could you (or someone else) write a script to do that for me?

▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.
botcrusher
Scratcher
500+ posts

Need Help Testing Multiplayer Engine

so idealy if you are going with the fake user idea you need
-a computer always on
-unlimited bandwith (or ridiculously high one)

Pondering what to work on.
bobbybeetest
Scratcher
15 posts

Need Help Testing Multiplayer Engine

Magnie wrote:

bobbybeetest wrote:

I think what might work well is to designate one person (e.g. a VPS running a program that speaks cloud protocol) who can be gauranteed to have an accurate timer, and have that single person be responsible for timing. Alternatively, you could try peer-to-peer load-balancing of the timers.
Since I don't really have a VPS, I'm going to have to stick with p2p load-balancing. Could you (or someone else) write a script to do that for me?

I'll attempt to, anyway. Do you mind if I only do pseudo code, for the sake of the not having to drag and drop everything? (or just write the algorithm to run in JavaScript or some ther very high level language)
LiquidMetal
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

The days since 2000 block data is hosted on the server, rather than being based on local system settings, so it should be possible to use it to eliminate the problem. See this example.

Someone reported the same bug in my version. Did I not fully understand the problem?

Last edited by LiquidMetal (March 20, 2013 00:11:47)

Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

LiquidMetal wrote:

The days since 2000 block data is hosted on the server, rather than being based on local system settings, so it should be possible to use it to eliminate the problem. See this example.

Someone reported the same bug in my version. Did I not fully understand the problem?
We kind of need a “seconds since 2000” block, otherwise, disconnecting players can take 24 hours. :p

Edit: Oh, I didn't realize that timer included the seconds… Now I can fix this.
Edit 2: Yeah, thanks for that discovery. Now I just need people to come on and check the time. Comment please.

Last edited by Magnie (March 20, 2013 01:03:51)


▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.
LiquidMetal
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

In my version, I replaced the (current ) block in the stage's main script with the currentTime variable. Did you specifically leave it as seconds? Also, someone reported a multiuser on mine… So I'm not sure if the problem was fixed.

EDIT: Or was that a separate problem?
You could have players add 1 to player1 taken instead of set; then check if its 2; if so, remove one and wait randomly and whichever gets it first would take it. Deadlock problem might come up then. Lists would be useful to queue. Oh well.

Last edited by LiquidMetal (March 20, 2013 02:20:08)

Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

LiquidMetal wrote:

In my version, I replaced the (current ) block in the stage's main script with the currentTime variable. Did you specifically leave it as seconds? Also, someone reported a multiuser on mine… So I'm not sure if the problem was fixed.
No, I forgot to replace those.

You could have players add 1 to player1 taken instead of set; then check if its 2; if so, remove one and wait randomly and whichever gets it first would take it. Deadlock problem might come up then. Lists would be useful to queue. Oh well.
Yeah, I was thinking of a queue as well, but that'll get a little more complicated.

▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.
LiquidMetal
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

Would it make sense to have one server for dealing with this stuff? (Someone runs project from some computer that is always on?) I know this would be inconvenient if the server was “down” ever, but it might make some of the problems easier to deal with. Or you could just wait for cloud lists.
Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

LiquidMetal wrote:

Would it make sense to have one server for dealing with this stuff? (Someone runs project from some computer that is always on?) I know this would be inconvenient if the server was “down” ever, but it might make some of the problems easier to deal with. Or you could just wait for cloud lists.
Well, it's not as portable if someone has to always have a project running on their computer… The real point of this project was to create an automatic system that dealt with new connections and disconnections so people don't have to press a Leave/Exit button before they close the web page.

▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.
LiquidMetal
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

Ok; Why do you have both users testing for both users timeouts instead of just testing the other? Testing its own could be separate for server disconnect, maybe?
Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

LiquidMetal wrote:

Ok; Why do you have both users testing for both users timeouts instead of just testing the other? Testing its own could be separate for server disconnect, maybe?
You can't really have users test themselves for disconnections… Could you explain what you mean?

▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.
LiquidMetal
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

It seems to me that both users test the other player and themselves for disconnection. I don't understand why it would be like that.

Users cannot test themselves for disconnection and remove from list, but can alert player if cloud variables became suddenly unavailable.
Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

LiquidMetal wrote:

It seems to me that both users test the other player and themselves for disconnection. I don't understand why it would be like that.

Users cannot test themselves for disconnection and remove from list, but can alert player if cloud variables became suddenly unavailable.
At most the users test everyone else, they can't really test themselves other than telling everyone else that they are still “active.”

▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.
LiquidMetal
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

I just looked at the scripts again, and I don't see the problem I was complaining about any more. Perhaps you fixed it in between, but now, it doesn't work at all. Could you add a username tracker for the p1 and p2 slots just so we can see who it thinks is in the game? Right now noone is moving but it doesn't set me into 1 or 2 and claims its full.
Magnie
Scratcher
100+ posts

Need Help Testing Multiplayer Engine

LiquidMetal wrote:

I just looked at the scripts again, and I don't see the problem I was complaining about any more. Perhaps you fixed it in between, but now, it doesn't work at all. Could you add a username tracker for the p1 and p2 slots just so we can see who it thinks is in the game? Right now noone is moving but it doesn't set me into 1 or 2 and claims its full.
Just fixed that bug (hopefully). It had something to do with continually checking if the other player was disconnected or not. I'll have to do some more testing later.

▴ ▾ ▴ Macbook Pro 13" 2015 i5-5257U 8GB RAM - MacOS Sierra - Vivaldi v1.7 ▴ ▾ ▴
There are 10 types of people in this world, those who understand binary, those who don't, and those who know ternary.

Powered by DjangoBB