Sunday, December 28, 2008

Bots

Looking at the recent keyword search terms, I've been finding some unusual entries. One in particular has been more persistent than I expected, and can be summed up as "bots for Alter Aeon".

I don't know who is searching for this, but from what I can gather it might be a spider looking for game cracks or cheats. So, I honor said spider by giving it a new article on the topic:

A Guide to Bots and Botting for Alter Aeon

If someone thinks it's important and it drives traffic, who am I to complain?

Friday, December 26, 2008

Propaganda followup

Something I noticed today and put into proper perspective for the first time was the groupings of the various search terms people use to find the Alter Aeon web pages. The bulk of the search terms boil down to three categories - people looking specifically for Alter Aeon, people looking for muds and text rpgs, and people looking for blind-friendly games.

The first group, people looking specifically for Alter Aeon, I can only assume is almost entirely existing AA players. There's not likely to be much I can do to increase that without increasing the playerbase itself.

The other two groups are smallish categories of people that are likely to only be a niche market at best. These two categories are also smaller than the main category of existing players looking at the web site - that's no good at all! The obvious realization is that I need to push the game into other markets; my plan in the short term is to try to push into the MMO/MMORPG acronym space and see if I can't get listed with more conventional games. Having the client download will help tremendously with this, as it starts to look less and less like a MUD, at least on first glance.

I'll keep things posted here regarding how well it works.

Propaganda

After several weeks of doldrums and lack of incentive, I finally appear to be in the mood to do something useful. Maybe it's because I changed coffee yesterday.

At any rate, it appears that after multiple months of updates and additions, the Alter Aeon web site is finally starting to see more traffic. The site itself is pretty comprehensive and useful, but the big problem is PR: I'm abysmally bad at it, and I'm pretty sure I don't have the personality for it. But no-one else will do it, so I have to get better or go nowhere.

I've done some of that over the last week or so, off and on. I got the pages listed in a handful of new locations, as well as some general entries at places like gamerdna.com. This stuff is the real secret - having the best, most useful web pages in the world won't help, because at its core I'm trying to sell something people don't really need: entertainment.

Things are different if you're selling people solutions to problems, like the SEO websites. The winning formula for an SEO company is to simply provide a lot of useful information on how to solve SEO problems, all the while mentioning that it's cheaper to hire an SEO expert in some cases.

The winning formula for a game is very different, in that you have to convince someone that your game is more entertaining than what they currently have for entertainment. Further, because there's so much entertainment around already, you have to actively push it instead of waiting for people to find you.

At any rate, I have done some active pushing, and hopefully it will pay off in a measurable way. If I could get even a small consistent increase over time, it would do wonders for my motivation.

Saturday, December 20, 2008

Client updates

A whole bunch more client changes went in today, including getting the buttons on the right side working and making the view menu functional. Mouse click events in the main window also work right, and you can change the font at runtime. As usual, the client can be found at:

http://dentinmud.org/TinyAeon.exe

The next set of changes will hopefully involve turning the rather plain direction buttons into a compass that dynamically displays the exits from the 'autoexit' command. I also have a pretty decent bug list that needs to be taken care of, but not much in the way of showstoppers for release.

In other news, I found a handful more places to submit AA for promotion. It's funny how you can think you've tapped the market out and come back later to find loads of things you've missed. I really should try harder to stay on top of the propaganda campaign.

Wednesday, December 17, 2008

People will be jerks

A lot of my players use a piece of software named 'Jaws', which is a screen reader for blind and visually impaired folks. Now it turns out that the guys who work on Jaws are either not real bright, not real dedicated, or simply short on funding - but either way, they have a serious problem on their hands and they don't appear to care in any way:

Certain words crash Jaws.

That's right. The very act of reading certain misspelled words no longer than 6 characters kills Jaws dead. Dead as in silently wonder why your computer has stopped talking to you, futz around hoping that you've tabbed to the right console, and try to restart it. Or blindly (sorry about the pun) hit control-alt-delete and pray for the best.

Normally, you'd very infrequently find words like this on professional, static websites. More commonly, you'd find it on boards and blogs. But when it comes to an on-line game, it becomes a serious issue.

Which leads to the title of this posting: people are jerks. My poor blind players have been having a hell of a time with this - especially when a particular jerk player makes use of it because he finds it amusing.

While none of this is technically my problem, my players are unhappy, and that makes it my problem. Therefore, 1) siteban lists now save across reboots to take care of the jerk player who quite frankly can find some other mud to annoy, and 2) the socket layer has a new filter to mask out the problematic letter combinations at the source, hopefully killing the problem for everyone.

Tuesday, December 16, 2008

Even more client

I figured I'd leave a quick link to the client for people to take a look at. This is about a plain-jane of a client as one could expect; it connects to the game and it's better than the old PuTTY client, but not by much. I'll hopefully be adding the buttons and other things to it in the next few days, then automapping code after that.

It can be found at:

http://dentinmud.org/TinyAeon.exe

