Two topics to think about, while bearing in mind that this is a minimal MMO. How much persistence is required and how much interaction ?
Persistent information is retained. Non-persistent information is lost. For example, many players expect their character(s) in MMO games to develop and grow over multiple play sessions. Players like to 'level up' and acquire special items for their 'toons' (perhaps armour or weapons in an RPG context). Some multiplayer games do not support this, for example the Age Of Empires (AoE) series start everyone off from the same newbie starting point every game. AoE is seen as a RTS (Real Time Strategy) rather than a MMO to most people, but because of the large number of potential opponents it played not unlike a purely instanced MMORPG. EXCEPT for the issue of persistence. I think it is reasonable to make a case that any MMO must support persistence of player abilities development (other than a scoreboard) so that more developed players are able to perform more actions or better actions in the world.
Some MMORPG games, Lotro and Vanguard for example, allow the creation or customisation of player and guild housing. This allows the player to make change the simulated world, to leave their mark. Second Life is almost entirely about players creating things and places in-world. Yes, SL has socialising, apparently,... but I'm a programmer, so...
World of Warcraft, currently the most populated MMO (? is Farmville getting there on Facebook ?) does not have any housing or any real way for players to persist changes in the world - except by the immediate short-term actions of their characters. This omission does not seem to have done the game any lasting harm.
Persistence is subtly tied to interaction between players. If the only interaction is very indirect, through an auction house for trading items perhaps, then each player is effectively seeing a private version of the world. Such a compartmentalised game could (more) easily provide a great deal of customisation to players, no-one else would ever see it so potentially the whole customisation could be client side with no information about it going to the server.
If the players are able to interact directly or indirectly then there must be persistence of the required information at the server. If I can drop a cube in a shared area somewhere and you walk past later on, perhaps when I am logged off, then you should see the cube sitting where I dropped it. It gets more complicated if there is a cube sitting somewhere and either of us can move it. Who gets to move it ? Is it picked up and dropped (by one person at a time) or do we both tug at it and the server resolves the conflict ?
With a small 'p' this is where the physics of an MMO gets complicated. Some things are entirely client-side and no conflicts arise - the exact position of the particles making up a fire effect probably does not 'matter' in the context of the game. In the case of a fire then all the clients need to know is that there is a fire object and where it is. In terms of interaction with the fire, either player might pour water on it to extinguish it. This works once (and your 'water pouring' skill goes up by one point). If twenty players are sitting watching the fire and someone puts it out then all twenty clients need to be informed of what has happened to the state of the fire. Additionally some clients whose players have also tried to put out the fire need to be able to deduce that they failed. While it is relatively easy to block a simple action which can be 'performed' or 'fail' at the server depending on an object's state it is tougher to sequence events correctly when the action being taken is manipulating a system such as a pile of bricks.
The aim probably needs to be to allow the largest possible number of clients to succeed in any legitimate actions taken, but without ever having to 'wind reality back' at the server. Most MMO clients will allow character movement, for example, without waiting for a response from the server - but if your movement fails for some reason (you were stunned by another player before you could start to move) then your view of the world will sometimes 'snap back' or 'rubber band' to a previous position. This effect is often noticed by players of popular MMO games, particularly in congested areas or at busy times of day.
No comments:
Post a Comment