Showing posts with label thoughts. Show all posts
Showing posts with label thoughts. Show all posts

Friday, November 18, 2011

The Elephant in the Room

I hesitate to air these sorts of administrative concerns over the idea board, so rather than post my response in-game where everyone (especially impressionable newbies) can see it, I'll write it out here.

There were a couple of idea posts overnight that are oddly atypical of what we administrators hear from players.  In effect, they called for tightening up regulation of unmanned looping to get gold or level up... Imagine that.  Players asking for rules making it harder to get to 50 and get rich.  On the one hand, it pleases me to hear players starting to appreciate why this sort of gameplay is bad.  On the other hand though, I'm not pleased that we let the situation get to a point where players are starting to complain about it.

The years of admin experience we have means we can typically spot problematic behavior early on, and this is why we try to nip this sort of unfair play in the bud by coming down on people who start doing stuff like gold looping.  What's sparked this most recent bout of outrage was certain individuals quietly roboleveled for months during the summer.  There was little harm was being done, the admins were largely away on vacation, and nothing came of it.  Here we are a few months later, though, and now we've got players equipped with an army of indescript, throw-away, power-combo alts that have tons of money and all the perks that come with that (level 50 baking, crazy quest weapons, etc.).  These players have started leveraging their armies of alts, and now suddenly there's a problem.

Addressing these issues is quite tricky; in the past (which I have dubbed Dark Risings 1.0), dealing with isolated abuses were often compulsive and sweeping.  A great historic example of this is when the game's economy was redone and a lot of players lost all their gold because a few abusive players (I'll call them powerplayers) got crazy rich.  Here in Dark Risings 2.0, we've been trying to curtail these sweeping, reactionary changes in favor of more conservative responses that don't impact the entire game.  For example, one of our current powerplayers continued roboleveling despite being told many times to stop, so we made all mobs in all leveling areas aggressive towards just his character.  Permanently.

The downside to this approach is that it's extremely time consuming.  Once we impose such a punishment on an individual, there is a pretty predictable chain of events that follows:

  1. The player argues and complains with imms, then admins, then imps.  It's not fair, this isn't fair, life's not fair.
  2. A smear campaign is launched against the immortals over IMs for singling out and picking on one poor guy who was just trying to level his character.
  3. The player gets over his butthurt and just looks for another way to exploit the system.
  4. The player finds a way to exploit the system, and the cycle repeats.

This process is extremely aggravating and time-consuming for us admins, and this is why, despite our desire to limit fallout, we still sometimes introduce sweeping changes.  The case of rose bushes no longer being immune to squires was kind of a balance between the Dark Risings 1.0 approach and the 2.0 approach; initially, I was going to just remove their immunity to pierce altogether, but Sidonie (who has been really championing sensibility) suggested we limit the change to squires so that rose bushes can still be used for honest reasons elsewhere.

The situation in which we now find ourselves is at stage #3.  The truth is, there are other charmable mobs in the game that are immune to pierce; people just haven't discovered them.  As soon as they are found, I'd be willing to bet that our resident powerplayers will abuse the hell out of them, and we'll have to change them as well.  The ultimate question is, how do we break this cycle?  We could...

  1. levy some sort of punishment against the abusive character.  This won't work because powerplayers' characters are usually interchangeable and disposeable, and we don't have the effort to persecute every new character they pump out.
  2. make a sweeping or semi-sweeping change.  This is what we've been doing, but it sucks.  It's a lot harder for a casual player to get gold now, because all the "easy" ways had to be plugged up on account of powerplayers grossly abusing them.
  3. ban the powerplayer.  But for what?  Having the time and dedication to play the game hardcore and make juiced up characters?  That's not against the rules.
  4. make it a serious rule violation to robolevel/robofarm gold, then ban the powerplayer.

