by Eoin Bathurst (http://ebpk.wordpress.com/) I’ve been reading this blog for a while now and one of the recurring things I see in the comments is complaints about optimisation, lack of multi-core support and frame rate comparisons. I’ve asked Silentstalker to let me write a post explaining these three things. It is important to note that I am not a game developer but I am experienced with many kinds of systems and the theory behind game development. A lot of this post is conjecture drawn from the information released by WarGaming staff because the details of how their engine functions is a trade secret. Sitting comfortably? Let’s begin. The most important thing to remember about World of Tanks is that it is a Free2Play game. The developers make money from an optional subscription. This means that they will only ever have a percentage of their player base paying them money that can be used for development and maintaining servers and all the other overheads that businesses have. Consequently, they need the highest number of people playing their game as possible. Which means their game needs to support the largest number of computers it can. The way they have done this is very clever, they do all the physics processing on their servers instead of the client machine doing it. This allows your computer to focus on rendering the game graphically and transmitting your inputs back to the server. All the collisions calculations and the keeping track of object locations and states (damaged buildings, intact cars etc…) is done remotely. This fact is extremely important. It means that every client in a match needs to be synchronised with the server in a way that few games are. All multiplayer games require some level of synchronisation but generally this is just a relay of what controls and actions are being performed by other players. It is then reliant on your computer to process that information. What World of Tanks does is process all the collisions calculations, effects of actions and control interactions performed by the other players and pass back the results to your computer. This is far more efficient in terms of local processing but it is very reliant on a low latency connection (or ping). This is the time it takes for information to arrive from the server. Lag is what happens when that information, known as a packet, does not arrive in time and you miss the small time window your computer has to acknowledge that information as received and wait for the next packet. If you frequent the comments section of For the Record, you will probably have seen a large number of comments complaining that a player’s frame rate in World of Tanks on a particular computer is much lower than the player gets on a different game on the same machine. This is because your computer can finish the graphics rendering for each frame as fast as it can but it will still have to wait for the next packet of information to know what will be in the next frame. This has the benefit of meaning your computer physically does not know where things you can’t see are. This is why it is very difficult to hack the game. For instance if you wanted to know where an unspotted tank is, you would need to retrieve that from the server. The information literally isn’t on your computer until they become spotted. This also means your frame rate will drop when looking at other players. Other players being in your rendered area means your computer has to receive more information to know what will be rendered next. This is where a great computer will make a big difference because it will be able to render the frame very quickly once the packet is received. A slower computer might still be rendering a frame when the next packet is received and so it will have to skip a frame, causing a drop in frame rate. Zooming out increases the number of objects in your rendered area and means the server is sending even more information to your computer. This is often perceived as a small but noticeable ‘micro-lag’. The change in the field of view would have been made to minimize the effect of this (After all, Storm did refer to it as a bug fix). A large part of your frame rate is, therefore, directly dependant on your latency (or ping) and this is why multi-core support will not be the magic unicorn of improved performance that many players believe. It will not be a priority for the developers (and this has been confirmed many times) to implement multi-threading (running different sections of the game process on multiple cores) in their game engine when there are many small changes that can be done, in lots of other areas, that can improve efficiency. This is rarely visible to players directly because a lot of these efficiencies are savings on the server side engine rather than the client and they would not need a patch to do this. However, they are still reliant on your internet connection. The big upside to this is that for more basic computers – in particular machines with no dedicated graphics – the game is still very playable as the complex heavy lifting for the physics calculations are delivered wrapped in a neat bow. This is a good thing because physics calculations are nearly as complex as the graphical rendering itself and makes the game far more accessible to more people. Unfortunately, for those of you with God-Machines, the game will be limited as to how high the frame rate can be by the internet connection, no matter how much spare processing time your computer has between packets. This does not mean the game is poorly optimised, just that it works differently to the majority of games. The pace and style of the game does not really require the frame rates that a game like Battlefield requires anyway and little benefit would be had in terms of gameplay after around 30 FPS (frames per second). Havok works in a very different way. The Havok game engine is being integrated into the game by running it in a separate process alongside the actual game process. The Havok process is fully multi-core optimised and will use all available cores (not including the one the main game thread is running on) to perform calculations. It will be possible to disable Havok because all Havok does is translate the information received from the server into a very realistic interpretation of that information for the graphics render engine. This means Continue reading →

More...