Top Mud Sites Forum

Top Mud Sites Forum (http://www.topmudsites.com/forums/index.php)
-   MUD Coding (http://www.topmudsites.com/forums/forumdisplay.php?f=9)
-   -   Mud Implementation Issues (http://www.topmudsites.com/forums/showthread.php?t=497)

Khadgar 08-12-2005 12:52 AM

Thanks to those who responded to my last posting.  However, I have two other issues I have been pondering.  

1) What are your thoughts on profanity filters? Should profanity be banned or restricted on a MUD? Should profanity be replaced with asterisks? Should it be limited to one channel?

I think people should have the right to express themselves. However, other people should have the option of filtering what they hear. Thus, I am concidering implement a "V-CHIP" for MUDs. The feature would be much like autodraw for weapons.. perhaps called autofilter.  If the autofilter option is enabled, players would see asterisks in place of profanity and other undesirable words. The autofilter option could even be implemented where the player could choose additional words to filter apart from a common list. Would anybody happen to have a list of undeseriable terminology to start from?  I believe rules are going to have to be put in place regardless of whether/where profanity is legalized.  For instance, people could use an asterisk in place of one character or seperate characters by spaces. Of course, there are other languages people could use as well. Perhaps foreign languages would be "frowned upon" unless of course it is a language the mud implements.

2) This issue is a little more important than a profanity filter. How do people implement the "copyover" procedure? Players stay connected to the mud while modifications are made to the code? I do not understand this because it would need to be recompiled. Could somebody please explain this process or guide me to a reference i could use?  

Thanks in advance for any help you can give me regarding these issues.

- Khadgar

Gemini 08-13-2005 02:56 AM

I have no idea about your second problem, however, the opitional filter sounds like a good idea. If it was up to me, there would be such a filter, but there would still also be rules about swearing and abusive language. Mild swearing would be fine, but when it starts to be swearing or flaming others, then that person is warned/punished by whatever your standard is. As for other serious deragitory language(insults based on race, gender, sexual prefrence ect...), it would not be allowed at all.

Khadgar 08-15-2005 12:26 PM

I have been thinking about the copyover idea and how it might be done.  Please correct me if I am wrong in the following statements.  

Allocated memory will never be freed as long as a process is using it.  In this example, there will be two processes:

Process A is the old instance of the mud server.  As soon as a privledged user types copyover, connected client information, active quest info, mob data, and similar information could be copied to a file. During this period, everything is frozen until process B - the new instance of the mud server - is initiated with the command line parameter "copyover".  Process B could then reinstate the saved data and process A could close.  

I am assuming the sockets will still remain in tact as long as the closesocket() function is never called in process A.  

Since I am working with classes, I could save the memory addresses of clients to a file.  This would be worthwhile if there was a way to retrieve a pointer variable in process B that points to these memory locations.  Is there a way to do this in process B?  If not, would the previous idea work?  Is there a better way to perform a copyover?  Thanks in advance for any help you can provide regarding this issue.

- Khadgar

Kylotan 08-15-2005 01:44 PM

No, you can't hand memory over from one process to another. The same address in 2 applications will refer to a completely different area of memory (at least on any reasonably viable mud platform).

Possibly the simplest way to do what you're trying to do is to have your server in 2 parts, so that there's a thin bridge application between their client and your server. When your server goes down for a reboot, they stay connected to the bridge program.

Really though, if you want to know how copyover is generally done, download a snippet with it in and look for yourself. I believe that it often uses the fork() procedure which allows a process to effectively relaunch itself and carry over the descriptors (ie. files and network connections). Personally I think that's an ugly way of doing it but someone else might consider it elegant.

KaVir 08-15-2005 02:24 PM

Handle them client-side.

Usually with , although most people just download it as a .

Valg 08-15-2005 02:52 PM

As far as profanity, we use the following rules:

1) Language which denigrates people of a particular real-life race, ethnicity, religion, sexual orientation, etc. is unacceptable.

2) Excessive use of profane language... is also unacceptable, particularly when directed at specific individuals.

