Page 1 of 1

EQ2 Architecture questions

Posted: Wed Oct 05, 2016 12:05 pm
by Snowmane
Hi Guys,

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 :)

Re: EQ2 Architecture questions

Posted: Wed Oct 05, 2016 3:55 pm
by Jabantiz
Yes the client does all collision and will adjust a normal spawn to be on the ground even if the y coord is off a bit. While this does make it easy to get everything to appear to be working right we will need to get the level geometry on the zone server eventually to prevent pathing through walls, as well as other stuff.

Your break down of the startup and loop looks correct. Login server handles the communication between the world server and the login server, as well as the DB patcher when the server starts up.

Re: EQ2 Architecture questions

Posted: Fri Oct 07, 2016 5:31 pm
by Gangrenous
I do notice pets not always follow the correct Y axis. This could be because I have some pets smaller, not sure if this would effect them finding the ground. I definitely notice them floating a bit about ground.