Nick Gammon said:
This ground has been gone over at some length a month or two ago on the Mudstandards.org forum.
One problem is getting client developers to agree on a format (eg. XML, Lua, JSON, bencoding) for sending data to/from the server.
The next problem is convincing server developers to agree on the same thing (harder than it sounds).
Then we hit the issue (which you raised) about supporting, ah, less frequently-used systems (eg. minix, bsd) or ones such as Internet Cafes. So either you write something that the lowest-common denominator can handle (and I mean that in a nice way), or some users get left out.
Then we hit the issue of some games having non-standard (if I may use that expression without getting attacked) designs. For example, if you build into the protocol a message when you change rooms, some developers said "but we don't have rooms".
Or if you have coordinates, some MUDs don't have coordinates. But if you leave them out, then the ones that *do* have them need them to be sent.
Then we have the issue of "oh but you are forcing me to use a standard", or "I don't want to change things, don't make me". Or "who the heck are you telling me what to do?".
My proposal at the time was to have a simple protocol that just sent keyword/data pairs, where the keyword/data was basically what was relevant to the MUD (eg. room_number=12345). At least that is extensible, since any MUD that needs to can add keywords (eg. coordinates).
However if it is *too* general, well we haven't really defined anything much, and if it is much more specific, well we can't reach agreement about what the keywords should be, what the data should be, how often it is sent, whether frequently-sent data should be cached, and so on.
I read an interesting post elsewhere today about MMO development. In that the poster basically suggested designing to a specific subset, otherwise you will be there all year trying to accommodate everything.
I think this is fair advice. Perhaps a subset would be "Muds that have rooms, but not coordinates", and then take it from there (just an example mind you).
It is interesting BTW that when you look at a game like WoW, they actually simplify some things quite a bit, but in a subtle way. For example, you can't drop things on the ground. Also, players can walk through each other and through mobs. Now you might argue "but I *should* be able to drop things on the ground", or "I should *not* be able to walk through people" on the grounds of realism. But by limiting their design in this way they greatly simplify the design of the client and the server.
Something I had thought about while posting was the possibility of a basic system, probably like some of the legacy systems (ch says "sentence") which provides the needed data for a simpe chat (who, the channel, and the content) but still works with older clients. For content that would be required for a more complex interface (automapping), then I was thinking 2 standards:
1) The 'Don't Print This' standard. Simply put, content that the client doesn't support at this point is dropped from the input, never seen by the player
2) A generic macro/alias/trigger system to handle key=value pairs, or some other method of handling info.
This way older clients could simply ignore the content after a point (or a client that handles input modification could have a script written to delete the content), or do something with it (hopefully something other than telling the server to interface with itself).
Beyond this leave it up to MUDs to handle their own things. If a group of MUDs wants to work with a specific set of scripts then let them. If they want to modify(given no license issues), then they can.
The MUD will then still have the issue of 'how to we support people who don't use a standard-compliant client?', but they could also say 'Screw it. They will get the info, let them do with it what they please'. If these values are transmitted through a single function, then adding a single config to the game could eliminate the output and no one is left out (even telnet users!) unless the MUD does something really screwy, like just using this data to tell the client things.
I see it more as an extension than a replacement for traditional output, but might could satisfy everyone with some work. |