3) Sexual harrassment will not be tolerated. If both parties do not consent to the speech/socials/emotes, then don't do them.


#1 usually falls under general roleplaying rules anyway, since if someone is going off about a particular race/religion/etc. they're obviously not referring to anything in the game. However, some people decide to use such language on the newbie help line or whatever, and I'm perfectly happy to show one bigot the door and keep two other players.

#2 is essentially a courtesy to players, and based on judgement calls on the part of the staff member attending to the matter. The key word there is "excessive", and the only times I've seen it invoked is when someone had too widdle sweep the night before and can't control a tantrum. (Even then, staff involvement usually comes down to "Knock it off.") We have plenty of characters who swear on occasion, but we don't see that as more offensive than our prodigious violence. It strikes me as silly to worry about the word "****" when most games of this genre depict brutal scenes of murder.

#3 has very rarely been invoked in my experience, with the exception of a couple creepy stalker types. We don't outlaw sexual content (see above comparison to brutal murder), but we don't want players given the heebie-jeebies by someone who doesn't know when to quit. This hasn't interfered with various lustful or romantically-inclined characters, but does deter the character who keeps approaches half the MUD with some IC euphamism for "wanna cyber??".

My experience is that if you have a reasonably responsible set of rules like this, you can establish a culture where communication doesn't sound like a mix of a construction site, Fenway Park's bleachers, and a cab driver in traffic. Once you have that, most people will fall in line with it, especially if staff occasionally prods them. Hard-coded profanity filters strike me as overkill compared to this alternative.

the_logos 08-15-2005 03:50 PM

I'm with Valg. Our policies are essentially the same and work fine. The one place we permit people to use pretty much whatever language they want are private clan channels that are in no way required to play the game, and in which there is no admin monitoring of content. Our rationale is that if an organization has to be voluntarily and consciously joined and if that organization doesn't really affect your ability to play the game, express yourself however you want on that channel.

--matt

Yui Unifex 08-15-2005 07:51 PM

Copyover is a fairly simple concept. It is customary for open files to be inherited when executing a new process, and since sockets are just another kind of file to read and write, they are inherited as well. The 'file abstraction' is a fundamental concept which contributes to the simplicity of UNIX systems.

So here's a basic rundown of what a mud will do:
1) Copyover is initiated.
2) All transient state is written somewhere.
2a) This always includes a section for the file descriptor number and player name (or other unique identifier).
2b) The server file descriptor should also be written.
3) execl() is called to replace the current process image with the new code.
3a) A special flag is passed to the code to tell it to resume from a copyover.
4) When the server starts with that special flag, it reads the previously written file and recreates its structures.
5) Game resumes execution.

Don't do this. Not all of your memory is inherited, only certain parts. You want to serialize your stuff in a sane way =).

This approach is necessitated by the platform used for my current codebase, and I don't think it's anywhere near as simple or elegant as the execl() approach. The basic design of inherited open files is a fundamental part of the way UNIX works, because it allows parent processes to control restricted, doling out specific chunks to its children (e.g., the relationship between sshd and your shell.) So the execl() method is not a hack, it's simply the way things are supposed to work by design.

Oh yeah, and **** profanity filters.

prof1515 08-15-2005 11:01 PM

I'm opposed to "profanity" filters in general. I've heard people declare different ideas of what constitutes profanity. Some might find the phrase "Jesus ****ing Christ" to be offensive but to someone else it isn't. Ultimately, the best solution is probably to ask players to consider others' opinions. If noone's offended, no harm done. If someone takes offense, the others should try to avoid future usage. But it also requires that the person who was offended remember that they have to give a little too. I knew a hypocrite who would reply, "Please don't use that name in vain" when people said "Jesus Christ!" in frustration yet had no problem calling homosexuals "faggots". If you want your prudish values respected, you should respect others. After all, if you can dish it out, you'd best be able to take it.

Take care,

Jason

Khadgar 08-17-2005 01:22 PM



All times are GMT -4. The time now is 01:19 PM.

Powered by vBulletin® Version 3.6.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright Top Mud Sites.com 2022