Original post: http://forums.station.sony.com/eq2/post ... c_id=40321
A question always occurred to me: "What really happens when you transfer from one area to another in EverQuest II?" (in not so many words, of course)
Well, the answer isn't simple. It can, however, be listed as a sort of timeline:
Note: this isn't a full list -- just the long load time items. More will come as I get the info for it.
Connecting to zone server
Description: Each zone is on its own port on one of the zone servers. There are a couple dozen zone servers for each world (I can't give out the exact number, but it's a lot more than you'd think) and each zone connection never connects you back to the same server twice. This step connects the EverQuest II client to the new zone server's IP and port.
Possible issues: If the game hangs at this step while loading, then it's likely you've lost connectivity to the Internet in some way. This may be caused by a firewall, router, modem, or network adapter failing in some way. Usual network troubleshooting should be taken to resolve the issue.
Logging into zone server
Description: After the connection takes place and the Windows Sockets Layer hands off the connection data to the EverQuest II client, the client exchanges secure session data between itself and the zone server. Once the session is authenticated, queries about the zone and character can be completed.
Possible issues: It's unlikely that any issues can occur here, other than standard networking issues (as listed above), however, there is a chance that a large packet sent and received during this phase can cause certain routers and firewalls to spasm and block the data from passing through.
Receiving zone info
Description: Once the session is authenticated, data about what the zone is, who is in it, what items are in the zone, what the weather and time are, where the characters (including the player) are, and so on.
Possible issues: The standard networking issues can arise here, along with a more likely chance that potentially large packets being sent and received during this phase causing certain routers and firewalls to spasm and block the data from passing through properly.
Unloading current zone
Description: The previous zone unloads from memory and file handles are unlocked and destroyed (closed). The client saves some data to the ini files it maintains, refreshing them with the current configuration data.
Possible issues: This is really the first time that the client starts writing data during this sequence. Antivirus applications that have their "autoprotect" feature enabled will notice file access and attempt to scan the files for potential threats. In some cases, autoprotecting antivirus utilities will lock access to the files while it performs its scans, preventing the game from actually writing data or locking file access indefinitely, which can cause the game to freeze or stall for very long periods of time. File unloads can also cause massive "swap" sessions on systems with limited memory and slow harddrives. This has a small chance to cause older OSes to start "virtual memory fights" with itself, writing to memory that doesn't actually exist on the RAM or the harddrive and effectively corrupting anything that is in memory, including the OS's kernel.
Creating zone
Description: The memory space is opened up for containing the zone geometries, lighting, textures, shading, and animations.
Possible issues: Virtual memory may become "excited" by huge allocations of memory at one time. The harddrive may be accessed significantly at this point, but usually, there's not much that can happen here that may be problematic.
Loading zone resources
Description: This step loads massive chunks of data into memory. Hundreds of megabytes of geometry, animations, textures, voice-overs, etc. are piled into linked lists in the memory space allocated previously for fast access.
Possible issues: Available system resources may drop significantly on low-memory setups and data may be switched over to virtual memory (copied to the harddrive) for access at a later moment in time. Autoprotecting antivirus software may cause fights over files as they lock and load the data that the game is attempting to access, similar to the above step. Some improperly-programmed antivirus software may even attempt to scan the gigantic voicepack files entirely before allowing standard access to resume, thus stalling the loading process indefinitely.
Waiting for entities
Description: This is where the client asks the zone server for specific data about what items, characters, guilds, and other special information is available in the zone. Recipe data is loaded along with knowledge book and other data, just to make sure the client is properly informed of anything that may have happened during the course of the transfer. Cachable data, such as the spell book and recipe book is loaded into the "Cache" folders in the EverQuest2 folder, as well.
Possible issues: The output of large amounts of file data to the cache folders will trigger additional scanning from antivirus software, again potentially causing stalls for indefinite periods of time, and to a much lesser degree running out of harddrive space. Slow Internet connections will take very long periods of time to download the required data, especially if the characters are high level and have lots of data in their recipe books, knowledge books, and quest journals. Potential for networking issues is also very high here, especially with potentially large packets from the Guild and Recipe book downloads likely causing issues with firewalls and routers.
Loading entity resources
Description: The remaining texture, model, animation, and script data is loaded into memory. This can be quite a bit more data than the zone data itself. Zone, Animation, PC, and NPC scripts are also loaded into the just-in-time (JIT) compilers and converted into immediately-loadable program code for fast execution.
Possible issues: In some instances, the entity resources will vastly outweigh the zone data. Autoprotecting antivirus software may cause significant issues while the game client attempts to load this large amount of data. Older OSes may even run out of file descriptors (handles) or virtual memory while attempting to complete this section. The JIT code objects may become corrupted or incorrectly built, causing system freezes here.
Adding character to zone
Description: The character is loaded completely into the zone and the zone server is notified that loading is complete. "Loading Invincibility" is removed, spell effects are enabled, and various timers resume.
Possible issues: Network issues may prevent the request to release control of the character to the player, stalling indefinitely. Depending on how long this step takes to complete, the character may be killed before the player actually sees the attacker(s).
Loading UI resources
Description: The User Interface files and maps are loaded into memory and pieced together into coherent blocks and windows.
Possible issues: Corrupted UI data or configurations may prevent this step from finishing properly. Autoprotecting antivirus software may also prevent the client from actually reading the UI files and may cause stalling for indefinite periods of time.