LPC
An open letter to DuneMUD
For the past seven or so years I’ve been an active volunteer (note the word volunteer) with DuneMUD. I’ve increased my skill, my responsibility, and the scale of my contributions as I went. I’ve had the chance to learn from a lot of great people and meet a lot of new friends. You might not expect it but you will find my name all over the codebase. I can’t claim to have been the most active coder in the past 5 years, but I’ve certainly been in the top #3.
The time has come for me to evaluate my purpose on Dune, and where I want to be. I’ve climbed as high on the promotion ladder as I’m interested in going, and quite frankly, I’ve lost my passion for the work. There are lots of factors that have led to this, but I’m going to do you all the service of highlighting the core ones.
Dune has survived where other MUDs have long since become ghost towns because we are essentially an MMORPG masquerading as a MUD. That being said, this has also led to my decreasing interest in the playerbase. The MUD persona that I remember being surrounded with and liking to code for has moved on. The players that remain (by and large) are the MMORPG type. This type is interested in very little other than A) PK prowess B) Minimal effort and change. A) is accomplished through gexp gain, and as a result of B), this gain is expected to be easy, repeatable, and universal.
Dune is a numbers game. It blows my mind that the goal of half of the playerbase when engaging in PVE combat is to actually keep their enemy alive as long as possible. The gexp gain is better when you aren’t switching mobs and when you can repeatedly use skills without killing your opponent. Features like CTF are pushed aside as meaningless because they can’t help your gfile. I spent a LOT of time taking any and all feedback of CTF that was raised and incorporating it. Balance between varaible sized players was an issue so I broke my back to create complex systems to alleviate the concern. Player motivation was an issue, so I created a reward/prize system that gave payouts greater than that of the BBM. The point of my rambling is this: you’re boring to code for.
I can easily identify a bunch of issues that are constantly raised again and again by players. Between my own ideas and brainstorming with Mreh and Clutch we even have what I think could be workable solutions to some of the hardest ones. The problem isn’t solving the issues, it’s wanting to do it and knowing that it won’t kill the game. Most of the issues are a result of horrible decisions made by other people long before Mreh, Clutch or myself had the ability to stop them. The problem with this is that they were short-sighted decisions that were almost always enabling in nature. Having been made so long ago, the cat is out of the proverbial bag. To fix the majority of the issues that players seem to want fixed so badly we are by definition going to need to downgrade.
The oft raised issue of “balance“ is hilariously oversimplified by players with no real insight into the mechanics of things. Consider for a moment that Dune was created in 1993, and since that time has been staffed by volunteers of varying age, skill, nationality, and goals. Further, add to the fact that each guild was developed in separate slices of Dune’s near 20 year history. The fact that anything still works is pretty spectacular.
When you start thinking about things like this, you realize that balance is going to be near impossible (as things stand now). There is NO centralized guild framework. Every guild is coded differently, using different “units” (gexp, skill points, etc). If you want to compare an Atreides player with a Harkonnen player how do you do it?
- Glvl? Wrong. 1 AT gexp is not the same as 1 Harko gexp.
- Level? So clearly wrong.
- Play time? Wrong again. You need to consider that the earning rate of each of those units of gexp has changed drastically. Think of how hard it was to grind a Fremen to Fluid in 2003 versus 2010.
- Lots of other equally wrong/subtly flawed guesses
Perhaps the greatest examples of a simple decision made in ~2003 by prior administration that is the cause of an incredible amount of the issues player experience today is the removal (or rather incredible stretch) of the maximum level. If you look back far enough, the majority of Dune’s development was done with a maximum level of ~100. Go back far enough, the max was ~40. Either way, the majority of content coded by wizards who were active long before I even had a player was coded to be used by players less than level 100.
There have been many consequences of this level cap increase that the people who did it haven’t stuck around to “enjoy”. As mentioned above, we have a horrible horrible content void past level 100. You literally blow through the usefulness of almost 15 years of code within the first week you’re playing Dune. Want more consequences? Ok, consider the EQ system. The equipment inherits that every weapon and armour on Dune is based on were further designed to cap out at the strengths appropriate for a player under level 100. We’re all familiar with how fast weapons break now, they do so because the people that coded the base weapons/armours were never expecting players to hit the 30+ times you do in a single round. What about skills? Well those had to be pumped up too, thankfully Mreh was able to do that. You can keep going with this one issue forever.
The experience system was already revamped because of another unintended consequence of the level jump. The experience you needed and were earning at a high level was getting SO big based on the existing values that we were overflowing the integer datatypes used to store it.
Many other systems have been totally broken based on silly enabling decisions. Unlimited alts has given us the chance to experience all of the guilds, but now there is no loyalty. When you had two players max the guilds those players belonged to was important. You couldn’t log your Harko when the chips were down and they were “more BS”. This lack of loyalty has done more than destroy the fun “secretive” elements of guilds like the Tleilax. It’s also the cause of lots of issues related to Guild leadership.
The point is that there is a lot of dirty, lousy, crappy clean up work that needs doing. Further, almost all of it will require tough choices and will likely cause drama/bitching explosions the likes of which Dune has never seen. We’re talking a 12/10 on the Mystique scale.
So why should we even bother? I’m a very skilled programmer, I have interests literally spanning all of computer science. Why do I want to take what little free time I have and pour it into doing boring, mundane, thankless work that will just cause more drama. It will only further dig me into this role of being some kind of internet babysitter. I don’t want to delete players, I don’t want to deal with whiny hurt feelings.
So, with all of this rambling out of the way, I’m going to do you all a favour. I’m going to spell out my primary gripes with Dune (hey look, they’re almost identical to the playerbase’s primary gripes. Who would have thought…) and further, I’m going to describe how I’d fix them. From there, I don’t know. Convince me I care about doing any of it.
Please Note: these are MY views. I speak on behalf of no other member of the Dune MUD administration. They might agree with me, they might not. Talk to them.
The future
Server Access
Nothing I propose is easy without looking at how Dune handles server-side access. Genesis and Servint have been FANTASTIC to us and I do NOT want to paint them as bad guys. I wouldn’t change how they’ve done anything up until now.
Presently exactly one person has a shell account: Mreh. It is also a non-root shell account. What this means is that we can’t easily do anything especially advanced. I can’t search the mudlib (thousands and thousands of files) for where old code is used or not used. We can’t set up test instances of the MUD or upgrade the driver easily. We can’t set up new websites or easily manage old ones. If the server breaks, we don’t have an actual account at Servint to file a support ticket. We don’t pay Servint a dime and I feel terrible asking for anything, but if we realistically want to move forward we need more control.
Unlimited Alts
We need to get rid of it. The problem with this is that I know full well if I tell you all to pick 2 characters you are going to quit before losing the amount of work dumped into the rest. What I propose is a “freezer” system.
The idea needs refinement, but this is the core: You may have exactly 2 active characters at any given time. The rest of your characters will be frozen and inaccessible. After some time period (let’s say a month to make discussion easier) you will be able to freeze one of your currently active 2 characters and thaw an alternative or create a new one. This freeze/unfreeze operation needs to be infrequently accessible or we’re back to square one. It seems to me to be a good compromise of keeping all of your characters, but still having a limited # of active players.
Lib revamp
We need to revamp the parts of the lib that were left behind by the level increase. This means fixing the monster code to be better matched against players of incredible glvl. This means fixing the EQ system to have weapons worth using and gear worth wearing (i.e. not just for stat bonuses).
Content
In line with the point above, we need to slide the content that exists to be better suited for a much larger level span. What this means is taking old areas and tweaking them to be interesting to players bigger than the ~40 levels they were intended for.
Procedurally generating content is another approach. I’m close to having it working. Not sure I care to finish. The idea is that I can generate a massive area very quickly without repeating descs/content like the Desert or something. Talk to me about it some time, there are a lot of cool ideas waiting to be done there.
Guilds
In my mind the only way to achieve guild balance is through removing a bunch of gskills, potentially removing some whole guilds, and centralizing what’s left. When I say “centralizing” I mean that things need to be more easily comparable, a standard idea of gskill cooldowns, of gskill values, of gexp units, of defensive abilities, of damage output, etc. Tough choices remember?
Politics
The whole idea of guild leadership either needs to stop being a never ending pain in my ass or it needs to be removed in place of something workable. Ideally political alliances should be way more fluid, for that to happen I propose a few things:
- Less thematic impact. None of the players care about it anyway. You’re never going to roleplay, the rest of the game is roughly themed, why enforce this too hard?
- More reasons to care. Each guild needs control of some kind of resource to make it actually matter if you are allied to them. This is going to be a lot of work, and just introduce more to be balanced. Hoorah.
- More influence on the rest of the game. Arguably part of the above, but worth mentioning. It should be influencing space travel, pk, costs of resources at shops, etc etc. I.e. again, tons of work.
PK Ranges
I’d ideally like to see something with a near-static base range. (Let’s say 20 levels +/- just for discussion’s sake). You go pk, that’s your PK range. From there your pk range will only ever get bigger. It will get bigger in two ways:
- The longer you’re alive, the bigger your range. If you’re surviving set to PK for weeks of playtime then chances are you need more people able to kill you. Your range should swell as you avoid death.
- The more you kill, the more people want to kill you. It’s straight forward, you kill an armies peons for long enough and the star soldier shows up to smack you. Ideally, this is where the political variation might come in. Using the alliance status to decide how much to bump your pk range.
Ultimately this would let the pk ranges balance themselves (to a degree). The better you’re doing in PK the more the system will work against you. If you suck, you’re not going to be spanked even more by big huge players. A compromise in my mind.
Rules
I’m done being a babysitter. A lot of the rules I’m enforcing were decided on years ago by people I’ve never talked to. I frankly don’t care much anymore whether you trade your alt a piece of gear through a 3rd party. It might be time to scale back some of the “old world” MUD rules so that I can stop being so drained by dealing with bratty players that continually re-offend. I’m a programmer, I don’t have any interest in policing you and keeping the peace any longer. Time to grow up. That being said, it’s delusional to think that we can have no rules and that I can spend no time dealing with abusive players. We need a happy medium.
Website
The website is so old and so custom a job that it is going to be an epic amount of work to try and upgrade/fix it so that it can remain as it is. It’s quite frankly not worth it. No offense to the people that spent time making it, but if you really feel so proud of the website you created you should have stuck around to maintain it. It’s past that now.
What I propose instead is that we create a Wiki that any player can edit. You can create your own website. Add the content and help files you want. Add maps, add triggers, whatever. Hell, in regards to point about rules above, I find it really hard to even care if you post quest solutions. I don’t want to police the wiki either and I’m not dumb enough to assume you don’t trade quest solutions already. I’d rather have the quest solutions posted in the open so that I have a better idea of which quests are stupid syntax guessing games that could use some variability/removal/reward tweaking.
New Wizards
There are none. Practically every one has been a literal waste of time. Fantastically bright Dune players that have no coding skills and are mostly just empty promises. With a few exceptions almost everyone below wiz level 500 has been a drain on resources. We dump time into reviewing code, teaching LPC, helping with questions and end up with nothing at the end.
Players all seem to want to compare today with the “glory days” (whatever time period you happen to define as such). The reality is that these “glory days” were also likely when Dune had way more wizards. When I started wizzing I was working beneath incredibly competent wizards like (in no specific order): Sauron, Stryder, Benedict, Methos, Varrack, Elmer, Iria, Iolai, Hayt, Nuemonic, Seeker, Terro, Rovack, etc, etc. How many active wizards are there now? Around 5. How many of them are skilled enough to work independently? Around 4. How many of them are skilled enough to know their way around the inner lib or the guilds? Around 3. How many of them are skilled enough to hack on the deepest levels of the lib? Around 2. How many of them have server access. Around 1. How many of them have root access. None.
We either need to stop trying to find help or we need to formalize the process to the point where it’s not a drain on everyone.
The bottom line
There are more issues, there are likely more fixes. All of them require tough chocies. All of them require a metric fuckload of boring work.
Dune, I can’t put this any clearer… You stand at a cliff-edge of your own creation. You’ve pushed and pushed and given such little justification for any effort that I’m on the edge of retiring and so is Clutch. I’m not egotistical enough to say that any one of Clutch, Mreh or myself leaving would kill the MUD, but you need to stop and clearly think about what could happen. Replacing any one of us, while possible, will be very hard. Once the replacement is done you’re still talking about a great deal of time to get anyone up to speed with the code.
There are tough choices ahead, a lot of work to be done, and only 3 people capable of doing the majority of it. You need to make it worthwhile or it won’t ever happen. You need to collectively grow up. There are lots of other potential solutions to the problems I’ve listed above, some posed by players, some by wizards. If you have ideas or feedback you need to do the following:
- Grow up. I don’t care who you like, and who you don’t. You don’t really have any other options. Treat this as a professional matter.
- Formulate your thoughts legibly. If English isn’t your first language, find a friend to de-mangle it.
- Formulate your thoughts logically. There are tough choices to be made. Everyone is going to be unhappy about a different smattering of the solutions. That’s life. You need to argue why your thoughts and ideas are better on the basis of fact and not feeling.
- Collaborate. You’re all in this together. Sink or swim. Share your ideas, discuss them amongst each other. If I get 30 ideas that all slightly overlap from 30 different people then what do I really have to work with?
That’s all I have to say. I’ve disabled comments on this article. If this is important to you there is contact information on my website. Send an e-mail keeping the points above in mind.
Speaking only about myself, I know that I’m detached from the view of a player. I haven’t played the game in nearly 5 years. I don’t have the time to play AND code. It will never happen. I know that I could do better about accepting feedback and suggestions from players, but it needs to be presented in line with the points above. Change is always possible. I have tried very hard not to slight anyone directly, but if you feel I’ve said something hurtful please let me know and we can talk about it. I’m a reasonable guy at the core.
So long, and thanks for all the fish.
LPC Ghetto AOP
A problem was recently posed to me: _“If I wanted to selectively block the evaluation of add_action() functions based on
certain criteria known only at run-time, how would I go about it?”_.
…
After some deliberation the coder in question and I were able to begin forming the idea of a “guardian” function. Drawing on concepts from Aspect Oriented Programming like the idea of “before advice” we decided to try interjecting a function before the real deal that would be able to evaluate whether or not the actual function call would be performed.
read more...LPC Events Inherit
I have created a quick new inherit that allows for something called event driven programming in LPC. My hope is that this inherit will allow people to create more light weight lib files for things like guild objects and monster inherits.
read more...