I've also started sorting the client versions by date in the downloads directory, just to keep a copy of all the relevant versions going forward.

Monday, December 15, 2008

HTML logfiles

I managed to get the logfile save routines working in the AA client tonight. The text version is trivial, but the html version was harder; nevertheless, I have an initial (buggy) implementation done, and you can see the output of it here.

[Update - the various minor bugs have been fixed and the logfile updated. It's now HTML 4.01 transitional compliant.]

If you look closely at this, you'll notice a number of bugs of various kinds: it's not W3C compliant, uses tags that are probably obsolete or nearly so, and doesn't escape important characters like <>. These are all minor inconveniences compared to the inconvenience of using this toolkit; the file selection dialog has so far been the only thing about this port that has been relatively painless.

Next on the hit list is to fix these issues, then try it out on the windows laptop to see if the screen reader part of it works. I'm going to try to get a usable blind-friendly client out first, then work on the pretty graphics part later.

Ok it makes sense now

Today was the day for success. I finally got the quit and disconnect dialogs hooked up in the client, organized the way I wanted, and started working on the logfile saving routines. This might take me a little less time, but there's an addition I want to make: logfile save to html with inline CSS.

I was thinking that this could be done really easily with the way that the rendering engine is set up, and further it could produce nice beautiful html with AA image headers. Something to think about at any rate.

Thursday, December 11, 2008

This makes no sense

I finally got up enough incentive to put in time on the client, and as a result I got a fresh dose of why I avoid working on it: this toolkit makes no sense.

Or rather, it does make sense, it's just not documented. You pretty much have to figure out the internal state of the system from examples and experiments; this is very different from the QT tookit, which while a pain in the ass, at least was comprehensive.

So for my time tonight, I have a dialog box for logoff/disconnect/cancel that looks correct in the Linux build. I don't have any of the buttons hooked up, but that's a bit more straight forward. There's a handful of these dialogs that I need to build, so getting even one of them figured out and working properly is a huge step forward.

My current plan is to get the dialogs and history save working, then try to get it working with the screen reader on the laptop under windows. I hope I can get it working at least as well as other clients, so I can offer a preconfigured, functional client for the blind as well as one for sighted people.

One final note: I thought I had the dialogs and sizers figured out, and went to move the dialog out of the main window and into a subwindow. Shows what I know! Doing so broke the entire layout in weird ways I've never seen before. Clearly I don't understand what's going on yet.

Sunday, December 7, 2008

I have returned!

After a rather hectic two weeks of travel and insane hours at my old workplace, I am finally back and catching up on Alter Aeon related work. The first things to take care of were various submissions and contributions from you, the playerbase (and godbase.) Thanks to everyone who sent me something; I'm churning through it right now trying to figure out the best place to put everything.

I've got some of these up already; in particular, a three-page guide to creating and being a tank, posted by Shadowfax, and a whole bunch of feedback on the newbie island thanks to Morpheus.

I also have an experimental audio walkthrough of the Outer Planar Ice World. This was really interesting for me to listen to, and gave me a view of the area from the outside that I don't normally get. Hopefully I get more of these; I'd be happy to host them on the server for blind and other people to use. If anyone wants to record walkthroughs of other areas, send them to me and I'll take a listen.

Saturday, November 29, 2008

Thanksgiving system event

Today, I ran what I call a 'system event', which is basically a special event put together by a god to entertain players. I've been trying to do one of these a month, but I almost forgot this one completely - I was only reminded of it a few days ago, and had to throw something together quickly. Fortunately, I have an excellent girlfriend who doesn't mud. As a non-mudder, she is unpolluted by ideas of what can and cannot be done.

This clearly needed to be a thanksgiving themed event; but what to do for it? A turkey hunt is a staple part of thanksgiving events in general, but I wanted to add other things too. She started proposing oddball stuff from real life. And I started thinking about how to implement it.

So, for this event, we had a pie throwing contest (using the throw skill), as well as a turkey carving contest (using the butcher skill.) I had to make some minor code changes to get butcher to work properly on non-corpses and to allow me to construct butcherable food, but beyond that pretty much everything worked right out of the gate.

Running the event itself was as usual, hectic. It always takes at least fifteen minutes to get into the groove and get the aliases set up that you'll need to manage things properly. In this case, with three different things going on, it ended up being more work than I expected, but it still went off with only minor hitches.

Anyway, the real reason for this post is to talk about code support for such things. Special events by their very nature are hard to anticipate code for; it's also important not to sacrifice the normal operation of the game by changing the code just for the event. But I do have to say that compared to previous events, this one was pretty easy to run. Simply by running them periodically, I'll both get better at it and I'll feel the need to add commands that make it easier to run them in the future.

Creating a web page for the final event prizes and information is definitely becoming easier, though honestly the content in those pages doesn't exactly require a lot of mental effort to put together. For the list of events I've built web pages for, check out the events page at http://dentinmud.org/events.

Hopefully I can come up with something interesting for Christmas/New Years Eve in the next month.

Monday, November 24, 2008

Melee fighting

While talking to various people over the last few months, a couple of fundamental combat related ideas have come up. Today I'm going to talk about thieves.

In a lot of fantasy/D&D style games, thieves are really just another fighter class, with different fighter skills and less armor. Alter Aeon has traditionally not been much different, and I find that less than ideal. Consider:

Mages - damage casters, inflicting damage from afar using spells.
Clerics - healers and miscellaneous support for fighters.
Warriors - tanks and heavy hitters.
Thieves - light hitters and occasional backstabbing.

It seems to me that thieves really get the short end of the stick here. Not that they can't fight, but pretty much the only thing that sets them apart in combat is the use of backstab as an opening attack.

This seems contrary to the whole premise of thieves - that they use cunning, agility, and other weirdness to accomplish tasks in unusual ways. Yet Alter Aeon is in large part constructed to have only a single track for accomplishing tasks: kill the mob. The option to just steal or 'liberate' a particular goal isn't even available in most scenarios.

This isn't to say that AA is alone in this area. Most games fall into this trap, because it is the easiest way to do things, and because coming up with general ways to handle specific scenarios is difficult or very time consuming.

I don't intend to address all of this inequality in this post, but I believe that I can address one aspect of it: how thieves handle combat. Mages blast, fighters fight, clerics heal. All these tasks are pretty straight forward. But what should a thief do to be different from 'just another fighter'? One answer I've come up with is this: thieves spoil the fight.

A good example of this would be the 'trip' skill. Tripping something small is no big deal, but suppose you and your group are fighting a twenty foot giant. Casters are doing their thing, fighters are doing their thing, but all of this is really setup for the thieves to get in place: suddenly the giant goes down face first, making things much easier for the fighters and casters.

Trip is the most obvious 'spoiler' skill, but plenty of others could be found. There may also be special defensive skills for thieves to allow them to temporarily be in danger - perhaps an enhanced dodge that can give a thief a very good chance of getting alive out of a sticky situation - but only effective for a handful of hits or a very short period of time.

With this in mind, I may be adjusting the various thief and warrior skills to push things slightly in this direction in the future. Ideas?

Friday, November 21, 2008

Miscellaneous Update

I have been a bad developer, and have not posted recently. Part of this is due to things going on in my life, but more of it is due to lack of incentive on my part. I seem to have cyclical swings, and if I follow the historical pattern I should come out of it here in a week or so. But enough about my problems, let's talk about the game!

Of the major events recently, I'd say the biggest two are quicker movement regen, and the str/dex changes. The movement regen change is really only a net improvement of about 25%, but the important part is that it regens on every prompt instead of every tick. For new players, this is absolutely critical; nothing sucks more than being one step away from a safe room and unable to walk there for the 30 seconds it takes for another tick to hit. It changes the newbie game from a 'move a few squares then rest for 30 seconds' kind of game to a 'move more slowly through a few squares and look at stuff' kind of game. It's definitely more pleasant for me when I'm playing, and I've gotten similar remarks from pretty much everyone else.

Strength and dex are another matter. Several very vocal people have already complained, though since I was expecting it, it bothers me less than it initially did. It also helps that nearly everyone who is complaining has already figured out how to change equipment with the least amount of damage. There are also a handful of people who dislike the change because they feel it hurts their characters, but at the same time see the logic behind it and support it. In their view, it affects everyone equally, so it's fair if nothing else.

I only put in the first stage of str/dex in this last update. This limits the spells to +6 and widens the range of boosting to +8, flat across the board. (It used to be +5 or higher depending on how low your natural stat was.) In February, I plan to lower the limit to +5, and in may to +4. I don't think I'll raise the boost range, as it seems to me that +8 is probably sufficient. I'll have to collect more information on this going forward.

One minor change which is actually pretty major is a sort of 'freak' multiplier for randoms. It's just a single line in the changelog, but it's actually a pretty big deal from an equipment standpoint - it's like getting a really kick-ass unique in games like Diablo II. There's four different levels with about a 1 in 8 chance for each successive level. Each level adds 30 composite points to the total, so if you get all four (about one in 4000 odds), you can add nearly 4 hit/dam to the total of the object. Of course, odds are good you'll end up with most of the points going elsewhere, but it basically allows for 'super' random objects to appear from time to time. I don't think this will break the game, as it will be much harder to accumulate sets, and it's much more likely to happen on bound equipment.

Friday, November 14, 2008

Newbie newbie newbie

Today, I spent a couple of hours play a newbie up to level 10. I went through nearly all of the Sloe quest area, including taking out the vampire and going through uffspigot. I did end up modifying a handful of things along the way, and there's still some stuff that's not the way it should be, but in general it was a pretty fun experience.

I also, for the first time in quite a while, got that weird 'this is actually fun' feeling when I was going through the first part of a new quest Morpheus has been adding. I never really thought that side quests would add a lot to it, but they really improve the feel of the game, and give it a real feeling of depth. I'm going to have to add some more stuff in here along these lines, it's just a matter of coming up with ideas.

(Regarding ideas, this is a reminder to myself to put Varjojen Vir, the Winter Wolf, up in the 16400 rack of northern Ash Mountains.)

The game play was really pretty balanced up to level 10 once I lowered the level of a couple of mobs. The waypoints even seem placed at reasonable locations. One thing I really did notice though is that having to go back to camp to level and learn skills was really quite problematic, because at these levels you might be able to gain five levels in the time it takes to complete a quest (the vampire quest, for example.)

One possible solution to this that I'm kicking around right now is to allow people to level up to ten or so without a trainer. This would make gameplay less interrupted by the need to return to camp and fight your way back to wherever you were. The skills are less important than the levels in my mind.

Either way, this is coming along nicely, and seems more playable every time I go through it. It really needs a few solid 8 hour days dedicated to it to get it ready for prime time; perhaps I'll start doing some of that on Sunday.

In other news, the new client has been on hold for a few days while I take care of other things. This morning, I used the 'upx' executable file compressor on the existing AA client, and managed to shrink it down from 8 meg to just over 2; this should make the downloads much more reasonable for people. I'll watch the client download stats from this point forward. It should be interesting to see if changing the download size actually results in more downloads.

Also on Sunday, I hope to boot in the new intro screen code, warts and all. It should be easy enough to revert if there's a problem, and the best way to find bugs is to open something to the public.

Thursday, November 13, 2008

The scourge of organization

I spent most of today doing web page cleanup and reorganization. For starters, I got Smith's Glossary of Mudding Terms edited and put onto the article pages. After that, I started thinking about the internal organization of the article pages, and how it basically sucks. All the links have to be added manually, and the metadata about the documents is pretty much only present in the document and copied as necessary into the manually added external links.

So in response to this, I built up a primitive document management system for the various articles. The new version can be found at http://dentinmud.org/articles. I wrote it all using shell scripts, and the various versions of the pages are built from a text file database.

This was partially driven by the idea that without a quick and easy way for people to see updates, there would likely not be any recurring traffic to the article pages. Also, it would be nice to have a categorized list, and possibly author sections. So the first things I built with the management system were a categorized listing, a date-sorted listing, and an author sorted-listing.

While looking at these pages, you might notice that the formatting and section headers are inconsistent. I've been having real problems coming up with a consistent way of breaking up and displaying subsections in the various pages; if any of you readers have any bright ideas on things to try, I'm up for it. There are a lot of pages where there are several major sections, each of which should be marked with its own sub-header.

In code news, it only took about two hours to reorganize the intro screens so that the name and password come later in the character creation process. That said, I totally do not trust this code. I've never had intro screen code boot in without at least one bug slipping through, and this was a pretty substantial reorganization; on top of that, I was tired when I did it, so I probably missed something super important. I'll try to debug it later, though I'm pretty booked up for this weekend and probably won't have time until Sunday.

The title of this post is not so much regarding some scourge that is preventing organization from happening so much as the scourge that is organization itself. I have this urge to organize a lot of things that perhaps don't need it; these web page articles may fall into that category. On the other hand, when I think about how I need to have about ten times as many articles as we currently do, it reminds me that the work I put in now will save me vast amounts of time later.

Wednesday, November 12, 2008

Article - how to pick a god

After some pestering by Lexie, I finally managed to get to her 'How to Pick a God' article, which is now posted on the main AA articles page. She might yet disown it, because my sense of style demanded that I modify it quite a bit; but I think it's a decent article on the topic.

The regen changes from last night went in this morning, and appear to be almost universally liked. Playing as a newbie, it certainly is more palatable than the previous. I should consider switching over mana regen and hp regen as well, but probably not for a while.

If I get time tonight, I may make the previously mentioned dexterity and strength changes, as well as begin breaking up the intro screens.

Tuesday, November 11, 2008

Newbies and login screens

Today, I was overcome by the urge to do newbie cleanup. Perhaps I've been spending too much time looking at the dropout statistics from the character creation process. Maybe it was my gods bugging me to get to things that I should have done last week. Maybe it was the coffee I got in the afternoon; that always seems to give me incentive, though it's bad for sleeping.

I ran up a newbie thief character, and got no farther than the cave system before I had my first major thing to fix: movement regen. Movement regen sucks, in that you run out and you have to wait an arbitrary amount of time to be able to go anywhere, even if you only want to walk one room to a safe area so you can sleep. Some brainstorming with myself and an hour later, we now have continuous movement regen. I'm going to boot the code in tomorrow morning.

I originally planned to halt movement regen completely if the character was lagged or melee fighting, but after fighting a bit and running out of movement, it occurred to me that I would -never- get back any movement and might not even be able to flee. Now movement regen is just cut in half while fighting. Regen from equipment or spells isn't affected by this though, in that you always get full regen from effects-based regen.

The other set of changes I made was some relatively minor reorganization of the intro screens. I created an 'Obsolete Options' menu under the 'Advanced' menu, and moved the old login points as well as different ltype selection there.

I plan to make some real changes tomorrow, in that I'm going to move the name selection process to much later on, put email address and some other things in the main menu, and start character creation immediately on connect. The final process will probably be along the lines of:

Create a new character?
Are you blind?
Pick your class
Pick your sex
Existing player/how did you find us
Name selection
Password
Login menu

This should remove at least one screen from the process (the email screen), and hopefully will get people involved in creating the character before they get to the high-dropout phase: name selection. I suspect this will raise the retention rate for new players by probably around a factor of two. Hopefully the stats will bear me out on this.

One other thing I may do is put more character creation options on the main menu, or even prior to name selection. I should probably have Locane come up with an automatic description system as well, so people can pick eye color and the like to get an autogenerated long description.

Monday, November 10, 2008

Status update

I have been lax in my updates recently, but some small amount of work has been going on anyway. I spent a lot of time working on the client code, which has been a complete pain in the ass. wxWidgets is a portable gui toolkit, but it's also grossly inconsistent, poorly documented, and fundamentally broken in certain ways. That said, it has enough advantages over the QT toolkit to justify switching. It's just painful.

One of the nastier sets of issues I've run into is getting scrolling and font size changes to work properly in a wxTextEdit. In the case of the scrollbar, I manually determine the character position of each line and apply direction hysteresis to scroll up or down using the function keys. For font size changes, I basically clear the buffer and rerender the whole thing. Both of these are trivial operations under QT. Further, the QT documentation is much, much better.

That said, QT is bloated beyond belief, and the licensing is going to be problematic for what I want to do in the future. But primarily, it's the bloat factor that is the biggest problem. With the new toolkit, I can get executables that are around 20% as big as the QT client.

Right now, I'm trying to get dialog boxes working, and it's -really- unclear how these stupid sizer objects are supposed to function. I have it displaying a disconnect dialog right now, but I can't figure out how to place text in it, put the buttons in the right place, or hook anything in it up. I may have to go digging through sample code to get it to work right.

Thursday, November 6, 2008

Software Complexity and Human Limits

As you might have read from other posts here, I've been working on a gui client for Alter Aeon. Gui code is fundamentally different from what I'm used to working on, in that it has loads of function pointer handlers and 'virtual internal state' that is mostly held by which objects are instantiated and what they're presently doing. At its lowest level, this can of course be represented by a perfectly ordinary state machine, however these state machines are fairly large and the state it's currently in isn't always obvious.

[As a side note, I do work in FAX software in my off time, and this also has some pretty huge state machines. However, those state machines are really well defined in one central location, and it's much more obvious what's going on. Even saying that, I still have a hard time with those.]

While working on this client, I quickly lose track of what needs to be done and how the states work. The client itself is big enough that I can't remember everything that is in it; and after not working on it seriously for almost two years, I had a lot of trouble getting back up to speed.

A good part of this is that the code itself was basically built from the ground up, and then never cleaned up by a maintainer. Maintenance is more than just adding a button here or there and fixing minor bugs; maintenance of software means getting in there and saying "why the hell are these drawing functions intermingled with scroll locking?", then moving things around so it makes more sense. A good example of this is the button system, the entirety of which is contained in the main window implementation file. This serves only to clutter up the main window implementation, and further make the button code hard as hell to understand.

So I've been doing the proper thing and moving functions around, grouping them by functionality, and trying to make useful classes on the side where I can hide details. But even so, I can tell that my standard way of thinking about and writing code is showing signs of strain. Much like I'm having to retool my picking technique on guitar, I need to retool my brain to handle this kind of abstraction better.

I don't really need any advice or recommendations for books here; I know where to find that sort of thing if I need it, and I've done this enough to know when I'll need it. I even know conceptually how to approach this kind of problem; I think I'm just currently bad at it. Fortunately (or perhaps unfortunately), there's a lot of work left to do on this client, so I'll get lots of practice.

Gui client update

I've been working on the client, and as part of my foray into using a new gui toolkit I've learned the joys of incompatible toolkits. My latest problem arose with regard to the main display text window. There's two options for this:

1) use the standard system provided window type that has screen reader support and fewer features, or

