But couldn''t they make a "teleport" hack?
Because if they send their location once, then their new location to the server, the server THINKS they''re there, regardless of if they had to manually walk there or not.
Handling movement in MMORPG's
I think what you really want is prediction, not client-side movement. The server must know at all times where you are if you want to be able to collide with other characters or monsters (and other things, such as traps), so the server must move all characters. The thing you could do to improve the movement is to simulate the movement on the character side, similar to how many FPS games predict your movement. There are a huge amount of articles about this subject, so I suggest you start googling around.
Disclamer: I don''t use any prediction in my game, so the characters will move around pretty "jerky" when you''re on a bad connection.
My Stuff : [ Whispers in Akarra (online rpg) || L33T WAR (multiplayer game) || The Asteroid Menace (another game) ]
Disclamer: I don''t use any prediction in my game, so the characters will move around pretty "jerky" when you''re on a bad connection.
My Stuff : [ Whispers in Akarra (online rpg) || L33T WAR (multiplayer game) || The Asteroid Menace (another game) ]
My Stuff : [ Whispers in Akarra (online rpg) || L33T WAR (multiplayer game) || The Asteroid Menace (another game) ]
what good would a teleportation hack do? Odds are there is a teleport spell in the game anywayd
"Luck is for people without skill."- Robert (I Want My Island)"Real men eat food that felt pain before it died."- Me
There are 1001 ways a player could abuse this, and it''s surprising that they are just being ignored. Brick wall to stop you passing? Move right through it. Not enough mana for teleport? No matter, just put me at the destination. Although you can use client prediction to make it look better, the true movement details have to be server side.
[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost | Asking Questions | Organising code files | My stuff ]
[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost | Asking Questions | Organising code files | My stuff ]
Well obviously the server has to know where you are. Its just how much information the client is actually sending to the server for movement data. THe idea in the original post is, you continually send "destination" points whenever the characters destination changes. This has nothing to do with how fast the character is moving, and it would not allow teleportation hacks or speed hacks. The server is still going to calculate the character on a path, so even if you have a hack that sends a destination point on the other side of the world, on the server, it still is going to walk the character along all the way there.
To keep everything up to date, the full positions would probably have to be sent to the clients maybe every ten ticks or so.
For an rpg with this kind of interface, a system of messages sending destinations instead of actual points seems to me to be the way to go.
To keep everything up to date, the full positions would probably have to be sent to the clients maybe every ten ticks or so.
For an rpg with this kind of interface, a system of messages sending destinations instead of actual points seems to me to be the way to go.
While it sounds like a neat and stable enough idea, there are some issues you havn''t considered.
But first: No offense Kylotan, but unhackability isn''t necessarrally something to persue. For a consumer MMORPG it needs to be dealth with, and heavily. But in a project, or a local game, or a 20-100 person private networked game, security isn''t nearly so big of an issue. It all depends on if you care if someone cheats. And sometimes the issue isn''t worth the effort.
Anyway, black mage, the problem I see is one of multiple error.
When you lose some data, that''s going to make re-constructing the path harder. If they change directions, you''re going to either have to trust your path is correct(leading to poetntial innaccuracy)or send their position and move them there (leading to a jerk). Now, when the two happen together, bad stuff happens. Let''s design a really bad scenario:
We''ve got two players, A at (0, 0), and B at (8, 8). B sends a command to move to (2,2). A recieves this command, and on his machine, B starts moving in a diagonal line towards (2,2). But when B is at (6,6) he decides to make a quick change in direction, heading towards (6,0). Unfortunately A''s internet connection bogs down for a second, so when he recieves this message, B is at (3,3), So, on A''s computer, he''s now moving at an angle away from him instead of purely vertical. Now Player B, decides to charge at player A, clicking on 0,0. A gets this message and proceeds to change his local B''s path. A realizes the attack, and throws a grenade in B''s path. Uhoh, B''s path is different on A''s machine than on B''s machine! Thus, B skirts the explosives on his machine and the server, and dies a horrible bloody death on A''s machine. Moments later, A living player B is now killing the hapless player A, who yells in frustration "What the hell! I killed him!"
And with that, welcome to the wonderful world of networking. There is no easy solution. You could send locations when you re-update their paths, but then suffer jerkeyness. You can try to predict where they''re going, but then you run the risk of predicting wrong. You can do some path interpolation, but lose accuracy as you''re trying to splice flawed guesses with new data of where they were a second ago.
Is reality a predetermined state, that we, as humans merely recieve a flawed reflection of? Is reality subject to the individual, and the world merely the sharing and interaction of perceptions? Or is it some mix, where the stronger willed of us influence the predetermined state more powerfully?
Client-Server, Peer to Peer, or Distributed Networking. It''s all up to you.
But first: No offense Kylotan, but unhackability isn''t necessarrally something to persue. For a consumer MMORPG it needs to be dealth with, and heavily. But in a project, or a local game, or a 20-100 person private networked game, security isn''t nearly so big of an issue. It all depends on if you care if someone cheats. And sometimes the issue isn''t worth the effort.
Anyway, black mage, the problem I see is one of multiple error.
When you lose some data, that''s going to make re-constructing the path harder. If they change directions, you''re going to either have to trust your path is correct(leading to poetntial innaccuracy)or send their position and move them there (leading to a jerk). Now, when the two happen together, bad stuff happens. Let''s design a really bad scenario:
We''ve got two players, A at (0, 0), and B at (8, 8). B sends a command to move to (2,2). A recieves this command, and on his machine, B starts moving in a diagonal line towards (2,2). But when B is at (6,6) he decides to make a quick change in direction, heading towards (6,0). Unfortunately A''s internet connection bogs down for a second, so when he recieves this message, B is at (3,3), So, on A''s computer, he''s now moving at an angle away from him instead of purely vertical. Now Player B, decides to charge at player A, clicking on 0,0. A gets this message and proceeds to change his local B''s path. A realizes the attack, and throws a grenade in B''s path. Uhoh, B''s path is different on A''s machine than on B''s machine! Thus, B skirts the explosives on his machine and the server, and dies a horrible bloody death on A''s machine. Moments later, A living player B is now killing the hapless player A, who yells in frustration "What the hell! I killed him!"
And with that, welcome to the wonderful world of networking. There is no easy solution. You could send locations when you re-update their paths, but then suffer jerkeyness. You can try to predict where they''re going, but then you run the risk of predicting wrong. You can do some path interpolation, but lose accuracy as you''re trying to splice flawed guesses with new data of where they were a second ago.
Is reality a predetermined state, that we, as humans merely recieve a flawed reflection of? Is reality subject to the individual, and the world merely the sharing and interaction of perceptions? Or is it some mix, where the stronger willed of us influence the predetermined state more powerfully?
Client-Server, Peer to Peer, or Distributed Networking. It''s all up to you.
Actually, to combat things like error, it would send 4 copies of the location, and then choose the most common matchup.
As for battles, well they would be handled server side to prevent hacks in there.
As for battles, well they would be handled server side to prevent hacks in there.
"Luck is for people without skill."- Robert (I Want My Island)"Real men eat food that felt pain before it died."- Me
If you want to not trust the client for anything, then you will ALWAYS have movement lag. Period.
Everquest trusts the client for movement and they had what, one movement hack? That got fixed within a month, IIRC.
The only solution is to only allow clients to connect if they are on a connection with < 120ms ping time. Not very practical, IMO. Worried about wall hacks? Simply put game logic in where if the player oppupies the same space as an object, they take SERIOUS damage, problem solved.
Everquest trusts the client for movement and they had what, one movement hack? That got fixed within a month, IIRC.
The only solution is to only allow clients to connect if they are on a connection with < 120ms ping time. Not very practical, IMO. Worried about wall hacks? Simply put game logic in where if the player oppupies the same space as an object, they take SERIOUS damage, problem solved.
But this does put trust in the client...
Anyways, so theres a movement hack? Big deal. If there was any barriers in my game, they would be around my giant castle. And anyone who passed through these barriers without my authorization would be killed by an invisible dragon (in other words they just burst into flames.)
Anyways, so theres a movement hack? Big deal. If there was any barriers in my game, they would be around my giant castle. And anyone who passed through these barriers without my authorization would be killed by an invisible dragon (in other words they just burst into flames.)
"Luck is for people without skill."- Robert (I Want My Island)"Real men eat food that felt pain before it died."- Me
4 copies of the position? Huh? Wuszzat? Ok, either I''m really confused or I''ve been up all night and sneaking some beer into my system.
If the system''s client server, then you''ve allready got things happening deterministically on the server, and all you''re doing is using the pathfinding method as a method of position interpolation. Thus the server knows what you''re doing, and is always right. So the problem there would just bet getting an accurate picture of the server''s state.
If it''s peer to peer, then you''ll need to have some form of negotiation.
So, theorize with me here.
Client gets a move message from the server or another player. What happens? Does it calculate the path and begin to move the player along it? Is the position placed with the new endpoint?
If the system''s client server, then you''ve allready got things happening deterministically on the server, and all you''re doing is using the pathfinding method as a method of position interpolation. Thus the server knows what you''re doing, and is always right. So the problem there would just bet getting an accurate picture of the server''s state.
If it''s peer to peer, then you''ll need to have some form of negotiation.
So, theorize with me here.
Client gets a move message from the server or another player. What happens? Does it calculate the path and begin to move the player along it? Is the position placed with the new endpoint?
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement