By Brian Boyko
Back in November of 2006, (which seems like such a long time ago,) Network Performance Daily published a column by Carol Schiraldi about “why enterprise developers use Java and game programmers use C++.”
We published this for a number of reasons – but the main one was that typically, enterprise developers are programming for function first, reliability, second, and performance over the network, if it’s even considered at all, is a tertiary thought.
What this means is that applications, developed originally for the LAN environment, often take up valuable network resources unnecessarily when placed into a WAN environment.
[Full disclosure: NetQoS sells network performance management software which diagnoses problems like "chatty apps," and we want you to buy them. Anyway…]
But one area where this isn’t a significant problem is in game development, which was the thesis of the original column. Game developers, who realize their games have to perform well over the Internet, typically build with performance in mind first.
This was confirmed when we had a chance to talk to Timothee Besset, a game developer at ID Software, developers of the famous Wolfenstein, Doom, and Quake series of games. Here’s what he said about this issue:
Most of the network related programming in games has to do with providing a good interactive experience when playing over the internet.
This matter is very different from serving web pages. The primary concern there is to handle connection latency, latency fluctuations, packet loss and bandwidth limitations, and pretty much hide all of that from the player’s experience.
There is a smaller part of our code that is more like distributed computing and involves passing messages and data around, that’s what we call the “master servers”. Those are used for client authentication and to provide lists of servers to play on. In recent years, we’ve been using Python to implement those. Fast deployment, minimum overhead and some great libraries to implement network functionality (we use Twisted). The client side part is still all in C++ though.
I never quite liked Java. They [Sun] devised a syntax that’s very much like C++ – I suppose for easy transition – and you still have to compile your stuff into bytecode. Really, at that point I’d rather use C++. Not to mention that Java on Linux has been a mess for many years. There are several different Java distributions for Linux, none of them provided by default on a new distribution – probably because of the licensing issues.
I’m often surprised by Java’s longevity. It keeps coming back; never quite dead yet. If it had been for people like me, we’d have buried it years ago.
For those who want more information on this topic, NetQoS has a whitepaper on putting performance first when making IT decisions.
NetQoS co-sponsored a survey and study by EMA (Enterprise Management Associates) in the Fall of 2006 regarding IT issues and priorities in application management over the WAN. We’ll have more on the full study in the near future, but one of the things we found interesting was that 64% of the survey respondents claimed that their IT organizations made organizational changes deliberately designed to increase collaboration between the network management teams and the application management teams – and that this pattern will tend to accelerate over the next five years.
Brian Boyko is editor of Network Performance Daily, and New Media Communications Specialist at NetQoS.
Technorati Tags: application+performance gaming IT network+performance game+development