Jump to content

Questions about Collision on server


Recommended Posts

1. Where does Warden exist? client or server? if server, can you show me some class about it?

http://getmangos.eu/community/topic/16244/warden-the-definitive-anticheat-system/

2. indoor/outdoor and area entry detection is for what?I have so few knowledge about it.

certain spells can only be cast outdoors

area entry contains extended information about a part of the map, see the structs defined in DBCStructure.h (most is only relevant client-side)

Link to comment
Share on other sites

Mounts spells can't be used indoors, and others I don't know off the top of my head

Heightmaps tell the server where the ground is. This is useful so that monsters can walk on the ground and aren't up flying around in the air.

All code under src/game/vmap/, including BIH and intersection, is used for collision and lookups in a 3d space

For a explanation of the collision system and heightmaps, read this thread. We can't really make it much simpler than that, it is very technical... you will just have to read the code and do some research in order to understand (google, wikipedia, etc)

Link to comment
Share on other sites

  • 41 years later...

to herhong

first, Thank you!

1. I know that Client sends movement packets to server, but i need to know whether the info is correct. I mean that It may be sent by plug-in.The server need to check?

2. When the player walk accross the fence, Does the server check whether it can cross?

3. there is a function named Map::GetAreaInfo, it is for what? whether it check the value of z?

If anyone have more information about collision on server, Tell me! Thank you.

Link to comment
Share on other sites

Generally you can't know if movement info is "correct" because the player is free to move within the physical simulation the client does. You neither have the necessary data precision nor the CPU power (for high populations at least) to double-check every single player movement against all cheating possibilities server side, that's one reason why Warden exists.

Of course some cheating can be caught, but from what i know, Blizzard does not do much server side either, they rely on Warden to detect memory editing, patched client binaries and data files.

Map::GetAreaInfo() obviously gets information about the area :P

Just look where it gets used, it's related to indoor/outdoor and area entry detection.

When to use intersectPoint()? You probably won't...it's a low-level function to find current WMO you're in, if any.

Link to comment
Share on other sites

Generally you can't know if movement info is "correct" because the player is free to move within the physical simulation the client does. You neither have the necessary data precision nor the CPU power (for high populations at least) to double-check every single player movement against all cheating possibilities server side, that's one reason why Warden exists.

Of course some cheating can be caught, but from what i know, Blizzard does not do much server side either, they rely on Warden to detect memory editing, patched client binaries and data files.

Map::GetAreaInfo() obviously gets information about the area :P

Just look where it gets used, it's related to indoor/outdoor and area entry detection.

When to use intersectPoint()? You probably won't...it's a low-level function to find current WMO you're in, if any.

1. Where does Warden exist? client or server? if server, can you show me some class about it?

2. indoor/outdoor and area entry detection is for what?I have so few knowledge about it.

Thank you for your help!

Link to comment
Share on other sites

thanks.

There is a question I asked and no one has answered.

When the player walk accross the fence, Does the server check whether it can cross?It needs intersectRay?

And I have a new question here.

There is a function named UpdateGroundPositionZ. It is for what? Check the players' z-position?

Now my biggest question is that

I know intersectRay and intersectPoint is used in GetHeight, GetAeraInfo, GetLocationInfo and maybe other place. Now I want to know where is the other place? I think GetAeraInfo and GetLocationInfo

is to check whether the player is indoor.If the player is indoor, then some spells like Mounts are not allowed to use. Am I wrong?

And if the player is standing on a box or a building, the function named GetHeight will do intersectRay but not calculate the height only by the heightmap in order to find the real height of the player. Am I wrong?

Heightmaps tell the server where the ground is. This is useful so that monsters can walk on the ground and aren't up flying around in the air.

I think Only the heighmaps are not enough. If the monsters are in a buliding, how to calculate their height?

Link to comment
Share on other sites

vmaps are not used to make sure players don't walk through objects - Lynx3d said as much earlier.

They are used to determine line of sight for spell casts.

vmaps also determine the height of the geometry when a player is on a box, building, etc. Look in GridMap.cpp, at TerrainInfo::GetHeight - both vmaps and heightmaps are used.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use