29 Dec, 2009, Elervan wrote in the 1st comment:
Votes: 0
Hello,

I am wondering if anyone has some advice on how to balance a fully made world that has been touched and changed over 13 years. Basically as it stands equipment and npcs are not even close to being somewhat balanced. Not to mention a player could level from 1 to 90 in just 5 areas. But to go through each area one-by-one and re-edit every object, npc would take forever. Is there a better way of doing this? As it stands the mud is between 15,000 and 30,000 rooms most full of npcs and objects.

– Elervan
29 Dec, 2009, ATT_Turan wrote in the 2nd comment:
Votes: 0
Going through and re-editing each entity would be the thing to do, if you want to avoid changing your game mechanics (or write new areas). Optionally, some MUD's load their mobs and objects with statistics generated by their level - with the exception of special effects added to items, every level 5 weapon will do the same damage and every level 12 mobile will have the same hit points, armor and damage. This should be very easy for your coder to implement, and the only thing you'd have to worry about then is finding any objects that had unbalancing bonuses added to them (which, hopefully, is nowhere near every object).
29 Dec, 2009, David Haley wrote in the 3rd comment:
Votes: 0
If you don't want to edit everything by hand, then you need to figure out some method of automatically generating new (hopefully balanced) statistics for NPCs and objects. You could have some sort of table that takes as input the desired level of the 'thing' (object, NPC), some basic parameters (item type, material, NPC class, NPC race, …) and then generated statistics for it. You would then run this process on every 'thing' that you want to balance.

A problem with this process is that it can make everything overly similar; you can throw in random noise if you'd like some variety.

You can also run the process automatically on everything, and then tweak a few particular mobs/objects by hand if need be.

As for the process of figuring out what is "balanced" and what isn't, that's really up to the particulars of your game design and is a rather complex question.

Some people get all fidgety and uncomfortable with this idea as it removes so-called "creative freedom" from the building process, but IMHO, for the bigger picture, you really want consistency first and foremost and can allow creative expression through other means.
29 Dec, 2009, Skol wrote in the 4th comment:
Votes: 0
This is assuming a RoM game, if not, just use the concepts ;).

What I did to do the same in my game was to enforce 'dice sizes' in weapons, along with a max/min average damage due to weapon type.

The 'blah' of it is: while (pObj->value[1] < minimum_dice[pObj->value[0]]) pObj->value[1] ++;
That should give you the idea anyway, basically while it was too small of a die (v1) for that weapon type (v0) it increased v1 by 1. Then do average damage vs level of the item, reduce or increase v2 (# of dice) until it's within the desired range etc. I did the same in OLC so that if someone wants to build one outside of the range, he has to get an implementor to do so for him (keeps the insane weapons in check).

In your case, you'd want to do so in olc_save.c where it saves the items to the area file. Definitely back-up all of your areas first.
Ps. the above code is 'blah//' code, use your actual values/code etc. should give an idea though.
29 Dec, 2009, quixadhal wrote in the 5th comment:
Votes: 0
Two words. Log Files. :)

