I've had a brief look around EQ2 world and it's loop timers etc. Something that surprised me was that it seems the EQ2 client was solely responsible for collision detection (or I missed the server code). Is that true? It obviously works to the advantage of an emulation project
As far as I understand the code so far its
ConfigInit()
DBStateLoad()
OpenPortListener (the "EQ Stream Factory")
StartConsoleCommandListener()
GameLoop
PopNewStreamsAndConnectOrDropClient()
ProcessWorld (all the good stuff in here, haven't read through everything, includes saving back any state that has changed I think)
ProcessClients()
ProcessLoginServer (not sure what this does)
CheckStreamAndConnectedServerTimeouts
EndGameLoop
Have I understood this correctly?
The fun bit will be understanding the bits in world.Process(), but that is for another night