if (pRoom && pRoom->vnum != (unsigned int)d->pProtocol->pVariables[eMSDP_ROOM_VNUM]->ValueInt) {
unsigned char door; /* Loop counter */
strcpy(buf, "\003"); /* MSDP_TABLE_OPEN */
for (door = DIR_NORTH;door < MAX_DIR; ++door) {
if (pRoom->exit[door] != NULL) {
const char MsdpVar[] = {(char)MSDP_VAR, '\0'};
const char MsdpVal[] = {(char)MSDP_VAL, '\0'};
strcat(buf, MsdpVar);
strcat(buf, dir_name[door]);
strcat(buf, MsdpVal);
if (IS_SET(pRoom->exit[door]->exit_info, EX_CLOSED))
strcat(buf, "C");
else /* The exit is open */
strcat(buf, "O");}
}
if (pRoom->area != NULL)
MSDPSetString(d, eMSDP_AREA_NAME, pRoom->area->name);
MSDPSetString(d, eMSDP_ROOM_NAME, pRoom->name);
MSDPSetString(d, eMSDP_ROOM_EXITS, buf);
MSDPSetNumber(d, eMSDP_ROOM_VNUM, pRoom->vnum);
}
…the best way I've found to deal with this is always considering the client and the player to be the same thing..
It's actually worse to make it so that only the technically minded people can get access to these unfair advantages.
I'm with Runter here. That the client is the same as the user is especially true for JavaScript running in your browser. If you don't want the user to have access to certain location info, just don't send it.
As for favoring tech-minded people, this client in the cloud will be able to combat this fact better than others before it. If someone techy maps their favorite game, others will gain access to that world file automatically. I picture a simple wiki model for collaborating on the map (with revisions kept automatically) as well as giving people the ability to overlay their own custom notes, or clone off the world file completely.
Rarva, I think I know what you're getting at and the solution I believe is for the game to send info on what exactly it wants the map view to render at any given location for any given player. This is what I do currently for the old web app and the iOS app, except the renderer is not nearly as powerful or sleek. The big advantage to this approach is that you can render subjective views, not just fog-of-war, but really, anything you may want to vary based on a character's current state. Since the server is in full control, it is easier to push overlay data like players or mobs passing nearby. And since you're sending only display info, you're not divulging anything you don't want players to know. I am pretty sure this mode will be supported by code I write (as opposed to people having to add code later). One, it's pretty straightforward to make the renderer "dumb". Two, there are quite a few games with server-side automappers that can be leveraged fairly easily to drive this mode. Three, I may use it myself for the mobile app.
There will also be an option to upload a world file in JSON format that the mapper will interpret. I want to do a little better than Mudlet in this respect by not requiring this file to contain any room coordinate data, something that most MUDs would have great difficulty providing.
At least, that is how I handle mapping text data coming from the mud in my client, for muds that don't want to expose the sacred vnum! :)
I've also heard that Mudlet's new automapper can scan room descriptions and contents to automatically check for room uniqueness. All that's doable, just tricky. At some point, there's gotta be some kind of freeform edit mode where players can just move rooms around to get the best result.
My sense is that I'll focus first on getting this out to games that do want their players to get around more easily, then worry about empowering geeky players on games that put up a fight.
Does your game already send location data via msdp in a fairly standard format? If so, maybe I should use it as a model. I'm almost ready to start alpha testing with different games.