2) use the custom window type that has way more features but doesn't read properly.

So, I've been trying to make the standard window type work, and it's been problematic. One thing in particular is that I can't easily go back and just change the one aspect of the style in the window; for example, I can't just change the font size without recoloring the whole damned thing. As a result of this, I spent most of the morning cleaning up and building a renderer that saves everything ever sent to the window and redraws it if necessary.

Another side effect of this is that I can't change the text background easily when window scrolling is locked. For now, I just have the window background changing, which is actually starting to grow on me - you can obviously tell that the window is locked, and the text keeps its high contrast. It does look a little blocky in certain areas though.

I don't have any of the intercession windows built (like the 'do you really want to disconnect without logging off the game' window), and I've been avoiding button handling like crazy. I'm getting down to where I'm going to have to start doing that in the next couple of days though.

On the schedule for this afternoon (if I don't get interrupted) is logfile saving, and the parts of the 'view' menu that make sense.

Wednesday, November 5, 2008

Articles and other stuff

Recently, I managed to get two more articles up. One is from Lexie/Ilex, and is targeted at helping low level players make the most of their regen time.

The other I'm more proud of, because it's something I actually wrote (instead of just editing.) Mine is on high level attack strategies, and lists some of the weirder things I've seen and used over the years.

Doubtless the players have seen many more than this; if you think something deserves to be added, let me know and I'll consider it for inclusion.

In other news, the client continues on its merry way. I got the help menus working properly last night, and today I had intended to work on something easy yet important, but I can't remember it right now. I'm somewhat afraid of the buttons, because those are going to be drastically different on probably all architectures. I need to find a way to handle those so they're pretty everywhere.

Monday, November 3, 2008

Google Click Fraud Update

I just got an email back from Google saying that they have re-evaluated my case based on newer information. Apparently the site that got me started getting a lot of other people too, and eventually Google was able to put together enough evidence to prove it and take care of it.

I suspect they have a multiple-tier system for handling this sort of thing, so that even though you might be ignored at first, eventually things get straightened out. Anyway, looks like things are back to normal.

But I'm still not comfortable using the content network.

Miscellaneous Update

I've been lax over the last few days with regard to getting much of anything done. On the plus side, Morpheus ran a system event for Halloween which the players seemed to enjoy. It was hard on him though, as there were some hitches (including a minor problem with teleport not working on the magic pumpkins), but everything worked out in the end. I should have the event log and notices up in the next few days.

In other news, I'm going to start making changes to the strength and dexterity spells. I haven't decided some of the more important implementation details, but hopefully I can come up with something that doesn't generate a lot of fallout. There was a lot of resistance from a handful of the higher level players.

Personally, this kind of resistance makes the game a lot less fun for me. I feel the urge to walk on eggshells all the time, and I further feel like the only changes I can make are those that make players more powerful - anything that involves a minor nerfing of player power, spells, or equipment immediately generates craploads of hatemail. Such is the life of an implementor - balance the needs of the game against the fun of the players, and hopefully manage both.

It's all the worse in that sometimes I find (or more often finally get around to) fixing something that is broken, only to find out that two thirds of the players use it religiously and are willing to raise hell if it's removed (or fixed.) It can really cramp your ability to get anything done if you actually care about the player base.

Wednesday, October 29, 2008

Fighters and stats

I was looking at some warrior characters and the issues that they have to deal with this morning, and I have come up with an indecent proposal on how to change strength and dexterity so as to make them 'more interesting' and more useful. This came about due to recent changes to the strength and dexterity spells, which screw warriors and thieves harder than I had expected.

Part of the reason strength and dexterity have come out so low on the equipment totem pole is that there are spells to compensate for it. Why should a builder bother to build equipment with strength and dex on it, when those valuable composite points could instead be used on stats like int and wis? After all, you can just use the int and wis to cast and maintain strength and dex spells.

With this in mind, consider the following two changes:

1) Limit strength and dexterity spells to a maximum of +4 boost.

