Multiplayer initial testing success

A forum for online playing, administration, bugs and feature requests
loki1950
The Shepherd
Posts: 5841
Joined: Fri May 13, 2005 8:37 pm
Location: Ottawa
Contact:

Post by loki1950 »

When I installed TortoiseSVN, I had to hunt around for information on how to grab the VS codebase. A nice simple "do this, then do this, then do this" on the main page would be nice, if it's not already there
all ready there for linux and XP 8) real simple.

Enjoy the Choice :)
hellcatv
Developer
Developer
Posts: 3980
Joined: Fri Jan 03, 2003 4:53 am
Location: Stanford, CA
Contact:

Post by hellcatv »

BTW due to an accident involving a reformat on the webserver, the registration script was wiped...
account creation is halted for the time being--though if you have a special request you can try mailing me and I could add you manually *potentially*

The account registration script was a hack anyway--we want to tap into the forum registrations to do that.... that way we can list your kills here or something hehehe ;-)

one day

-Daniel

Anyhow I'll let you know when it's up again--those of you with accounts can continue playing I think
Vega Strike Lead Developer
http://vegastrike.sourceforge.net/
www2
Venturer
Venturer
Posts: 537
Joined: Sat May 14, 2005 10:51 am
Location: milkyway->the sol system->earth->Europe->The Nederland->Soud Holland->Leiden
Contact:

Post by www2 »

@hellcatv
i think that the forum is a addon of the acount server than the acount is a addon for the forum...

this idea is only if god in a mmo game...
for now is this a good hack...
All Your Base Are Belong To Us
mkruer
Site Administrator
Site Administrator
Posts: 1089
Joined: Thu Jan 02, 2003 10:07 am
Contact:

Post by mkruer »

I think I found a major flaw in the online game.

I don’t know where you are processing the data for the object coordinates in the game but I can tell you that there is a major disconnect. When playing between a high end system and a low end system.

My friend has a P-500 with a 32MB video card. (Don ask) he can load the game, but only gets <1 Frame Per Second. We (I) did some simple flyby and shooting, what was interesting is that it appeared on his system ~300 seconds later, the same movements, same gun fire. I killed him and he continued to play.
I know you believe you understand what you think I said.
But I am not sure you realize that what you heard is not what I meant.

Wing Commander Universe Forum | Wiki
Wing Commander: The Wasteland Incident
geoscope
Bounty Hunter
Bounty Hunter
Posts: 205
Joined: Thu Jun 29, 2006 1:58 am
Contact:

Post by geoscope »

I'd say that's a flaw alright. Given the disparity in performance, it sounds like what is needed is a server side check to limit connections to a similar class..
IE default would be 1gHz and 30 fps upward, but a server for slower machines could be set to 300mHz ?fps - 500Mhz, 20ps, ar whatever range... to keep ppl playing at the same rate.

BTW, I don't think that is necessarily a server side problem... think about how VS handles events like collision detection. Or think about Time compression and using SPEC to go through a planet. The events are bound to screen draws, aren't they? If what I'm thinking is right, multiplayer can't be a reality, without either limiting players to similar speed computers and connection rates, or changing how VS internals work first.
mkruer
Site Administrator
Site Administrator
Posts: 1089
Joined: Thu Jan 02, 2003 10:07 am
Contact:

Post by mkruer »

I don’t know the internals either, but if I am not mistaken for other major MMO games, the servers are responsible for object location. Ever server app for a game I have seen is basically running a light weight version of the game (go graphics) but is responsible for either excepting or not excepting changes to the position of objects inside the server space. If the server says the move is invalid then it send back to the client where the object should be, regardless of where the client thinks it should be. This way even on slow system the client is kept up to date, and on these slow system you would notice a lot of jumpiness. From everyone else perspective the ship is just slow to respond.
I know you believe you understand what you think I said.
But I am not sure you realize that what you heard is not what I meant.

Wing Commander Universe Forum | Wiki
Wing Commander: The Wasteland Incident
geoscope
Bounty Hunter
Bounty Hunter
Posts: 205
Joined: Thu Jun 29, 2006 1:58 am
Contact:

Post by geoscope »

Ok then, that sounds right... But it sounds like what was happening was that either the server had data queued up to send faster than the slow client could receive it, or the client had data it was processing stacked up, and didn't know it was "dead", so some sort of shorcut is needed... a separate thread that communicates "You are dead.", "Oh, I am? Well, bother with all this graphical, positional, vector data then... Ack! Ok, NOW I'll show my player all the univere spinning round his lifeless freezing corpse."

In other words, have 2 communication threads for each player.. Once for large data chunks, another to signal events, commands etc, and ability to priority override the local VS engine's processing of the data.
hellcatv
Developer
Developer
Posts: 3980
Joined: Fri Jan 03, 2003 4:53 am
Location: Stanford, CA
Contact:

Post by hellcatv »

First of all: for the multiplayer demo you were running--- a 500 MHz machine should be able to run it at 45 FPS... if the appropriate graphics drivers are installed...
clearly his sytem setup is bogus...


secondly...you need to be able to process frames as fast as the server sends them out--otherwise who cares how accurate it is...
don't worry it adjusts to computer speed fine...unless you can't process the 5 fps of network packets sent out...and if you get less than 5 fps, play another game--cus VS is not fun at that speed...you need a setup that can pump at least 10 fps before we should worry about your QOS as a player (i.e. we won't prioritize having the guy running at 3 fps having a decent gameplay experience when we can focus on the gun running at 20 or 100)

network packets run slowly
physics frames run medium-fast
and graphics frames run quickly

the game already divides it into tiers...it's clearly correct :-) unless your system is setup wrong

tell the dude to download OGL drivers---or to get a video card from nvidia or ATI made after 2001 (shouldn't be more than 20 bucks--the 20 bucks he saved by not buying VS in the first place)
Vega Strike Lead Developer
http://vegastrike.sourceforge.net/
hellcatv
Developer
Developer
Posts: 3980
Joined: Fri Jan 03, 2003 4:53 am
Location: Stanford, CA
Contact:

Multiplayer server back up

Post by hellcatv »

I restored the backups on the registration server
so things are back online
Vega Strike Lead Developer
http://vegastrike.sourceforge.net/
www2
Venturer
Venturer
Posts: 537
Joined: Sat May 14, 2005 10:51 am
Location: milkyway->the sol system->earth->Europe->The Nederland->Soud Holland->Leiden
Contact:

Re: Multiplayer server back up

Post by www2 »

hellcatv wrote:I restored the backups on the registration server
so things are back online
Good work!!!
I found also planets and stations on the server...
Screen shots form my come soon..
All Your Base Are Belong To Us
robothead
Merchant
Merchant
Posts: 39
Joined: Sun Jun 19, 2005 7:54 am

Post by robothead »

does anyone mind if i make a diagram of what my own(not main, i don't want my idea to dictate the main vegastrike mp game will be) multiplayer mod idea will be like?
mkruer
Site Administrator
Site Administrator
Posts: 1089
Joined: Thu Jan 02, 2003 10:07 am
Contact:

Post by mkruer »

Is it related to any of the multiplayer environments already being tested or just an idea. If its an idea then I would recommend placing it in the General Modding http://vegastrike.sourceforge.net/forum ... m.php?f=10 unless it is related to another project/mod under development in which case it should go there.
I know you believe you understand what you think I said.
But I am not sure you realize that what you heard is not what I meant.

Wing Commander Universe Forum | Wiki
Wing Commander: The Wasteland Incident
mkruer
Site Administrator
Site Administrator
Posts: 1089
Joined: Thu Jan 02, 2003 10:07 am
Contact:

Post by mkruer »

Hellcat, I noticed something, that I hope is in error in your original post.
hellcatv wrote:unless you can't process the 5 fps of network packets sent out...and if you get less than 5 fps
Something seem wrong, 5FPS is 200 milliseconds per update. I don’t know how many actions games you play online but this type of turn around is horrible, I have seen people with lower timings get booted from a server. 70 to 120ms is nominal, lower is even better.

I haven’t had a chance to review the exactly process but I am assuming that you sync timings with the parent server and then allow for the client to update the server as frequently as possible. The server takes those requests and combines them with other incoming packets into a unified packet then sends out a time stamped packet to all the client system. The client is responsible to updating the locations of all other objects, if it cant keep up that’s as you say is another issue, however if the packets are timed stamped then the system is slow to keep up with the incoming packet rate, should start dropping the packets and only process the latest most up to date one. That 5FPS should be more like 20FPS (50ms) or 30FPS (33.4ms). In general the tighter the timings the better the game play.

5FPS might also explain the squeezing off one round and the system sending 2 or three shots, especially if the refire delay for each shot is only 50ms.
I know you believe you understand what you think I said.
But I am not sure you realize that what you heard is not what I meant.

Wing Commander Universe Forum | Wiki
Wing Commander: The Wasteland Incident
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Post by klauss »

Just an idea, for prioritization:

Compute a "perception index", based on data change (I'm assuming the client will eventually extrapolate using a constant acceleration model).

Code: Select all

PerceptionIndex = 
    (Wa * DeltaAccel + Wv * DeltaV + Wp * DeltaP)/(Wdm * Distance) 
    + Wf * numShotsFired / (Wdf * Distance) 
    + Wt * (isTarget?1:0) / (Wdt * Distance)
Where
Wa = Acceleration Weight
Wv = Velocity Weight
Wp = Position Weight
Wdm = Distance for movement weight
Wdf = Distance for shots weight
Wdt = Distance for targetting weight

But, most importantly,
DeltaAccel is difference in last reported acceleration value
DeltaV is difference in predicted velocity (based on constant acceleration extrapolation from last reported acceleration)
DeltaP is difference in predicted position (based on same model)

See the idea?

This model could be used to prioritize updates both to and from the server. How both ways?

The server would use this value to prioritize updates in an internal queue - simple. I could try doing that if I had a grip of how server code works... who knows... but I post just in case someone takes the idea and does it first.

The server would inform in each update packet of the player's current "priority", which is the maximum priority as seen from other players. So... if there's a player A, B and C, and B has A as priority 1 (low) and B has A as priority 10 (high), A would receive 10 as its own priority.

Then, the server would choose, based on priorities, how to allocate incoming bandwidth. Cool huh? High-priority units would be given more bandwidth, and lower-priority units less bandwidth, and the bandwidth gets translated to update frequencies, and the update fequencies get transmitted to the clients as a command, like UPDATEME_THIS_OFTEN or something. That way, the server manages bandwidth dynamically and efficiently for optimal perceived responses.

Cool idea, right?
Who wants to tell me how to implement it?
Like... where is the client loop? The server loop? Where do I find things?
I'd love some help, because I don't have that much free time, and digging through source code isn't a very productive way of spending it if I don't get to do something with the code by the time time runs out.
(wow... rantish paragraph).

Hm... I posted here because Matt posted about this stuff and it prompted me to take a smallish look at the code (and I didn't get much, except that clients update once in a while without much sophistication). But perhaps I should mail it to the dev list.... hm...
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
scheherazade
Developer
Developer
Posts: 427
Joined: Thu Jan 09, 2003 6:03 am

Post by scheherazade »

The truth is quite simple.

If you have a community test that just plain sucks from the user standpoint, you chase away users.

One project I was on practically lost most of its user community because a major release had a multiplayer crash bug that couldn't be tracked down for like 2 weeks.

In those 2 weeks admins got tired of resetting, and all the servers went away (airquake 2 or 3, don't remember which one. i worked on both a while ago :-/).

People are fickle, you don't want to make the wrong impression.

Testing between people that are interested in the project should come first . Not to the point of excluding others, but simply avoiding any "hey we have multiplayer! comeon in!" announcements.

once you can actaully have a proper game going on, AND there is a scoreboard of sorts (required, really. games have win conditions...), you can be more vocal about having people come in and play.

-scheherazade
mkruer
Site Administrator
Site Administrator
Posts: 1089
Joined: Thu Jan 02, 2003 10:07 am
Contact:

Post by mkruer »

@Klauss
I think that is a good idea, but it still does not address the fundamental issues of more frequent updates. Your idea would work great for missing packets, but I think that’s already been accounted for in the engine for the most part.

@scheherazade
Welcome back haven’t heard from you in a while. The online play is not bad nor unplayable. I have been on it with 4 other people and not had issues other then I feel it’s slow to respond. Then again my reflexes might be faster then some or I just like to bitch more. Take your pick. Point is that this is a initial testing request on a development forums, and not really meant for public consumption although we do appreciate user feedback. My guess is that this will be released for real with the data 5.x branch. Also to my knowledge only the developers + friends had downloaded and tried it so I think it’s safe to say that its far from the point where people will abandon the idea because it doesn’t work.
I know you believe you understand what you think I said.
But I am not sure you realize that what you heard is not what I meant.

Wing Commander Universe Forum | Wiki
Wing Commander: The Wasteland Incident
eddit
Merchant
Merchant
Posts: 61
Joined: Wed Jan 12, 2005 1:02 am
Location: Hobart, Australia

Ports and other stuff

Post by eddit »

What ports do you open up on your router to get the client to connect?

eddit
"beauty is skin deep
but samples with keratin
are just plain ugly"
mkruer
Site Administrator
Site Administrator
Posts: 1089
Joined: Thu Jan 02, 2003 10:07 am
Contact:

Post by mkruer »

I believe its is port 6777, set it to UPD
I know you believe you understand what you think I said.
But I am not sure you realize that what you heard is not what I meant.

Wing Commander Universe Forum | Wiki
Wing Commander: The Wasteland Incident
ace123
Lead Network Developer
Lead Network Developer
Posts: 2560
Joined: Sun Jan 12, 2003 9:13 am
Location: Palo Alto CA
Contact:

Post by ace123 »

If your router has a "Port Triggering" option, set it to trigger port UDP:6771 when it receives an outgoing port TCP:6777 request.

6771 is set as the "udp_listen_port" in vegastrike.config, but that can be changed, since the client tells the server what port number it wants to use.

Otherwise, you just need it to forward port 6771 on UDP to your computer
www2
Venturer
Venturer
Posts: 537
Joined: Sat May 14, 2005 10:51 am
Location: milkyway->the sol system->earth->Europe->The Nederland->Soud Holland->Leiden
Contact:

Post by www2 »

ace123 wrote:If your router has a "Port Triggering" option, set it to trigger port UDP:6771 when it receives an outgoing port TCP:6777 request.

6771 is set as the "udp_listen_port" in vegastrike.config, but that can be changed, since the client tells the server what port number it wants to use.

Otherwise, you just need it to forward port 6771 on UDP to your computer
Thx ace123 for the info
All Your Base Are Belong To Us
Rabiator
Merchant
Merchant
Posts: 58
Joined: Thu Aug 21, 2003 8:47 pm

Post by Rabiator »

klauss wrote:Just an idea, for prioritization:

Compute a "perception index", based on data change (I'm assuming the client will eventually extrapolate using a constant acceleration model).

Code: Select all

PerceptionIndex = 
    (Wa * DeltaAccel + Wv * DeltaV + Wp * DeltaP)/(Wdm * Distance) 
    + Wf * numShotsFired / (Wdf * Distance) 
    + Wt * (isTarget?1:0) / (Wdt * Distance)
Where
Wa = Acceleration Weight
Wv = Velocity Weight
Wp = Position Weight
Wdm = Distance for movement weight
Wdf = Distance for shots weight
Wdt = Distance for targetting weight

But, most importantly,
DeltaAccel is difference in last reported acceleration value
DeltaV is difference in predicted velocity (based on constant acceleration extrapolation from last reported acceleration)
DeltaP is difference in predicted position (based on same model)
Looks interesting, but I might make one little change so VERY near objects don't get the sort of uber priority that shuts everything else out.

Code: Select all

Dist = (Distance + addDist)
PerceptionIndex = 
    (Wa * DeltaAccel + Wv * DeltaV + Wp * DeltaP)/(Wdm * Dist) 
    + Wf * numShotsFired / (Wdf * Dist) 
    + Wt * (isTarget?1:0) / (Wdt * Dist)
where addDist makes sure that the perception index for a for a very small Distance does not assume crazily high values. Of course, this may or may not be necessary depending on the rest of the code. Anyway, introducing addDist should not hurt, as it can always be set to zero.
mkruer
Site Administrator
Site Administrator
Posts: 1089
Joined: Thu Jan 02, 2003 10:07 am
Contact:

Post by mkruer »

I think we need to classify all objects into two camps. Ones that can change vectors and velocity (ships, missiles, etc…) and those that don’t (lasers, bullets, etc…) Ships and missiles need to be continually updated, but by definition the others do not. You can calculate exactly were those objects will be at any point in time. The only thing that needs to be sent is when the bullet/object was created and if it was removed prematurely, such as striking another object. Other then that all those object can be calculated on the client side only, and never have to send any data on them. This would be good because the number of objects that require updated coordinate would be drastically reduced.
I know you believe you understand what you think I said.
But I am not sure you realize that what you heard is not what I meant.

Wing Commander Universe Forum | Wiki
Wing Commander: The Wasteland Incident
eddit
Merchant
Merchant
Posts: 61
Joined: Wed Jan 12, 2005 1:02 am
Location: Hobart, Australia

Post by eddit »

ace123 wrote:Otherwise, you just need it to forward port 6771 on UDP to your computer
I don't have port trigering, So 6771 to foward UDP and 6777 to foward TCP?

eddit
"beauty is skin deep
but samples with keratin
are just plain ugly"
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Post by klauss »

mkruer wrote:I think we need to classify all objects into two camps. Ones that can change vectors and velocity (ships, missiles, etc…) and those that don’t (lasers, bullets, etc…) Ships and missiles need to be continually updated, but by definition the others do not. You can calculate exactly were those objects will be at any point in time. The only thing that needs to be sent is when the bullet/object was created and if it was removed prematurely, such as striking another object. Other then that all those object can be calculated on the client side only, and never have to send any data on them. This would be good because the number of objects that require updated coordinate would be drastically reduced.
True. I think that's done already: bolts are a special case, and don't get updated past create/destroy. I think. Because I've only seen position updates for units, not bolts.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
ace123
Lead Network Developer
Lead Network Developer
Posts: 2560
Joined: Sun Jan 12, 2003 9:13 am
Location: Palo Alto CA
Contact:

Post by ace123 »

eddit wrote:I don't have port trigering, So 6771 to foward UDP and 6777 to foward TCP?
You only need UDP port 6771, but TCP 6777 doesn't hurt.
Post Reply