I think option #4 is the gist of what the recent idea posts advocate, but the truth is, this option sucks too.  If you think back to the time when afk spamming wasn't allowed, people were still doing it.  Even after we've told people that they aren't allowed to robolevel or robofarm gold, they are still doing it.  When we catch someone in the act, there's always an excuse.  My Chinese food just arrived.  I had to walk the dog.  I went out for a smoke.  My kitchen caught on fire.  And even then, we wouldn't be preventing the problem players from manually farming gold.  It wouldn't change the facts that they continually strip an area and prevent anyone else from using it, they hog charmies, and they really disrupt the gameplay for others.

So do we still ban them and embitter them against Dark Risings?  I'm not sure that's any more fair than saving powerplayers from themselves by plugging up exploits.  Both cases are just addressing the symptom, not the problem.

The underlying problem is that powerplayers, to a large degree, just don't "get" Dark Risings.  To them, Dark Risings is something for their sole enjoyment (not unlike a single player game), and they don't care about anyone else's fun.  They want the high score--the highest hp, the best PK record, and the highest hit/dam.  They want to get guilded and become a vampire because they want the best spells and the best equipment in the game.  RP is just a formality required to get those things.  In many cases, it's not that the player is mean-spirited or "bad," it's just that they don't understand the game that us admins are trying to make and that the majority of our players enjoy.

Dark Risings 1.0 was not a bad place to be for powerplayers; they were on staff, they were in guilds, they were everywhere.  And there's nothing wrong with that kind of MUD per se, but it's not the game that Dark Risings has become.  Us admins don't have the energy to run a game with the deep undercurrents of acrimony that those games can breed.  We want to run a game that's fun and fair to play.

So I guess the punchline here is that I don't know what to do about the bad apples who spoil the fun for others.  They tend not to listen to us staff because they don't "get" us, and since they don't understand what we're trying to accomplish with our game, they often assume that we're just out to get them.  Maybe they'll listen to what their peers (all you players) are saying instead.  Give it a try.  Just remember that you catch more flies with honey.

Thursday, November 3, 2011

Taking a step back

Just a forewarning:  this post is long and rambling.  You might want to save it for bathroom reading.

There has been a lot more of a stir surrounding Sidonie's idea post about changing the way sleep/poison/pinch works than I expected, and an interesting discussion came up on OOC yesterday which was suggestive of an ongoing clash of perception.  For the sake of just delineating where I (and I think the other admins) are coming from, I think I'll ramble about it.

The issue that came up yesterday was centered around sleep's duration of 50 ticks at level 50.  There were essentially two camps here:

  1. sleep's long duration is good way to force people to cool off; if a BR is pestering you, or if someone is freaking out and going kamikaze after getting KO'ed, the 37 minute timeout is very useful
  2. sleep's long duration is unreasonable since it doesn't let a player actually play.
Oogon then mentioned something that really sheds light on this rift of perceptions that splits our current playerbase:

[OOC] Oogon: 'But really, how often is sleep used in that regard?'
[OOC] Oogon: 'To just let someone 'cool off'.'

And you know, it's the truth.  I've the benefit of remembering when sleeping pester characters (BRs, naked rogues, etc), was relatively normal, and during those days, slapping a player-mandated time-out was really the only recourse available.  However, something that a lot of older players seem not to realize is that Dark Risings really isn't the same game as it was five years ago; sure, it has the same name and the same backstory, but take a look around.  The areas are no longer static: Lilith has the power to corrupt the entire town of Three Firs, gypsy mobs remember their enemies, and the game is dotted with mini-quests that offer 5000-10000 experience for completing them.  The races are different:  avariels are no longer vuln to all fire, and ogre weres aren't vuln to all magic.  The classes are different: there are now templars, which offer a wildly different approach to PK.  Pick any aspect of the game, really.  I'll bet it's not the same now as it was five years ago.

More importantly, though, is that the whole process of implementation has wildly changed.  This point may not be as evident to players, but I think it's really the single largest change that separates "old Dark Risings" from "new Dark Risings."  Take, for example, the aforementioned avariel vuln to fire.