2) Raise the boosting limit for strength and dexterity on equipment to +10. If you want 30 strength, you only need a natural 20 to do it, if you wear strength boosting equipment. Spells alone can only bring to to 24.

As an example, you could have 20 natural strength, add 6 through equipment, and 4 through spells to get 30 strength to wield a special sword.

Again, the reason for this is primarily to change the way that builders build equipment. The strength and dexterity stats on equipment are ill-favored, because they're so easy to replace with spells. Allowing stats to be able to do something that the spells cannot should tip this balance.

The only down side of this is that it will take some time for this to percolate through the equipment lists, and it will take time for equipment to be updated. In the short term to help bridge that gap, I would propose that the spells be limited to +5 instead of +4, with a temporarily lower casting cost. After 3-6 months the limit would be lowered to +4, and the casting cost slowly raised back up after that.

Any feedback on how you think this might be broken would be appreciated.

Tuesday, October 28, 2008

Custom Clients

Today was a productive day porting/rewriting the old Alter Aeon client to a new toolkit. I've run into the standard types of weirdness (such as resize not working properly and inability to change the font in an input window), but in general things are going pretty well. I was able to connect to the game and talk to people with it today.

One thing I never really understood was just how much code is in this thing. There's a -lot- of little detailed things that consume time and code space. It's these little things that make it such a good (if boring) piece of software; from the main window changing color on scroll lock to global font size changing. So while the client is currently usable, it will be a long time before everything is properly ported and functional.

