The camera is rotated with the aid of the mouselock plugin- basically, the x/y speed of the mouse returned with the plugin gets added to the angle of the camera for the corresponding axis. Then the camera is moved backwards along the direction of the camera from the position of the player. This results in having the camera swing around the player. I also raytrace and only move back until it hits a wall, so it doesn't go behind.
As for the enemy sprites- they need to be q3d models; not q3d sprites. This is because the models can be rotated in whatever angle, whereas the sprites can only face the camera. This is so the enemies appear to keep their feet connected to the ground as you point the camera downwards.
Basically, you make them face the camera and then set two of the axis to 0. I can't remember which axis', but basically you just want to end up rotating around one of them. If you need to flip, or mirror them, it has to have double sided rendering and you add 180 degrees to the axis.
That's the general gist of it I think, if I remember correctly.
As for rendering different directions for the enemies, that requires checking the angle of the camera in relation to the angle the enemy is facing, and changing their animation based on the relation of those angles.
As for the tiles/environment, I used my own Crocotile3d tool to create the obj file and load that into q3d. The crocotile3d tool is available at crocotile3d.com