The server doesn't need to use irrlicht..
You could thread the server to handle a certain number of zones or clients per thread.
You would only want to send the data to the client at certain points, and inbetween you let the clients do some of the calculations. Example:
--Player 1 starts to run.
Send player 1 position + orientation + action to player 2
Send player 1 position + orientation + action to player 3
Send player 2 position + orientation + action to player 1
Send player 2 position + orientation + action to player 3
Send player 3 position + orientation + action to player 1
Send player 3 position + orientation + action to player 2
[begin block]
client1 predicts movement for player 2 + player 3
client2 predicts movement for player 1 + player 3
client3 predicts movement for player 1 + player 2
[repeat block a bunch of times]
Send player 1 position + orientation + action to player 2
Send player 1 position + orientation + action to player 3
Send player 2 position + orientation + action to player 1
Send player 2 position + orientation + action to player 3
Send player 3 position + orientation + action to player 1
Send player 3 position + orientation + action to player 2
[begin block]
client1 predicts movement for player 2 + player 3
client2 predicts movement for player 1 + player 3
client3 predicts movement for player 1 + player 2
[repeat block a bunch of times]
--Player 2 jumps
Send player 2 position + orientation + action to player 1
Send player 2 position + orientation + action to player 3
[begin block]
client1 predicts movement for player 2 + player 3
client2 predicts movement for player 1 + player 3
client3 predicts movement for player 1 + player 2
[repeat block a bunch of times]
That's just a small example.. But you get the idea.. I hope..
but don't trust the clients calculations too much. People WILL try to hack/break/cheat your game.. The clients are the sheep, and your server is the shepherd, the clients know where they're going, the server makes sure they are going there..
This means the server doesnt have to send the data to every client continously 100 times every second..
About Writing to harddrive, you MUST write as much of the data as soon as possible. If god forbid, you have a crash, you can't let players lose progress and items. Worry less about writing data, and more about READING.. You need to keep everything a client can request ready to push out as soon as the request comes.. If another player comes running, the server need to know name, appearance, stats etc. Use a server with ALOT of ram, you need all connected player's data open...
you could precalculate alot of the memory requirements. What is the size of each instance of the player/client class? multiply by number of players on each server.. etc.
Good luck.