In the short term, the goal is going to be to duplicate as much of the previous functionality as is reasonable, and re-release that version as being 'improved', even if it's just a smaller download size. Once this code base is stable, I'm going to rip up the automapper and see about adding in the various map based things I talked about in previous posts.

At the current rate of improvement, it's likely that I won't even be to a re-release version for probably a month.

Monday, October 27, 2008

Logins and players and statistics, oh my!

I just pulled some stats for the last few days and did some crunching on them. I need to do this more often so I keep in mind where the easy gains are to be had, and how to be more productive with my limited time.

These numbers are with a pretty pessimistic stripping to eliminate existing players, and to try to only take into account totally new players.

182 + 19 = 201 total newbies

19 (9.5%) of incoming connections resulted in a saved newbie. Of the unsaved players:

182 unsaved players
29 (16%) made it to entering a name
24 (13%) made it to login

-------------------------------------------------------------
People using the dclient did a bit better:

36 + 12 = 48 newbies using the dclient

12 (25%) of incoming dclient connections resulted in a saved newbie, instead of 9.5% from other clients. Of the unsaved players:

36 unsaved players using the dclient
13 (36%) made it to entering a name
13 (36%) made it to login


It doesn't take a rocket scientist to gather from the above that improving the login screens and mechanisms could easily double the number of new players in the game. I've been meaning to rip up the intro screens anyway and reorganize things, and now I have a bit more incentive.

