Monday, June 15, 2009

Lag Issues

Although people have always been complaining about lag that originates in their connections, we've started experiencing server-side lag issues in the game in the last few months. While connection-related lag is something you all can feasibly fix (by changing ISPs, fiddling with their wireless connections, upgrading in-home wiring, et cetera), mitigating server-side lag is something beyond your control; it will happen no matter how good your connection is. Fortunately, server-side lag affects all players equally, and you won't find your character dead if a server-side lag spike happens while you're in a fight.

For the sake of appeasing any fears related to this increase in lag, here is some useful information:
  • If you come out of the lag spike and a bunch of text (eg battle spam) dumps out on your screen all at once, the lag is due to your connection. If you come out of the lag spike and only one more round of battle spam happens though, it was a server-side problem.
  • Server-side lag locks up the whole game, including battle, mobs, pk, and everything else. If you're in PK and there is some server-side lag, your opponent feels it just as bad as you do--the tables will not be turned on you. Connection-related lag, though, can be fatal.
  • Similarly, you aren't going to die if you're fighting the hydra and the server locks up momentarily. The fight itself locks up, so the hydra isn't hitting you while your screen is frozen; the hydra is frozen up too. While it can be unnerving to have your screen freeze up mid-fight, if the problem is on the server side, the fight will resume as normal when everything unfreezes. There will be no catching up on battle as there would've been if the lag was due to your connection.
Thus, if your connection is usually good and you notice your screen freezing up momentarily, for the most part you don't have to worry about anything bad happening to your character.

For those of you who are interested in the technical details, this server-side lag is due to the server on which we run being momentarily overloaded, an effect similar to when you run too many programs on your computer and you get the hourglass icon for a few seconds. Dark Risings runs on the same server as a number of other muds, and if one of them reboots, experiences some nasty bug which causes them to go rogue, or does anything which momentarily strains the server as a whole, we can feel the effects of that in the form of a lag spike.

Unfortunately, these server-side lag issues are something we will all have to just put up with for the time being. Dedicated hosting solutions cost between 3x and 4x as much as our current hosting, and our current costs are already about as much as we can afford without relying on some sort of revenue (donations, fees, et cetera). However, there is light at the end of the tunnel--our server is due to receive a hardware upgrade in the coming months. If this upgrade will include moving to a SMP (multicore) platform, the server-side lag spikes should go away almost completely.

Thursday, June 11, 2009

Trouble Logging In?

If you're having trouble logging into darkrisings.com 1313, redirect your client to titan.mudmagic.com 1313, or 70.85.106.90 1313. All three are the same thing, but the last two should work for everyone. Sorry for the inconvenience! Hopefully we can resolve these technical difficulties soon.
<3
S

PS All technical difficulties are cleared up now, thanks your patience :)

Monday, June 8, 2009

Operation Sacred Spork

Phase six of Operation Sacred Spork has finally been concluded, and we're pleased to announce the templar class is finally live! We've been thoroughly testing it for the last couple of weeks and as Parviane said in his last change, we're skipping any "testing" stages as we're fully confident the class is nicely balanced, and will perform great. In terms of player kill, I've had a lot of fun testing this class out and am really interested to see what kind of combos start to turn up; I found that while heavy HP is tempting with them (as they are a fighter variety) the speed of their spells and costs really make heavy mana a necessity. They respond really well to turn around situations which is in the same vein of strategy as a cleric, but with a wildmage touch of chance. Inquisition you can fire off enough to really make the best of a bad situation, but the hp it eats just makes it that much scarier; I'm curious how people will use these... lots of noexits? Less? I'll be watching you guys spar and PK so make sure you aren't slacking >:D

It isn't in the help class tables JUST yet, so just to make it accessible to ever one the stat bonuses are +2 to con, and +1 to wis.

TEMPLARS AREN'T PALADINS! I've already heard this tossed around a lot and I can see how it's easy to think that with the similarities in RP, but this is a class unique to DR that has been constructed to operate very differently (not to mention that we have three different types of Templars, that aren't necessarily "good" "evil" or "neutral"). Warrior-Wildmage-Cleric is what we've described them as in a pinch, like I said... unique class, unique way to operate >:). Really I guess... you just have to try them out to see!

EDIT-

By the way everyone, great work on the voting! We've secured and maintained our number ten position and finally made our way back to the top ten muds. I can't say how impressed I am with the dedication of our pbase, and I really hope you all keep up the great work, this is sure to bring in some new faces. I've had some staff mention to me recently that they're really interested in what the players have been thinking about the changes to the game, so I'd love to see some new reviews on TMC if anyone has time or desire too.

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

Friday, June 5, 2009

Reboot

We rebooted this afternoon and a couple of large revisions to portions of the code went in. Most of these changes should be completely unnoticed by you all, as they were aimed at restructuring the internals of the game to make future changes a bit easier to make. One major revision, though, has resulted in the 'practice' list now being sorted alphabetically by spells, then skills. This should make it much easier to find certain spells or skills on your practice list as you spam, practice, or whatever else.

This process of restructuring the master skill and spell table had some unintended side effects which we quickly patched up before the revision went live. While we're pretty confident that everything should be fine now, if anyone notices anything clearly weird with skills or spells now (such as you clearly missing some spells you had before the reboot, or certain objects in the game no longer having spells on them which they should have), I'd like to hear about it. Most of these anomalies, should they occur, will show up on my screen before they show up on yours, and so far the game has shown no indication that anything went awry. Thus, I don't expect to hear any bug reports related to this most recent reboot for now, and hopefully the number of people crying wolf will remain low.

I am posting this to the blog rather than as a note because I don't think the changes that went in with this reboot are important enough to bring to everyone's attention.

Tuesday, June 2, 2009

New Arcing Quest Series

I wanted to say thanks to everyone who participated in the quest last night, and to say that if you're not involved yet, find a way to get in on the action. It's not over yet, and things are going to get very interesting >:)

It's been a while since I did a series of arcing quest -- the last one was the Golden Knights quests for which the winner got a complete set of matching questeq. They're a lot of work to put together, but the combination of having an awesome admin team to scheme/work with and terrific mortals to RP with makes it a lot of fun, too.

The grand prize for this isn't going to be a set of jacked-up eq, but there will be prizes for each individual quest within the arc (last night's prize was a jacked-up held container full of goodies including a multifaceted gem), and the prize for the finale is going to be BIG.

When will that be? Stay tuned, get involved, and find out :D

<3
S

Monday, June 1, 2009

TMC Rankings Reset

This morning The Mud Connector reset its rankings, putting us back at an arbitrarily low ranking on the list. My guess is that they've started doing this every other month (or every quarter?) so that gigantic muds who have short-lived voting drives can't stay at the top forever without sustained voting. That can be good and that can be bad, but what's nice is that the playing field is even. As of this morning when I checked, we were already ranked at #7 with 15 total votes, but I'm sure we'll need to do better than that to maintain a solid lead.

Our officially stated ranking is updated only once a day, so today's rank of #1986 is really what we were ranked when we had zero votes (which is the same number of votes as every other mud) this morning. You can check the up-to-the-minute rankings here, and you can vote for us here.

Vote for Our Mud on TMC!