When avariels were made vuln to fire (this happened in around 2001), there was no discussion or player input.  There was a reboot and a terse note saying "avariels are now vuln to fire."  Since my main character was an avariel, this was a pretty devastating change; I went from having no vulnerabilities to being vulnerable to a spell that almost every class can cast (fireball).  I immediately protested since avariels really weren't very good to begin with, but my notes fell on deaf ears.  I wound up leaving the game a few months later, and while I was gone, flashfire was changed to no longer do fire damage since it was deemed to crippling against avariels.  This mitigated the problem to a degree, but it also left one of the "elemental" spells doing unintuitively and decidedly non-elemental damage.

I think these sorts of changes were very telling of the "old Dark Risings" approach to implementation; imps did what they thought was best for the game with a sort of players-be-damned attitude, and if the change proved to be unpopular or unbalancing, another change would be rolled out to mitigate.  This sort of implementation practice also meant a lot of decidedly reactionary changes went in; old players are rife with stories of how some skill got changed because an imp got beaten by someone gimping that skill in PK.  I'm not sure if these stories hold water, but it doesn't really matter now.

Fast forwarding to the "new Dark Risings," we really don't operate this way at all, and I think this is clearly evidenced by the fact that we solicited player input regarding this poison/sleep/pinch issue.  We also solicited (and continue to solicit) feedback on the brawler scoreboard idea.  The new spells that Arcaenum has are 100% player conceived and designed.  In fact, I don't think there's a single change that we've posted in the last year (except a few exploit fixes) that were done without player involvement.

So what has been the driving force behind this transition from "old Dark Risings" to "new Dark Risings?"

At the "old Dark Risings," the imps had always been people who were at Dark Risings from the very beginning.  All of them had always been imms or admins, and they all had a hand in creating Dark Risings out of nothing and making changes before there were even players to upset.  In many ways, they had every entitlement to do as they saw fit, because everything that Dark Risings had become was a result of their design.

However, this also created a rift between the players and the staff at times, and in many cases, set the stage for an "us against them" mentality at many levels.  The people making the decisions had always been the boss and never enjoyed the "player experience" of not being in control and having changes go in without their approval (or knowledge!).

The "new Dark Risings" really began when Sidonie and I took over the active implementation of the game.  When Mark relinquished his position as active imp, Dark Risings was, for the first time, being run by people who had started DR as regular old players.  We remember what it was like to be a nobody, and to be a player, and to be the victim of sometimes-heavy-handed changes forced down through the ranks.  We also weren't operating under the assumption that we always know what's best for the game, because much of the game was designed and played without us.  Dark Risings is "ours" in the sense that our names are on the paperwork, and we do have the benefit of being long-time players with some amount of wisdom, but I think the defining characteristic of the "new Dark Risings" is that its implementation is far more player-inclusive.

I'd like to think that Dark Risings is less dictatorial and more communal now.  Of course, that's not to say that us admins still aren't the boss.  We are the boss, and we make no bones about letting people know that from time to time.  But this new Dark Risings has become a product of player-driven efforts and RP, so we have nothing to gain by excluding players.

Thursday, April 28, 2011

Sorry Mark

A number of years ago when I first came back to Dark Risings to help run Gypsy, a little feature called Hevige Nacht (HN) was in full swing which essentially gave players a real-life hour where anyone could attack (and loot) anyone else without any IC reason other than it being HN. Considering the fact that I had left the game several years earlier in large part due to roleless PK, I saw HN as an unacceptable deviation from DR's long-held classification of being an "RP MUD with PK," and I made a big stink about it.