Samon's idea of getting the client improved and more widely distributed is also a good one.

Thursday, October 23, 2008

Google Adwords Click Fraud

The final verdict on the Google Adwords click fraud incident I encountered a few weeks ago appears to be "declare it not our fault and have the customer eat it". I don't really blame them for not handling everything perfectly, but this is such an unusual circumstance that I have to believe they would pursue it harder.

Or perhaps its common to them, and only unusual to me.

Either way, I will not be using the content network in the future unless I restrict it very, very heavily. I might not use it at all - it really didn't bring me many decent hits anyway. I've hardly noticed a difference in the download numbers since it's been off.

My recommendation: the main Google search listings are fine, but avoid the content network unless you're willing to get bitten occasionally. I'll definitely be recommending caution with the content network to anyone who wants to listen to me.

More client stuff

The original version of the Alter Aeon client was a modified version of PuTTY, one that autoconnected to AA on startup. This was created by a player named Andres, several years ago. A lot of people don't like this client, for a lot of reasons.

So about three years ago, I set about creating a gui client. Using QT, I managed to put something together that isn't terrible, but isn't great either. On the down side, the QT license requires source distribution, and I'm not entirely keen on that, at least not for what I'm trying to do.

Not that I'm against open source, it's just not for everyone. I'm trying to build a player community, not a code community. Think Skype, as opposed to Apache. I definitely recognize that open source has a place.

