And now for something completely different...
So far I've mostly written about issues that come up in my day-to-day development life, and not very often at that. Starting with my next post, most of what I write about will be related to my research efforts, and I should be posting more frequently. So what are my research interests?
So glad you asked!
I got into computers almost 25 years ago out of a love for gaming, especially simulation games. Playing them, sure, but also wanting to program them. Later my interests expanded to include all of computer science, and especially two frontier areas, virtual environments (think cyberpunk) and AI. I've figured out a way to combine my interest in at least two of these, as virtual environments are becoming commonplace in massively multiplayer games.
Having a planet-scale detailed virtual environment that everyone can use (and play games on) has been pure fantasy for quite a while. Among other challenges, the hardware just hasn't been there to handle the rendering, communications, and storage required for such an endeavor. And even if you had such hardware, communications at the rates required to support such environments was prohibatively expensive
I don't think hardware and connectivity are issues anymore. Even the previous generation of games and CAD packages underscore the ability of a new home machine to render synthetic 3D scenes at several times the resolution of home televison, more than high-def enough to fuel immersion. As for communication, typical home broadband is more than two orders of magnitude faster than modems, and again more than fast enough to show the data for complex interactions with many people, as World of Warcraft proves.
Still, there are challenges. World of Warcraft has more than 7 million unique subscribers, with hundreds of thousands online at any given time. But, these subscribers don't all get to play in the same environment at the same time. The world servers are carefully created to keep too many people from interacting at once. Simply put, the software design can't cope with too many players in any one part of the world. What's more, most players are limited to only ever interacting with a small fraction of the total player base. Consistency requirements force Blizzard to implement World of Warcraft as a server-based model, limiting the number of players who can be in a given copy of the world to tens of thousands. It's an impressive achievement, but a long ways away from a planet-scale virtual environment.
How do we fix this? Software, of course. But nobody's quite sure what that software should look like.
For my part I think the answer lies in peer-to-peer infrastructure. But, applying P2P to this domain is fraught with complications. The two most significant are consistency and fairness. How do you make sure everyone's view of the world is consistent, or at least reconcileable? How do you make sure that people aren't gaining advantage by manipulating the virtual world's rules to benefit themselves?
It's a fine question. I'll tell you my best guess as reserach moves forward :)