Part of the stink I raised involved drumming up support for my "end HN now!" campaign with some old higher-profile DR player pals of mine. One such pal was a fellow (let's call him P) who, for all intents and purposes, was no longer playing the game and would only log in once in a while to read notes and maintain appearances. Upon hearing my tales of HN horrors, he logged his main character and posted a big, two-idea-long diatribe against HN that summarized everything I'd been saying about the whole HN idea all along. Awesome, right?

Actually, the only reason I remember that big posting is because Mark's response was
[OOC] Mark: 'You know what makes me happy? [P], logging on to post a 2 part note about how horrid Hevige Nacht is, after being gone for most of its existance if not all, and then disappearing again.'
Mark did pull the plug on HN the day after P posted that two-part idea, so at the time I just thought Mark was being a sourpus because we complained loudly enough to make him back down on the issue.

Fast forwarding a few years, now I find myself in Mark's position. Players who haven't been logging, much less actually playing and keeping abreast of what's going on in the game, crawl out of the woodwork and posit these grand schemes about how aspects of Dark Risings are fundamentally broken. Forget all that business about actually experiencing the proclaimed brokenness, because Gedankenexperiments and weeks (or months) of absence grant supreme enlightenment.

Now, after having been rubbed the wrong way by a no-show player who proclaimed to have better insight into PK than those of us who actually watch and participate in it on a daily basis, I see why Mark reacted the way he did to P's idea.

So, although it's five years late, sorry Mark! I now understand.

Parviane

P.S. also, sorry to the guy who lost all his character's equipment that one night to prove my point about abusing HN. It was not nice, and rest assured, we did get yelled at for it.

Wednesday, April 13, 2011

Memories

If there's one thing science has taught me, it's that the best way to sell an idea is with pretty pictures. So, here's a pretty picture:


We've been having memory issues in the game intermittently since we came back, and the diagram offers a good illustration of the problem. When this bug first manifested, it so happened that I was trying to edit something on our game server and was rudely surprised by all manner of warnings about having insufficient memory to even open the text editor. Sure enough, somehow our game's memory footprint had blown up (seemingly overnight) to over twice its normal size, and there was very little to indicate what had happened. The solution then was to immediately reboot the MUD to flush memory and start from scratch, contact our provider and up our memory, and create a tool to keep track of our game's memory usage.

I've been checking the data dumped out by this tool daily to see if the memory blowup could be reproduced, and today was the first day I had a bite on the line. I suspected to find logs of someone doing something stupid coinciding with this big spike (like spamming haggle, exploiting some bug, etc), but there was nothing. Going back to my own personal logs of that morning though, the memory spikes happened around a time when Sidonie and I were working out some problems with a builder command. Ah-ha!

As it turns out, a very useful but not-often-used command that was put into the code many years ago had a very severe memory leak in it. The command uses the regular expression engine to parse boatloads of mobprogs iteratively, but the code wasn't cleaning up the tail end of the regex calls because the regex libraries silently malloc huge blocks of memory that aren't automatically freed when the parent routine exits.

This was a pretty easy mistake to make; while most high-level programming languages in which one would utilize regexes (like Perl, PHP, and whatever else) abstract away all of the memory management, C certainly does not. I guess the pitfall here is that the regcomp() call buried mallocs within it, so a headfirst dive into using regexes in C wouldn't directly expose the programmer to the mallocs which would raise alarms. An easy pitfall, sure, but like a wise man once said, "if you are going to write C code, you better be willing to deal with the memory management."

For what it's worth, I've gotten the game's code to be remarkably scarce on memory leaks like this despite the fact that I (nor any past coder of whom I know) has ever profiled the code with something like Valgrind or even gprof. While this case may give a pretty good argument for trying to figure out a realistic way to do this, blind dependence on tools like Valgrind to make up for incompetent coding has been known to cause serious problems. If we start running into memory leaks again though, maybe I'll try to figure out a way to set up profiling on a test port somewhere and have some of you players beat on it for a night.

Monday, March 28, 2011

Crying and complaining about coding

One of the hardest parts of coding for Dark Risings is the fact that it's derived from code that is over two decades old (Diku was first released in 1990) and, even after transforming into the ROM 2.4b6 codebase (released in 1998), it's been hacked on by twelve years of Dark Risings coders. As much as I hate to say it, the greatest amount of damage to the code has, in fact, been done by the long history of DR coders of varying levels of familiarity with both C and how ROM works.

What's prompted this whiny rant is a problem I discovered while generating a list of all of the scrolls in the game for Sidonie. I'd already done this with wands and staves with the help of a little Perl magic that I wrote, so I expected it to be another straightforward five-minute job. In a sense it was, but upon examining my data dump, I noticed that some scrolls had four spells (some of which are listed as "reserved") and others have blanks where spells should've been. Thinking that my Perl script was defective, I checked the area files themselves, and sure enough, some scrolls have "reserved" and others are just "". What's the difference? Since this sort of ill-defined behavior can lead to major issues (area/pfile corruption, crashes, etc), I started digging and was brought to one particular routine that made me a little crazy.

Consider the following code, straight out of the Dark Risings source:
/*
* Lookup a skill by name.
*/
int skill_lookup( const char *name )
{
int sn;

for ( sn = 0; sn < MAX_SKILL; sn++ )
{

if( skill_table[ sn ].name == NULL )
break;

if( strcasecmp( name, skill_table[ sn ].name ) == 0 )
return sn;

/*
if ( skill_table[sn].name == NULL )
break;
if ( LOWER(name[0]) == LOWER(skill_table[sn].name[0])
&& !str_prefix( name, skill_table[sn].name ) )
return sn;
*/
}
...
For whatever reason, a past coder decided it best to comment out the stock bits of this subroutine, presumably to force the subroutine to match the whole skill/spell name instead of allowing abbreviation (which can cause issues when you have spells like "lightning bolt" versus "lightning breath").

This sort of thing drives me crazy for many reasons, but here's one.

The stock version of the code was smart; it first checked the first character of the argument against the first character of the entry under examination in the master skill table. Since there's a very large chance that those first characters won't match when ripping through all 298 skills, you wind up not having to incur the overhead associated with a full-on subroutine call for the majority of the misses. This makes the whole process of finding a skill and returning its associated skill number much faster.

Perhaps I am more mindful of the benefit of these tiny performance benefits since I write very computationally intensive scientific code, where one poorly written line of code can add days or weeks onto compute time, for a living. And perhaps there really is no appreciable speed benefit to not preserving this preliminary first-character check when matching strings on modern hardware. However, I see little reason to pull it out outright since it is a smart way of handling these sorts of lookups.

Furthermore, the str_prefix routine (provided with ROM) was replaced with strcasecmp, which is intrinsic to string.h. However, whoever did this code change must have been extremely unfamiliar with ROM's internals (or perhaps extremely tired), because ROM provides str_cmp, its own equivalent to strcasecmp which is used extensively (and I mean extensively) throughout the code.

If strcasecmp and str_cmp serve the same purpose, why do both exist? As it turns out, strcasecmp is indeed included in string.h, but it is not ANSI C (although it is POSIX 2001). POSIX didn't exist back when Diku was first released (and neither did GCC or glibc for that matter), so it's likely that the str_cmp routine was written into the code decades ago. Providing this routine made the code more portable by not having to rely on special extensions that only existed in specific proprietary compilers. It was also tailored specifically to the needs of the code.

For the sake of consistency and portability, str_cmp (which is probably a little faster than strcasecmp) has been used exclusively in ROM's source. Unfortunately, DR's code has become rife with a sloppy mix of strcasecmp and str_cmp, forfeiting the benefits of portability while gaining literally nothing. As DR coders have touched the code, they've left these marks across it without really considering what the implications may have been.

True, since strcasecmp is now POSIX, it is unlikely that Dark Risings will ever be run on a system without it (e.g., DR compiles on HP-UX 11i, which predates POSIX 2001), but this is only an innocuous example. This sort of messy work, where one feature is implemented many times because various coders were ignorant of their predecessors' work, are all over the DR source, and it drives me a little nuts. I could go through and change all those strcasecmps to str_cmp, but to do so would require quite a bit of testing and would open the doors to new bugs. When it comes down to spending time cleaning up code which will not introduce any new features to the game or spending time adding new features while leaving the existing problems as they are, I find myself always choosing the latter.

Nobody cares if our code reads like garbage as long as that garbage is transparent to the players and imms, so I guess I'll have to take out my frustrations on this blog. It probably doesn't help that I spend my entire day at work cleaning up garbage FORTRAN.

Sunday, June 7, 2009

Crash Last Night

Last night the game crashed, bringing our total crash count for 2009 up to three. The problem which caused the crash was a bit tricky to find because the actual crash was caused by memory corruption which occurred fifteen minutes before. Tracking it down and fixing it was ultimately not very difficult, but what was particularly frustrating for me in this case was that the root of the crash involved the bane of my existence: an old CODE SNIPPET.

In this case, the problem lay in the rename snippet, v1.1 written by some fellows named Voltec and belial in 1998. This particular snippet has been in the Dark Risings source for as long as I've been here (so it was likely in from the beginning), and it is what allows us imms to rename characters named "Drizzt" without forcing them to delete and recreate. However, the guys who wrote it really didn't know what they were doing (which, from my experience, has been 100% of the people who author publicly available snippets) and thought this would be a good way to rename a character:
/* grab old name, insert new name, Save the new p-file */
strcpy(old_name, victim->name);
strcpy(victim->name, new_name);
Unfortunately for every mud which has used this snippet, the authors of it did not understand that the game does not allocate entire player characters in the game on the stack as it would a local variable; characters (and therefore the names associated with them) are malloc'ed to some block of permanent memory. Using strcpy on any permanently allocated member of a char_data structure is an incredibly novice mistake; strcpy knows nothing about the size of the space in memory allocated for a character's name, so it does absolutely nothing to ensure that it doesn't either overrun the space allocated for the character's name (and therefore corrupts whatever is in the memory adjacent to it, which is what caused yesterday's crash) or release any unused but allocated memory (which would cause a memory leak).

So at best, this snippet causes memory leaks, and at worst, it overruns the boundaries of the part of memory reserved for a character's name, silently corrupts other parts of adjacent memory, and causes a mysterious crash a few minutes down the road when the game tries to allocate memory for a new string and cannot find the correct boundaries for existing strings because they got corrupted. The correct way of doing this sort of renaming routine is actually already written all over the stock ROM code, so it's not like it is even a novel concept:
free_string(victim->name);
victim->name = str_dup( newname );
ROM and ROM-derivatives have their own internal memory handling and allocation subroutines which must be used when creating and destroying strings in this malloc'ed space; that's what free_string() and str_dup() do. My guess is that the authors of the original rename snippet learned about strcpy in their high school programming class, but did not learn about the importance of understanding how the whole program works before screwing around with pieces of it. Shoddy and broken code was the result.

This is exactly the reason Dark Risings no longer incorporates any publicly available snippets. I found myself spending my Sunday morning rewriting the rename command from scratch because the snippet we have been using for it was sloppy, buggy, and caused our game to crash right in the middle of our peak hours, undoubtedly ticking off some players and disrupting the experience for everyone logged in. It took me less time to just rewrite this command myself than it took to debug the code and trace the crash back to some crumby snippet that triggered a bug a quarter of an hour before the game actually caught up with the corrupted memory and tanked.

The funniest part of all of this is that the snippet says at the top:
* also, comes complete with comments! for the budding
* coder to know whats going on */
I feel genuinely sorry for any mudder who plays on a game whose "budding coder" learned how to code from junk snippets like this. At any rate, anyone who posts an idea or suggests to me "______ should be easy to implement because there is a snippet available" will be very rudely pointed to this blog entry. Dark Risings will never use anyone else's code under my tenure as coder.

Saturday, June 6, 2009

Arcing Quest

The quest tonight started off slow but ended up being very fast-paced and eventful! Thanks so much to all the players who made this fun for each other and for me... you know who you are, I hope!

I'll give out prizes as people start to hand in their roses.... the question is, as it always is for me, what do people want? Hmmm....

I am really looking forward to Sunday!!!!! Hopefully we get a great turnout for it... It's getting hard to wait :D

I'm so curious to hear what people thought of the new spell Parvi whipped up for this quest...and of how the quest has been in general so far.... If you want to comment about it, I'd love to hear it :)

<3
S

Thursday, May 28, 2009

Premise of the Dark Risings Admin Blog

In the past, I've not thought there to be much of a reason to expand Dark Risings outside of itself; notes, ideas, histories, changes, and the OOC channel really seemed to cover all of the necessary bases. I didn't think there would be any reason for anyone to post thoughts or comments on anything mud-related anywhere else, and the short-lived, unofficial Dark Risings forums sort of exemplified that. After all, if someone had something to share with the rest of the players about the game, why wouldn't it get blurted out on the OOC channel (as what usually happens) or in a note?

Of course, I've become somewhat wizened over the years to the fact that there are gaps within our mud's channels-notes-helps communication fabric. There exist a wide range of thoughts and responses of mine which aren't important enough to warrant a note to everyone yet should reach more screens than just the people who have OOC turned on. Help files are meant to fill in that gap, but they tend not to be topical and tend not to be discovered until long after they are written. While I could just be more liberal on what I say over OOC or what notes I post to everyone, I'd rather give players the option to "opt in" to all of this less-important information. Thus, having some sort of blog where I can easily post information without forcing all players to wade through it all seems like a good idea.

While I cannot speak on behalf of the other admins, I do have an idea of what I would like to post here. One major motivation for me writing to this blog is that, as an admin, I have unique access to a tremendous amount of interesting game information that nobody else does. Although some of it should be kept secret in the spirit of fairness, a lot of it is information that isn't secret; it's just hard to get out there. Nobody seems to talk to me on instant messengers except my fellow admins, and most people seem to regard the helpfiles as completely unchanging, so I cannot rely on them as a medium for disseminating new information. This blogging business fills a nice gap, as it appeals to everyone's secret desire to spy on others over the internet and get insider info, yet people who want to contribute to the discussion are free to do so (using the comment feature which should appear at the bottom of this post). All of you readers can get topical, insider info at your leisure, and can participate to whatever extent (if any) you want.

There are also sometimes new and fun things which us admins get excited about but simply have nobody to share it with, and I hope to start venting some of that here as well. This Project Sacred Spork is a good example; I personally have been working on it full-time (in excess of at least eight hours a day) for a few days now, although it has been in the planning for months now. As it nears completion and we get to test it out to make sure it's all in working order, it's hard not to get excited about it--it's fun, it's fresh, and it's finally taking its final form before our eyes. It won't be long before you all get to use it, and I hope most of you will be as pumped about it as we have been once it hits the game.

Finally, I can also see this blog as being a potential place for us IMPs to let our voices be heard with regards to some of the gossip that we know floats around the instant messages. Although I'll not get into it now, one of the biggest frustrations associated with being an IMP is that we don't often have a way to share our side of things with people. For example, when we ban someone, that person is free to (and usually does) tell everyone who will listen how we banned them for shoddy reasons over instant messengers. I'd say 99% of the people who hear how the IMPs banned _____ for no reason just leave it at that, and never hear the other side of it. Although I don't envision this blog as being a "hall of shame" sort of setup, I certainly can see it as being an appropriate place for us to vent. And, since everyone is free to comment here on what we say, it's a bit fairer than just having us IMPs talk smack about people we banned on a place where they can't defend themselves.

So, for those of you too lazy to read the giant block of prose which preceded this, here is a summary:

  • This blog will be a place for the Dark Risings admins to share our thoughts on current things happening on the game
  • Everyone will be able to stalk us on the internet anonymously and get insider info without us IMPs explicitly knowing it
  • This'll be a place for us to respond to good ideas or common misconceptions that keep cropping up but don't quite warrant a note to all or a help file
  • We might vent here from time to time--but everyone will be allowed to post comments
I should also say that, for the time being, this blog is "unofficial." Despite being the DR Admin Blog, what I post here under my name are my thoughts alone. Unlike the notes I post to everyone on the game, what I post here has not been previewed and approved by the other admins, and my views here may differ from my "official" stance on the game. Don't expect to be able to hold anything I write here against me in the game.