I would probably have been fine with the source distribution of the QT version were it not for one minor issue: the old version of the executable is 8 meg. With new libraries, that size balloons even more. The download size really turns me off.

So I've been looking at and experimenting with a couple of other toolkits. So far, I have Foxlib and wxLib as candidates. Wyvren espouses Foxlib, but in my short time working with it I'm starting to think that it's probably just not what I'm looking for. wxLib is currently on the hit list, and I should know if it fits the bill in a few days.

One thing I have learned is that I'm really calcified and I hate learning new things. Or rather, I hate learning toolkits. I just want to get my work done; having to spend three hours looking up why a resize function doesn't work (then discovering entirely by accident that windows are created with resizing disabled by default) does not make me happy. One of the reasons I'm abandoning Foxlib is the lack of documentation.

I pawned off the room mapping stuff to Locane. Hopefully he'll have something interesting done by the time I need it; I want to hook up the room coordinates to a mapping system in the client so players can more easily figure out where they are and what they're doing.

Sunday, October 19, 2008

Client update

Part of the reason I've been talking about automatic room and area mapping is to improve the AA client. We have a QT based client that works pretty well, but it is fairly crude and primitive looking. We also have issues with new players simply disconnecting instead of trying to learn to play the game, so automapping could go a long way toward helping both.

Most RPG players are used to having an overhead map of some sort, to see roughly where they are. By using the automapper to generate position and placement data, we can integrate overhead maps into the client. At least that's the plan.

I'm researching how to do image handling right now.

Saturday, October 18, 2008

Google Adwords Click Fraud

