Technopolies

Started by rolz, October 21, 2004, 04:03:43 PM

Previous topic - Next topic

manumoi

DOH...
Egon you re right once again... However i think this problem is unlikely to happen on my own application (and it has not occured for the moment), But there is a chance... I will try to find something to avoid such problem (maybe a little collision detection on my update method on the serverSide. If a collision is detected, this will result in the rebound - not sure of the english word - of players, in the next update)
Maybe also asking an update from the server just before and just after movements calculations on the client side will also reduce the opportunity for such problem to occur given the fact that the time slot will be very short...
anyway... more work to do :S

Uija

I still don't believe games like everquest or world of warcraft do all the collision and movement stuff on the server. maybe the server recalculates the movements, after the clients told him what they did, and sends correcting packets to the client, when something is going wrong.
When you cast in WoW you feel that you need the okay from the server, as you feel the lag when casting. when you see that you have a latenz from 1 second, yor will have to way 1 second from hitting the castbutton to seeing the castbar moves. same with attacking and stuff. But walking is not affected by lag. sometimes you have some lagspiked that feel like you had no networktraffic for 10 seconds as the fight "stops" and after the 10 seconds everything goes extremly fast (you get the damagemessages from the lagtime) but your movement is not affected. you can move while the lag and you get no correction at the lag, as long as your position can be reconstructed by the server.
When you use other travelingmethods than running (there are "birds" you can fly given routes with) and you have lag, lets say the moment when you jump on the bird, than you stand still until the lag is over and jump to the correct place as soon as the networkcommunication comes back.
So the movement is handled on the client and the server checks if it is correct. I think you have way smoother gameplay on this way, than when you need a okay for every move you do.
When I remember correctly your games control is done with the mouse. so you click on a place on the ground and your character moves there, right? So this would be something different, because the player has not 100% direct control over the movement of the char.
Well, was a long day and I may talk some weird stuff, I hope everyone understood what I said ;)

rolz

You forgot to mention that WOW doesnt check collisions with moving objects. In WOW, players could go right through players and it looks like that collisions with static objects are checked entirely on client. And it looks like players just send server notifications about position changes.
Regards,
Andrei

Uija

hehe, yeah thats true, but EQ does ;)
I am thinking much about this stuff, as my maingoal is to write a good working server that is able to handle more than 1 server per zone and you can group more than 10 players without creating zonewide lag.
and yeah, I like to set goals high ;)

manumoi

i did a small test today concerning collision detection. I was afraid that if two objects could move to the same position, they could block each other (some kind of "collision deadlock") and when you would like to move them in another position, they would detect a collision and refuse to move...
I have access to many computers. so I logged 2 clients side by side and make the two avatars run on the others.  I did this test many times and they never blocked... So i think i will keep my solution unchanged unless i see a "deadlock"... Maybe if the lag is bigger, it could happen.

ciao

manu

PS : here is a small image of what my project looks like now


manumoi

In fact this is the technopolis forum.... so i will stop sending screenshots not related to it
sorry...  :oops:

Manu

EgonOlsen

Why don't you open your own thread for your project? Looks cool btw.
Are you using jPCT's ellipsoid collision detection for this? If so, a deadlock should never happen...the ellipsoid collision detection is a collision avoidance algorithm, so it doesn't really care if used on objects which are already intersecting. There is some code (2 lines to be exact) to try to push such entities out of the intersection but due to the nature of the algorithm, this may or may not work. But there should be no real deadlock. The entities should be able to move out of this situation on their own.

manumoi

yes it s the algorithm I m using...  
And i suppose i will open my own thread one day but, cause i m doing this stuff for my students researches (it s not a game whereas it looks like it), I can t explain all the objectives of my application. That s why I haven t opened a thread for the moment... And I have to found a name for my project before :P But thanks for all your help anyway.

Manu

rolz

nice shot. you really have to open separate thread for this project
Regards,
Andrei

rolz

New version here


new features

- autoupdate .You dont need to download the full package every time, autoupdate checks and downloads changed packages.
Dont ask why I prefer homegrown solution to JWS, i won't tell anyway ;)

- camera controls. It is now possible to hold right mouse button and look around with mouse

- main menu. (F10) Added for people who need legal way to EXIT from application.

Regards,
Andrei

raft

Quote from: "EgonOlsen"Depending on how you are implementing the collision detection, this may cause trouble IMO. Imagine entity A on client a move towards entity B (standing still on a) and entity B on client b moves towards A (standing still on b). Locally, this is no problem. On a, you correct the movement of A to not run into B and on b, you correct B's movement to not run into A. a and b are then sending the result back to the server. But then, A and B may cover the same space.
Have a look:
another example that causes the same problem occurs when both A and B tries to move to the same empty point P

i did use this approach in karga. clients may also use collision detection for movement of other players, this solves the 'unwanted intersection problem' but client states may differ a bit. not a problem for a '3d chat' but may be considered a slight problem in a game. anyway since its unlikely to happen, i find it negligable even for a game

in fact my server doesnt now anything about the 3d world in clients. it only stores a few necessary information about users, like their location, direction and current node

if the user moves with keyboard, one have to calculate movement stuff for every frame (as opposed to movement with mouse, which employs path finding) and those calculations cannot be done in server in an internet application (due to network lags)

looking this way, it is obvious that clients must maintain their own states. maybe some correction stuff can be deployed depending on the application type. for instance, in 3d chat, it is important who a user looks at so correction may depend on this

anyway, as i said before i find this somewhat negligable and low priority stuff

r a f t
btw, sometimes forum engine doesnt notify about replies

EgonOlsen

Quote from: "raft"
btw, sometimes forum engine doesnt notify about replies
Works for me all the time...couldn't possibly be your spam filter or something?

raft

Quote from: "EgonOlsen"
Quote from: "raft"
btw, sometimes forum engine doesnt notify about replies
Works for me all the time...couldn't possibly be your spam filter or something?
no it isnt filtered as spam. maybe gmail is down for that moment and forum engine doesnt retry it  :?:

Remo

Technopolies is looking great man. I like the new stuff.

About the forum I always get the new replys thingy.

EgonOlsen

Quote from: "raft"maybe gmail is down for that moment and forum engine doesnt retry it  :?:
Maybe. It's on a shared server and i don't have access to the mailer's logs, so i don't really know.