I'm working on a server side game engine for mmo games, and have been thinking through what physics features would be most wanted. The engine is open source but not quite to a first release, this is one of the last pieces to get in place. I'd appreciate any feedback!
Here is the list of features I have so far, mostly all implemented.
- Fast 3d spatial partitioning, for efficient 'players around me' queries.
This sacrifices some accuracy for performance. It guarantees you will get every object in range, but you might get a few just outside of range also. I use 2d grids within grids, and then do some additional filtering on the third axis which is not 100% accurate, but it's fast.
- 3d location tracking for all movable objects.
Nothing to special here, just the ability to do basic queries on anything in the game world to get distances between objects,etc..
- Collision detection & general physics
This is one I'm still unsure of how far to go on. Right now my thought is to have physics for immovable objects. Ensure players can't walk through walls, things like that. The approach I'm playing with is to use A* pathfinding on the server and verify that against the client. If they get into a position that the server finds impossible, they are probably cheating. But right now I just have 2d pathfinding, still playing around with the best solution for 3d.
The physics is just to prevent cheating, not replace any physics on the client.
Are there any other must have physics related features that you would need if making an mmo?