We've all seen the grandiose attempts at adding continuity to network gaming. Probably the best deal going right now is the SquadWar stuff for Descent:Freespace 2. There's also various systems that keep track of statistics for various first person shooters. Naturally, we're all familiar with UO (remember when that just used to be a band?) and Evercrack. But [I feel] all of these games fall short of the mark in one way or another.
The big point is that none of them really give you enough freedom. This is my beef with first person shooters as well, however. How well do you really think a cyclone fence is going to hold up to a grenade? Do you really think it's going to survive if you drop the sucker right next to one of the posts? It's going to end up a molten, twisted mess, at least in that segment.
Now, what I really want to see, but don't expect to encounter any time soon, is a game which includes the space fighting, atmospheric fighter combat, tanks, helicopters, mecha combat (ala mechwarrior), city management (perhaps even something as anal as SimCity 2k), and then there's also room for frivolities like The Sims in there, as well. The trick is to put together a really solid system for data exchange, and to have the entire thing use one physics engine. Then every part of the code must be modular, which increases bloat and memory requirements. I don't expect to be seeing anything like this for another five years to a decade, but I do expect it to come along eventually.
Picture this: You (Bob) are a fighter pilot who has paid for the latest version of Descent: Freespace (Perhaps, in Wing Commander tradition, you'll be playing number XVIII by then.) You belong to a squad comprised of friends from your neighborhood, or strangers from around the world. Jim, who lives down the street from you, is a big Alpha Centauri IX fan. Jim has mentioned this, and you know that ReallyBigSpiffyGameNetwork(tm) supports AC IX. So, you let him know, and you give him the password to join your league. Jim connects to the server, puts in the code, and joins up. You then delegate control of the planet to him, as you know he's an excellent player. Jim can now putz around and increase (or decrease) the effectiveness, technology output, ship production, and so on.
Meanwhile, Jim's wife Martha has been playing SimCity quite a bit, and sees Jim wasting his life away managing one or more of your planets, and in an effort to save their failing marriage, decides she wants to be a part of this, too. Voila, she's allowed into your clan and is given a city (Size one or something) to bring into adulthood. Lo and behold, she's an adept player and manages it into greatness, and it assists your whole empire. Maybe she's built a university and there's a golden age of technology or something, the details are outside the scope of this document.
The idea here is details, though; Maybe inside the SimCity context there's a few games of The Sims (Sorry Maxis, I'm just going to have to smear your trademarks all over this document) going on, maybe someone's playing SimAnt inside of that. I'm sure someday you'll be able to carry on SimParamecium, and there's no reason you couldn't integrate that, too. The basic idea is that everything has to be object-based, and you need an object hierarchy in which objects contain objects. An object can only be contained by a single object at a time; An object can contain multiple objects. Objects have various properties which are nudged one way or another by the game server. For example, a human character has various statistics, such as health, strength, speed, and so on. If you're playing a game in which they can get sick, their health will go down, and the game server will understand how to make that affect their other characteristics. However, you might then have someone else playing a medical simulation who causes it to go back up again.
The big issue here is that the game server has to understand vast amounts of data for all this manipulation to work properly. I'm not really sure I have a solution to that, other than using vast systems to handle it. At least once you get into larger scale stuff, like spaceships and buildings, you can handle all of that with physics simulation. For example, materials have various physical characteristics, tendencies to deform in predicable ways, to be able to soak up certain amounts of force, and so on. If you're going to get detailed, which I'd like to see, they'd have ways of soaking up different kinds of force, which would make them break in new and unusual ways.
So for example, it's all well and good to say that you have a sheet rock wall, and putting your foot through it makes a hole, but if you have a wall made of sheet rock and you put your foot through it, it should stress in some way that actually makes sense, not just have a big round hole. However, I don't think that you need to worry so much about that kind of damage; Saying it has a hole in it is sufficient. Where you have to worry about it is at the spaceship level, at which point you should actually deform the mesh of the object, and store a new mesh with the damage. If you're worried about disk space, store it on the client, and encrypt it so that the player cannot decrypt it and fix it. You don't even really have to do that if you just store a checksum on the server, along with a statistic that records the amount of damage done. If the checksum is changed without the proper interaction with the server, then you reject it, and blow big holes in it to the tune of the amount of damage it's taken. You can apply the damage to random areas, and there's always a chance that this will actually destroy the craft rather than merely crippling it.
The thing that really has to happen for this to work is that at the first person interactive level, you need a single solid physics engine which works well for basically every kind of game. It has to work for combat, driving, flying, and so on. The game needs to be able to handle things like having your automobile dropped into vaccum, or your fighter jet smacking into the water, or a pot of petunias dropped from a very great height. The idea is to have one unified physics engine that works with every game so that you can bring different objects into the same space. Why is this so important? Consider for a moment that you've got a large spacecraft which is unable to make planetfall. Since you're basing your games on real-world physics, it's impractical to land anything large on a planet. So you have a dropship which ferries people and/or objects from space to ground. At the same time, the planet you're landing on decides it wants to repel your dropship, and they scramble fighters. You are now going between an airless environment where something of an odd shape can handle well, and a fairly soupy atmosphere capable of sustaining life; Or maybe it's a poisonous, corrosive storm which buffets your unaerodynamic craft about like a ping-pong ball that's just been sucked into a shop-vac. Either way, you're going to need a good model to handle your interaction with fighter jets, dropships, catapult shot, or what have you.
At the game level, there's no reason anyone has to use the same rendering engine. In fact, I think it's very likely that while the physics engine is the same for all of the games (And it needs to be a set of libraries so you can drop in a replacement and interface to it in a standard way) it would be reasonable to also have every other game, at least from a different publisher, be entirely unique code. As long as you're interfacing to the server in the same way, and playing by the rules, it's all the same in any case. No one wants to use the same interface for playing FA-18 Hornet as Gran Turismo 2000 anyway, but it sure would add something to the experience if you could end up flying over the race track and taking out that damn Subaru that keeps beating your times.
I also want to speak briefly about sustained damage. I mentioned earlier the bit about grenades and cyclone fences in FPS games. I want to be able to blow up buildings, and not just parts of them which people have set up to explode ahead of time; I'm talking about taking out all the beams in the first floor of a building and having the second floor end up resting on the ground, torn open by the fall. Even if nothing else in this article is implemented within my lifetime, this alone needs to occur. I have some notions, actually for a FPS game (which I'll relate in a future article) in which the entire landscape is like this, and you can travel back and forth through old areas which are occasionally repaired, or devastated by other events, and stay that way. I'm tired of indesctructible buildings.
I do want to plead with all the people that read this not to do this wrong and screw it up for all of us, though. If someone does this wrong, and bollixes it all up, we're all going to have to live with people having a bad taste in their mouth about it for a long time, and no one will be able to have another go at it for a few years. Be realistic about the hardware and bandwidth requirements. Make sure you can get at least three major players onboard early. Don't charge too much for subscriptions, or find a way to get that money through royalties collected during the sale of games. You also need to be very careful about what it costs video game companies as well, however, or you won't get enough people on board. Please don't betamax this technology, or you'll both screw yourself (Ask Sony what that's like) and the gaming public.