Start adding code to log all kinds of events, such as how much damage happens on each side of a fight, how long it takes for a player to kill a mob, how many times they kill various mobs, what drops off them (if it's semi-random)….

Then pour over the logs. If you can, write a script to push the data into SQL so you can query for trends and outliers. If you realize players are killing 20X the number of uruk-hai as regular orcs, there must be a reason… they're either too easy, or worth too much.

There's no simple way to properly re-balance a game that's drifted, but collecting data so you can see how things are out of balance is the first step.
29 Dec, 2009, Runter wrote in the 6th comment:
Votes: 0
In my opinion there is only one good way to balance.

You need to test stats out and create a table of 1 to 1 relationships between stats. For example, if you had a stat like strength that gives 2 attack power for every strength you could figure out that strength is slightly better than 2 points of strength. Depending on how many other things strength contribute it could perhaps be more. The closer the approximation you can get for the value of a stat the easier it is to generate balanced stats and draft items in an intelligent, value based way. Of course it may be more difficult for you to get an approximation for how valuable 1% critical strike bonus is vs 1 attack power. In these cases it may take extensive actual testing to produce charts, benchmarks, and medians for various fights. This is the real scientific work that goes into serious balancing.

It gets more difficult when dealing with stats from different disciplines. For example, tank attributes vs healing attributes vs DPS attributes. It really depends on your game how you balance these in relationship. But in many games if the sets are completely segregated it doesn't even matter. For example, warriors can't wear priest items and so on.

In any event, it's always better to have one informed person designing and tweaking balance of stat relationships than each individual area designer. (These people, indeed, are often the last people who should be controlling this in a balanced game.)
29 Dec, 2009, Kline wrote in the 7th comment:
Votes: 0
AckFUSS has an autoobj/mob build command (and tables, etc, you could steal) that auto-stats items and mobs based on level and other factors (gear slot, rare flags, special mob flags, etc). I'd suggest a similar system then write an imm command/at-boot script to just run it on everything once, after you hand set levels.
29 Dec, 2009, quixadhal wrote in the 8th comment:
Votes: 0
I know code that "auto-balances" things is popular in several of the Dikurivatives, but personally I can't stand it. It's not too bad if you can just fill in the values yourself to override it, but some of them have the auto-mangler ignore hand-set values and just enforce the generic numbers. While that does give you "balance", it also makes things very generic and predictable. If your builders can't make special items or mobs that are outside the "norm" for the area, you're rewarding the mass production of uninspired and uncreative stuff.

Of course, I also dislike the idea of level restrictions on items, but that's another topic. :)
29 Dec, 2009, Skol wrote in the 9th comment:
Votes: 0
Quix, totally agree on the logging. I did that with experience gains (set it as something imps could toggle on/off) and had it give exp warnings on wiznet (Dikuriv) to Imps. I turn it on when we put in new areas to simply watch and see, usually only goes off if there's way too easy mobs of higher level.

On a similar note you could do the same for damage vs level, store the weapon's #, room #, wielder, etc etc. Or, have it simply check where it computes the weapon's damage (prior to adding in other factors, strength, eq bonuses etc).

Looking back, I didn't end up putting in the 'implementor required' check on 'insane' weapons, but the OLC does warn the person when they build stats if it's 'too buff'.
30 Dec, 2009, Kline wrote in the 10th comment:
Votes: 0
re: Quix. My auto-system sets defaults based on some coded values from a few tables, but they are always editable afterwards. It's just to give people a good baseline to start from, as my idea of an "average" weapon may be a far cry from yours ;)
30 Dec, 2009, Tyche wrote in the 11th comment:
Votes: 0
There's a Merc snippet by Erwin that might be a helpful tool in balancing. What it does is run through objects in the mud, produce a comma delimited list of their stats and writes the output to a file. You can import the file into a spreadsheet where you can sort, filter, and analyze to your hearts content. You can use similar technique with mobiles, and statistics you may or may not track on players. That was the basis of what I used to balance LE mud.
30 Dec, 2009, Scandum wrote in the 12th comment:
Votes: 0
Lola has an area checker that tests a given area for anomalies. It checks for invalid mobile stats, bad descriptions / flags, and also generates a level estimate for objects and compares it to the actual level. It's very useful for builders, for example:
>edit area check gahld
[6408] Lvl 14 Object's con apply is too high.
[6414] Lvl 25/ 31 Object has more than 3 wear locations.
[6418] Lvl 15 Object's dam apply is too high.
[6400] Mobile should have equal or less than 171020 hitpoints.

Total of 4 errors found.
30 Dec, 2009, Mabus wrote in the 13th comment:
Votes: 0
Scandum said:
Lola has an area checker that tests a given area for anomalies.

CoffeeMud has a "deviations" command that allows checking areas.
Quote
help deviations
Command : DEVIATIONS
Usage : DEVIATIONS [MOBS/ITEMS/BOTH] [MASK]/ROOM/AREA
Example : deviations mobs area
Short(s):
A command for showing items in a room or area, and how they deviate from
established norms for their type and level.

deviations mobs area

Deviations Report:

Name Lvl Att Dmg Armor Speed Rejuv alignme Worn
a giant spider 21 +14 +5 +15 0% 240 -10000 0
a giant spider 20 +15 +6 +10 0% 240 -10000 0
a speckled hyena 17 -8 -2 -6 0% 240 1 0
a giant spider 24 +15 +2 +3 0% 240 -10000 0
a giant spider 23 +12 +3 +5 0% 240 -10000 0
a giant spider 24 +13 +2 +3 0% 240 -10000 0
a giant spider 21 +14 +5 +15 0% 240 -10000 0
a giant spider 23 +12 +3 +15 0% 240 -10000 0
a giant spider 21 +15 +5 +15 0% 240 -10000 0
a spotted hyena 16 -5 +2 -6 0% 240 1 0
a giant spider 21 +14 +5 +15 0% 240 -10000 0
a speckled hyena 18 -1 -3 -4 0% 240 1 0
a speckled hyena 16 -4 0% -4 0% 240 1 0
a speckled hyena 17 -4 +1 -5 0% 240 1 0
a giant spider 21 +14 +5 +15 0% 240 -10000 0

Handy.

We do a lot of "randomize on load" with our MOBs, so some deviations will exist.
30 Dec, 2009, Kline wrote in the 14th comment:
Votes: 0
Mabus said:
CoffeeMud has a "deviations" command that allows checking areas.


Thanks! This is something I will add to AckFUSS! I hadn't though of laying out data like that, but it seems useful for certain.
04 Jan, 2010, shasarak wrote in the 15th comment:
Votes: 0
While it's probably not directly applicable to the original poster, one strategy for making a world more balanced is to make it self-balancing, with the effectiveness of any given skill, item or mob inversely proportional to its frequency of use.

So, for example, suppose a fireball spell is initially a little over-powered; people realise this and start to cast fireballs all the time. The game detects that the fireball spell is being used more often, and the more it is cast (not just by any one character but by everyone) the more the game dials back the damage the spell causes. This effect isn't permanent - if a spell isn't used much for a month or two then it becomes correspondingly more powerful as a result. This results in an interesting dynamic shift in the effectiveness of tactics - at the moment fire mages may be at a disadvantage because too many fire spells have been cast lately by all the newbie fire mages, and ice mages are in the ascendancy; but the more the ice mages use their temporarily enhanced powers, and the more ice mage characters are created in an attempt to cash in, the more the effectiveness of their magic declines.

It's not difficult to come up with a thematic justifcation for this - disruption to the channels between our plane and the plane of fire caused by excessive energy flow, etc.

This idea can be extended to equipment and mobiles: the more that copies of a particular weapon are used, the less effective all weapons of that type become; or, the more often a particular type of mob is killed, the less experience anyone gets from killing one, etc.

Doing this also encourages exploration - mobs and items in rarely-visited areas are automatically more valuable than those in more frequently looted locations.
09 Jan, 2013, Rarva.Riendf wrote in the 16th comment:
Votes: 0
Very nice idea Shasarak.

To get back to the balancing process I made something similar that affect points for every stat an item can have.
I then generate a table for the ten items with the most points, for each level they appear. This helps builder (and myself so I can keep them in check easily) as they should never make an item that is more powerful than the current ones. (there is enough different stats to fiddle with so they can make poweful items without the need of more power).

it also helped me generate random items that are not overpowered as well, to add a lot of randomness. After a while I expect that most items wore will be either random one or crafted ones, only very specific quest items will come from areas as they have distinctive properties that are almost impossible to get randomly.

And rebalancing an area would be easy if I wanted to, I could just set a level for the area, and every items that are under/overpowered according to the others areas could be rerolled.
But for this you need some areas you know are perfectly well balanced first.
10 Jan, 2013, yue wrote in the 17th comment:
Votes: 0
Just curious, Why is balance desirable?

I think remote areas that have creatures that give great experience but aren't terribly difficult to kill encourage exploration.. even the idea that such areas might exist adds a stimulating element to gameplay that a game devoid of variety in cost:benefit with mobs simply lacks.

What's the point of 30,000 rooms if they all offer the same experience? Reading room descriptions? I hope you have really good writers, otherwise you have 29,000 rooms I am never going to check out.

Another member here mentioned in a previous post the game Realms of Kaos. In said game, players have one of five divinities - a faith, of sorts. It is sort of like an element wheel; ice–>fire–>night–>earth–>lightning–>ice. Each one has bonus to-hit/damage against the following, i.e. ice over fire, fire over night, etc. Mobs have divinity too. This means you can grind on the regular mobs in the well-known areas like everybody else for mediocre experience, or you can be adventurous and observant; go out in the world, explore new areas, fight with the mobs in the area with a character of each (or at least 3) divinities, determine the divinity of the mob, and record how much experience you get from killing it, as well as how hard it is to kill. People diligent in this strategy were(are? not sure if the game still runs) able to find areas to level their characters of certain divinities where they gained WAY MORE experience per kill, hit their opponents more often, did more damage to their opponents, and received less damage/dodged enemy attacks more often. Some people take months to level a monk to level 25 (the maximum level). In the right area, with the right weapon, you can do it in a couple weeks of casual play.

Which forms a distinct difference between an amateur player and a veteran who knows what they're doing - and an amateur player has the opportunity to become good simply by being adventurous.
10 Jan, 2013, Runter wrote in the 18th comment:
Votes: 0
yue said:
Just curious, Why is balance desirable?

I think remote areas that have creatures that give great experience but aren't terribly difficult to kill encourage exploration.. even the idea that such areas might exist adds a stimulating element to gameplay that a game devoid of variety in cost:benefit with mobs simply lacks.


What you just described is balance. Remote areas (a negative) with creatures giving great experience and additionally are easy to kill (positives). That's how things are balanced. With positives and negatives. If it were not balanced your description would have sounded like this: "Areas easily accessible that give the most experience and are easy to kill."



Quote
What's the point of 30,000 rooms if they all offer the same experience? Reading room descriptions? I hope you have really good writers, otherwise you have 29,000 rooms I am never going to check out.

29000 practice attempts at before writing the 1000 rooms you care to read, but more importantly, giving you information about your surroundings and helping to immerse yourself into the game. Well, actually, that's the point of room descriptions. The point of rooms is to give your game spacial identity, so that players may interact and move around your game in some manor.
10 Jan, 2013, yue wrote in the 19th comment:
Votes: 0
I guess you missed the "if they all offer the same experience" part of that question, because your answer is completely unrelated to what I was addressing.
10 Jan, 2013, Runter wrote in the 20th comment:
Votes: 0
yue said:
I guess you missed the "if they all offer the same experience" part of that question, because your answer is completely unrelated to what I was addressing.


Then allow me completely respond to your question, since you like being "deliberately pedantic" apparently.


If they all offer the same experience then,
29000 practice attempts at before writing the 1000 rooms you care to read, but more importantly, giving you information about your surroundings and helping to immerse yourself into the game. Well, actually, that's the point of room descriptions. But the point of rooms isn't just descriptions. The point of rooms is to give your game spacial identity, so that players may interact and move around your game in some manor.
0.0/74