NOTE: The following is not meant to be a technical primer with precise verbiage and exact information, it is meant to be a generalized, easy to humanly understand, explanation of how the game works from a technical aspect
There are many components to the game:
- Servers
- World Instance Server(s)
- Matchmaking Server(s)
- The network in-between (the Internet)
- Client Machine
- Game client (application, made of multiple modules)
- Humans/inputs
Servers
- If a single server, that’s a single physical computer that is running multiple ‘virtual machines’ that all take a ‘piece of the pie’ when it comes to CPU (processing power), RAM (memory), hard drive (storage space), etc. and perform independent actions all on the same physical hardware. If done properly, this is great and provides good redundancy, scaling, etc. But if done poorly (how WG is doing it), it can cause mayhem as the hardware is incapable of supporting the demands being placed upon it.
- Ultimately, running on anything other than cloud services (Software-as-a-Service/SaaS, where you don’t run on servers anymore but utilize services that run on top of them) in today’s day and age is ridiculous
Network/Internet
- There are SO many components here, including:
- Your wired/wireless network adapter (physical connections are better, as there are delays with wireless)
- Your home network router (cable modem, DSL router, etc.)
- That router connects to a fiber (light over glass), coaxial cable (electrons over brass), or phone lines bundled together (DSL) – the last two of which are typically shared across neighborhood users which introduces instability and inconsistency in service levels
- This all rolls up into a local neighborhood substation of sorts, that combines all those signals and routes them to the next hop, which is an Internet provider backbone facility
- Which then routes through similar routers, switches, WAN converters, fiber runs, etc. across multiple hops, going across the country to make the physical connection to where the server is located
- Which process is then reversed and routed through that facility from routers to switches to the physical adapter of the server (or even ‘worse’, virtual network adapters that share the same physical connection) so that it can receive and process the information
- And finally, the entire process is then fully reversed to send information (packets) from the server back to your game client to update what you see occurring in the game
- All of the above is why the ‘milliseconds of ping’ in the game can fluctuate so wildly from low to high numbers, there’s a lot of factors that go into play to determine that number. Packet loss can be introduced when any single piece of that chain (sometimes up to 15 ‘hops’) is so overloaded with all the traffic it’s handling (WG or otherwise) that the memory buffers are full, and not all packets are captured and processed. When that happens, that link in the chain is ‘dropping’ the packet (could happen either way, to or from the server) and it never makes it to the intended destination.
Client Machine
- Input devices – keyboard, mouse, etc.
- There is, however small, some lag that gets introduced by wireless / Bluetooth devices
- CPU – processing power or the ‘brains’ of the computer. Has to process everything happening in the computer (all inputs, outputs (monitor), networking, etc.
- Insufficient cooling, and/or not keeping the dust out of the heatsink(s)/fan(s), can lead to suboptimal performance of the CPU
- Motherboard – speed of the south and north bridges; these are internal buses (runs of gold tracing) that allow the computer to transfer all the information around internally between computer components
- World object retrieval – Solid State Drive (SSD) vs spinning disk (HDD); retrieving bush models, rocks, hitboxes, etc. from a spinning disk hard drive [spinning metal magnetic platters with read heads] will take up to 100 times longer than doing so from SSDs instead [cell technology accessed more ‘in space’ like a hologram, though not a hologram]. The average seek time of a spinning disk is 4-6 milliseconds, whereas the average seek time of a SSD is 25-100 microseconds
- Output to display – speed and quality driven by GPU (graphics processing unit) capability, slow refresh rates and subpar monitors can cause screen tear, slow refresh, flashing, blinking, etc. and less capable GPUs cannot drive the FPS (frames per second) at a high enough rate, making the game appear more ‘sluggish’ when compared to real life around you. Heat is the number one KILLER of GPU performance, ensure you are keeping the fans and heatsinks of the GPU blown out of dust as often or more often than you do the entire system as a whole, literally monthly
Game Modules
Each is a miniature application that is a part of the overall game client when it loads into computer memory. These control what happens with the game, how the game works, and what is displayed on the screen (and how).
- Game manager (overall operation of the game, launched when the game is launched)
- Network (manages network sessions / communications between the client and servers)
- Memory manager (memory management during game execution)
- Input (receive and interpret user input and provide interpreted commands to other modules)
- UI (manage and control the user interface, including display of video output, interpreting input via input module, and providing audio output)
General Game Flow
- Client inputs desired actions through keyboard/mouse (joystick/gamepad/etc.)
- These actions are processed by client computer
- This information is turned into network packets and sent over Internet to server (along with everyone else’s information packets in your match from their computers to the same server)
- This information is all taken in the order received, processed on the server, and compared to all other objects/actions by users of that world instance at that moment to determine ‘current game state’
- Updates are then sent back from the server to all the client instances of what it considers the ‘current game state’ to be, this version is supreme and overrules all client versions of the same information
- This information is received, processed by the client machine, and sent to visual output on the monitor
Humans add another variable to the mix
- We all go through the OODA loop constantly when playing (observe, orient, decide, act)
- Knowledge of the game mechanics, physics, etc. and ability to put that together with what you’re seeing displayed by your game client and what you’re hearing from the speakers – and turn all that into the next action, then the next, then the next… result in the fact that the game is not playing itself
- Human reaction speed alters this as well. A great demonstration you can use to test your reaction speed is: https://humanbenchmark.com/tests/reactiontime
- Factors that can negatively affect reaction speed include: drugs, alcohol, being tired, being mad, not being focused (thinking about other things)
- Factors that can positively affect reaction speed include: age (youth), quick twitch/reflex, caffeine/alertness, ability to multi-task, decisiveness, ability to cycle OODA loop repetitively and quickly
Conclusion
- Obviously, the game would look weird/clunky if nothing was displayed on each client machine until the server sent the collected information (updates) back to the client and you had a .3 second (or worse) delay to the server – everything would be herkie jerky and stuttering. So, the game client is allowed to update your visual display independently and appear as if you’re driving around the map doing whatever, but in reality if the received output from the server (tracked in server object position database centrally on the server-side) says that’s not where you actually are – you’ll ‘snap to’, or ‘rubber band’ to the location the server says you’re actually at.
- The same happens for when you fire and ‘hit’ a target but get no registration of such (no pen msg, miss the target, ghost shot, etc.) that’s because the server has decided that after processing all the available information of what you thought happened plus everything from all the other players, it decides that’s not what actually happened so it sends an update to your client to visually update what is displayed. This causes missed shots (objects in different places), ghost shells (the packet showing you fired doesn’t make it to the server in time so gets dropped), etc.
- As a matter of note, you can practice what I call ping gambling, so go ahead and take that shot at the last exposed position of the tank that just went behind the building, the server might call it a hit
The match is ACTUALLY taking place FULLY on the WG server, not within your game client. The players and the systems mentioned above are all involved and introduce delay to that match, and the best situation is determined by the server with the information presented, and that determines the outcome. The better your computer, the lower your ping to the server, the better your game experience will be.
This training material was derived from many and various sources including WG wikis, forum posts, various materials drawn together by community contributors (13Disciple and Guido1212, for instance), WG training videos, and other materials such as Overlord_Prime’s Google Doc (https://docs.google.com/document/d/1au-7iJuzjSBsjhB6pLiAzMZNPxOOdrx_AFEGa6TU89Q) and the World of Tanks Game Manual (https://worldoftanks.com/dcont/fb/wot_guide/world_of_tanks_game_manual_en_com_web_8_8.pdf). As such, I am not the copyright holder of the information contained herein, but I AM the copyright holder for the information in the format in which it exists as presented on mtltemplar.com, so I exercise the right to demand that reuse of the content as it appears on my site requires my explicit permission.