It appears that after several years, I have finally been bitten by the Google Adwords "click fraud" that I have heard so much about. It only cost me 60 dollars (on about a 36 hour window mind you, I'll explain that later), but it's still irritating.

I discovered this while I was showing off all the neat features of Google Analytics to Fionna's boss last Friday. The first thing I noticed on login was that web traffic was way up due to the Adwords content network, and a quick check showed that the budget for Adwords was completely blown (I have it set to the minimum of 20 dollars a day.) Given that the normal budget is around 2-3 dollars, this was very unusual.

I thought at first that maybe some big gaming site had linked to us, but that doesn't make any sense - adwords doesn't work that way. After some hunting around, Fionna's boss and I found that almost all of the new hits were from china, almost all of them were for very short or zero time, and hardly any of them clicked on any other links. In short, I got a boat load of hits from people who were either totally uninterested, or (as we found out later) simply couldn't read english.

I contacted google, who eventually responded back saying that everything looks fine, and that the traffic was routed from game.7679.com, a valid gaming site. Except that:

7679.com is entirely in Chinese, for a Chinese audience, in China, and the ad that was displayed to users with an astonishingly high click through rate was targetted for blind/visually impaired english speaking players using screen readers.

Does anyone see the problem with this?

The fight with Google is ongoing, and now that I have posted this and cleared my thoughts a little bit, I'm actually more irritated about it than before. Time for another nasty note.

(Regarding the 60 dollar loss - I got unlucky in this regard. I had checked it Wednesday afternoon, and the bogus traffic started on Wednesday night. They hit the site so hard that it ate the entire ad budget in only a couple of hours on Wednesday night, then the entire budget in the first couple of hours of Thursday. I neglected to check it on Thursday because I had other things going; Friday morning, the entire budget was blown in the first couple of hours, while I was sleeping. By the time we discovered it on Friday afternoon, there was little to be done other than disable the content network.)

Thursday, October 16, 2008

Karma V2

Three more articles appeared out of nowhere today:

New Player Words of Wisdom, by the god Morpheus

Introduction to Being a Group Healer, by the player Prisoner

and Starting a New Clan - Advice For Elders, by Ouch.

It's a lot of work editing and formatting, but in the end, good articles all three of them. There's enough of them now that I had to split the main articles page into pieces.

The only down side is that I really don't know how much web traffic, or how much value this will bring to the site. In the end, it's all about value, and how useful the information is to other people. Unless I can get other people to link to it, it might not matter.

Wednesday, October 15, 2008

Karma

A few minutes ago, a well-written article on mana regen optimization appeared basically out of nowhere. A player mailed it to me, and after some minor edits approved by him, it's available on the Alter Aeon articles page.

It's a neat article because it covers a lot of things that mid-level players might not know, and gives an algorithm for optimizing a good part of a mana regen set. There were a couple of things regarding cast level that weren't quite right, but after consulting the code (like I would be able to remember off the top of my head) I was able to drop in some minor changes to clean it up.

It's always nice when people do stuff like this; it makes me feel like I'm not the only one who's actually working on things. There's a huge playerbase out there willing to contribute, they just need a way to do it. This is why Wiki projects are generally so productive, and I clearly need to find better ways to harness it.

If you're curious, the article can be found here and also linked to from the Alter Aeon "Gaming Articles" page.

Tuesday, October 14, 2008

Maps and area layout

One of our players, Woem, mailed me a handful of area descriptions and maps a couple of days ago. I finally managed to get through my email, and have put them online here:

http://dentinmud.org/maps

They're the maps of the Aggerazzi Swamp, the Fire Plane, and the Ice Plane. They're hand drawn, but really well done.

This got me thinking about mapping in general. Muds are particularly difficult to map because of the ad-hoc room linkage and arbitrary room sizes, not to mention lack of sanity checks to detect overlapping rooms. I'd like to be able to do it anyway because people are so visual, but there are some problems.

One of the biggest problems is that building is already so restricted, in that we generally have cardinal directions, without any real ability to place slopes or other such three-dimensional constructs. Another really big problem is that we don't build rooms with any regard for size; rooms just are, and they hold whatever we need them to hold. Further, we can hook them up to anything else without regard for space constraints.

To top this all off, Alter Aeon has over 30k rooms that are -already built-, and over two thirds of those are in working, sane areas. Rebuilding those areas with some (as yet ill-defined) positional features is really out of the question in the short term.

This has brought me back to thinking about automatic determination of room sizes, or at least room positions within areas. Some of this can be done based on terrain types; most individual areas can be mapped pretty well using a simple combination of flags and terrain to give rough sizes. The real clobbering comes when you attempt to glue areas together.

So, assuming I can automatically place the rooms in individual areas, how do we place areas overall? It turns out that we happen to have positional information for most areas anyway, so all that remains is to tie the area coordinates to the room positions within each area. The game can then scan for room linkages where the areas are markedly disjoint, and log it as a typo or bug.

Ta-da! With that, we should be able to correlate the real room position with the real area positions, and while the hookups wont be perfect, it will give us a very good idea of where the worst disconnects are.

Hopefully I can get some time to try this out in the near future. It's probably a handful of hours to do it and get it right, then I can hand off the cleanup to some of the worldbuilders and let them straighten out the worst of it.

Sunday, October 12, 2008

Welcome to the Mob Factory!

Hi, my name is Dentin.

This blog is a place where I plan to talk about code changes, discuss the general state of the mudding and gaming worlds, and occasionally give some insight into how the mud Alter Aeon operates. Hopefully I'll also be able to vent from time to time, so you can get an idea of crap I deal with, as well as see the kinds of things I would like to experiment with in the game.

It will be a while before I understand how all this blogging system works, so give me a bit of time to get the layout straightened out.