Top Mud Sites Forum Return to TopMudSites.com
Go Back   Top Mud Sites Forum > Mud Development and Administration > MUD Coding
Click here to Register

Reply
 
Thread Tools
Old 08-12-2005, 01:52 AM   #1
Khadgar
New Member
 
Join Date: Mar 2003
Posts: 29
Khadgar is on a distinguished road
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
Khadgar is offline   Reply With Quote
Old 08-13-2005, 03:56 AM   #2
Gemini
Member
 
Join Date: Dec 2003
Posts: 97
Gemini is on a distinguished road
Send a message via AIM to Gemini
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.
Gemini is offline   Reply With Quote
Old 08-15-2005, 01:26 PM   #3
Khadgar
New Member
 
Join Date: Mar 2003
Posts: 29
Khadgar is on a distinguished road
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
Khadgar is offline   Reply With Quote
Old 08-15-2005, 02:44 PM   #4
Kylotan
Member
 
Join Date: Jun 2003
Location: Nottingham, UK
Home MUD: Abattoir (Smaug)
Home MUD: ex-Jellybean (Smaug)
Home MUD: ex-Dark Chambers (Merc)
Posts: 174
Kylotan is on a distinguished road
Send a message via ICQ to Kylotan Send a message via AIM to Kylotan Send a message via MSN to Kylotan Send a message via Yahoo to Kylotan
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.
Kylotan is offline   Reply With Quote
Old 08-15-2005, 03:24 PM   #5
KaVir
Legend
 
KaVir's Avatar
 
Join Date: Apr 2002
Name: Richard
Home MUD: God Wars II
Posts: 2,052
KaVir will become famous soon enoughKaVir will become famous soon enough
Quote:
Originally Posted by (Khadgar @ Aug. 12 2005,07:52)
1) What are your thoughts on profanity filters?
Handle them client-side.

Quote:
Originally Posted by
2) This issue is a little more important than a profanity filter. How do people implement the "copyover" procedure?
Usually with execl, although most people just download it as a snippet.
KaVir is offline   Reply With Quote
Old 08-15-2005, 03:52 PM   #6
Valg
Moderator
 
Valg's Avatar
 
Join Date: Apr 2002
Home MUD: Carrion Fields
Posts: 643
Valg will become famous soon enough
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.
Valg is offline   Reply With Quote
Old 08-15-2005, 04:50 PM   #7
the_logos
Moderator
 
the_logos's Avatar
 
Join Date: Sep 2002
Location: Mill Valley, California
Posts: 2,301
the_logos will become famous soon enough
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
the_logos is offline   Reply With Quote
Old 08-15-2005, 08:51 PM   #8
Yui Unifex
Senior Member
 
Join Date: Apr 2002
Location: Florida
Posts: 323
Yui Unifex is on a distinguished road
Send a message via ICQ to Yui Unifex Send a message via AIM to Yui Unifex
Question

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.

Quote:
Originally Posted by (Khadgar @ Aug. 15 2005,13:26)
Since I am working with classes, I could save the memory addresses of clients to a file.
Don't do this. Not all of your memory is inherited, only certain parts. You want to serialize your stuff in a sane way =).

Quote:
Originally Posted by (Kylotan @ foo)
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.
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.
Yui Unifex is offline   Reply With Quote
Old 08-16-2005, 12:01 AM   #9
prof1515
Senior Member
 
prof1515's Avatar
 
Join Date: Aug 2003
Location: Illinois
Posts: 791
prof1515 will become famous soon enoughprof1515 will become famous soon enough
Send a message via AIM to prof1515 Send a message via Yahoo to prof1515
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
prof1515 is offline   Reply With Quote
Old 08-17-2005, 02:22 PM   #10
Khadgar
New Member
 
Join Date: Mar 2003
Posts: 29
Khadgar is on a distinguished road
Quote:
Originally Posted by
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.
Would the execl approach work under Windows?  I cant seem to find "unistd.h" under my Visual C++ compiler.  Perhaps there is another process under windows that allows me create a new process with inherited files?  Thanks once again for any advice you can provide.

Post Update: After some digging, I found the following site that provides useful information: MSDN Website

Since everybody contributed greatly in my time of need, I will post the copyover portion of my code for people that may need help in the future.  Of course, I would assume most people would not take the Windows route
Khadgar is offline   Reply With Quote
Reply


Thread Tools


Mud Implementation Issues - Similar Threads
Thread Thread Starter Forum Replies Last Post
Working out issues through RP Brody Roleplaying and Storytelling 3 10-07-2005 03:41 PM
Best rogue implementation. caspin00 Tavern of the Blue Hand 7 08-21-2004 01:05 PM
Mud Implementation Azeroth Advertising for Staff 0 09-16-2003 07:30 PM
Server Issues Astin MUD Announcements 1 10-18-2002 12:56 AM
No issues? Iluvatar Legal Issues 0 06-18-2002 04:22 AM

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off

All times are GMT -4. The time now is 10:04 AM.


Powered by vBulletin® Version 3.6.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Style based on a design by Essilor
Copyright Top Mud Sites.com 2014