Server Design Overview / Intro
I've been digging around in the code for many hours now, even fixed a problem or two.
However, I still don't really understand how this thing is structured really well, nor how data gets from zone to zone, etc.
Near as I can figure, the Zone eats opcodes, and if needed it sends them to the world server, and if the world server thinks that needs to go someplace, it sends it to another zone etc.
(For example, if I click disband, the current zone I'm in has a group object with me as a member, and a pointer to me, and null pointers to all the rest of my group, and their names... Once I click disband, it would need to tell the other zone I quit. So it seems to disband me, then send that to the world server, then that sends the disband to all zones. Then all zones process that opcode, calling the correct function... So everyone sees I've left the group, then they all craft some packets, sending that to the members still in the group, letting them know to do their thang.)
I'm not 100% sure I've got that right, but it seems that is how it works basically. Since there are different zone processes, they seem to pass data back and forth using packets between the zone, and the world.
Also for zoning, it seems similar. Except that you "zone" by basically saving your toon in the database. Then the zone tells world you want to go someplace and then the other zone gets the command to load you up out of the database... or some such thing. And you move from zone to zone.
Anyway, after that long side track... Is there a flowchart, or basic block diagram that explains any of this stuff, to help wanna be helpers understand how this is put together. It would sure save me a TON of time reading the code, not that this is bad... Since I'm just basically teaching myself as I go.
--Random Gamer
|