# What's an appropriate difficulty scale for weapon efficacy vs difficulty to obtain?

I'm writing up a design document for a voxel based adventure game, similar to minecraft, but fixing a lot of fundamentally broken game mechanics, or at least updating those mechanics to be more suited to an adventure game.

I'm considering creating a weapon scale from 1-10, where weapons at 1 are least powerful, and weapons at 10 are most powerful. I was considering making the materials to make the weapon most common for the level 1 weapons, and 10x less common for the most powerful weapon, but if you look at minecraft, diamonds only occur in 0.1% of blocks and they still feel too common, unless you're prone to dying of course.

In keeping with the adventure focus, would it be better to have the higher tiers of weapons only come from monster drops, or from a combination of a rare monster drop and a mineable item, or are there other common game mechanics I could use to have a super powerful weapon that's also hard to get, but worth your time to get?

To state the question another way, for the time investment, should a weapon that's 10x as powerful take 10x as long to obtain, or 20x or higher? Are there any studies that show any correlation between "fun" in how long players will grind for an item and an appropriate time investment scale for obtaining equipment?

• I think the way this question is currently being asked is not a fit for the site. You could modify it to ask about studies, algorithms or other factual information. Otherwise you're just getting opinions. It's an interesting idea, so I think you should try to rework it. – MichaelHouse Apr 17 '12 at 17:36
• Per the FAQ I would think my question falls in this category, "game design (level design, gameplay, mechanics, etc)", considering that I'm asking about a globally applicable game mechanic, namely the issue of time investment for powerful equipment. However, I did modify my question to ask for more factual data rather than opinions. – Ken Apr 17 '12 at 18:17
• I am not sure I have ever seen the term Fun and Grind in a sentence before that wasn't derogatory. – James Apr 17 '12 at 19:51
• You're proposing a linear scale, 10x as strong is 10x as costly. However both in real life and in other games this process isn't linear. A car that goes twice as fast is worth 10x more, a car that goes thrice as fast is worth 100x more. Etc.. You should try to find a nice exponential curve like cost = c^(power). Where c is a nice constant that you can tweak to get the feel right. – Roy T. Apr 17 '12 at 20:54
• To use science, or psychology at least, what we're talking about is a Variable Ratio Schedule of Reinforcement. Reinforcement has been studied quite a bit, and you can start reading up on it here: en.wikipedia.org/wiki/Reinforcement – tugs Apr 17 '12 at 22:00

I'm going to answer this orthogonally:

Whatever you choose will be wrong.

No matter how carefully you crunch the math, or read the studies, the numbers that you will choose before play-testing will be wrong.

The only way to determine what the appropriate amount of grind for the particular game, play style, users and interface is to actually try it and iterate, while maximising for player fun (or your profit...)

Corollary: Make sure that changing these numbers is easy!

What this means is that these numbers are going to be changed. A lot. So you better make sure that you don't have to re-compile your game or dig through your code for the balancing magic numbers.

## Option 1

Pick whatever feels right when you're implementing, but put it into a reloadable config file. (.ini, JSON, XML, S-Exprs, whatever tickles you best...) And make sure that you can reload your config without having to re-write most of your game.

## Option 2

Make the probability of an item a direct function of its level. That way, you can modify the function later on, and you don't have to deal with a bunch of variables. For example:

#
# Power on a scale up to 10.
#
# Examples of probability scaling function
#

def probability_of_v1(power):
""" series """
a, b, c, d = (1,4,16,210)
return a - x/b + (x^2)/c - x^3/d

def probability_of_v2(power):
""" linear """
return 1 - (power/10)

def probability_of_v3(power):
"""Sinusoidal, starts at 1, is 0 at power=10"""
return 0.5 * cos( x / pi ) + 0.5

#
# when dropping loot or creating gems
#
class Monster:
# ...
def on_die(self):
if random.random() < probability_of(self.power):
self.drop_loot()
else:
pass
# ...


Try the equations out online to see what they look like.

• Why, thanks Kort! I've got to admit that this is wisdom born out of experience. I once wrote an insect simulator with magic numbers sprinkled throughout the code, and spent an unpleasant couple of days changing minor parameters when the simulation had to be modified. Not making that mistake again! – brice Apr 18 '12 at 17:33

It's hard to give a definitive answer, as this is very dependent on how you want the game to play.

However, Terraria did experiment with these ideas that you mention. They increased the amount of materials needed to create weapons, armour etc. (this was somewhat balanced out by the fact that materials were often found in sizeable clusters). They also implemented rare and common monster drops too, which were only obtainable via drops.

It would be worth your while to research Terraria a bit more, to see how it feels to have these mechanics in place; then I'm sure you will be better positioned to make the decision on how you want to balance item drops and material distribution.

• +1 for the game example. Also, I'd say this is something to playtest a lot, you can't have a working design without being able to experience it. – Laurent Couvidou Apr 17 '12 at 19:44

There isn't a right answer. Some good games are hard, some are easy. Some gamers like recurring challenge, some like quick rewards. I think that the right answer lies with finding your potential crowd, first. Once you have an alpha version, find someone of the general mindset you hope your game's crowd will have, and let them play it. As long as you code correctly, adjusting the variables later on shouldn't be hard, and play-testing and balancing are stages that you should have, even if you think you've hit the golden ratio or not.

So don't sweat the numbers while you're programming - there's no theoretical right answer, and later on you'll have concrete testers' answers.

But, if you still want to try to hit magic numbers, studies have shown that grinding (mining, in this case) is only effective as long as it is within the player's set time expectation. The more a player spends time, the longer he can wait for the next reward, but it should always be within a reachable time-frame, no more then a magnitude greater then the last time-frame before the last reward. So, I think that a 10x increase in time is suitable, but I don't think that the difference between two weapon levels should be 10x - the gap between levels is left quite wide.

Good luck!

• Wow... I was thinking a 10x increase between level 1 and 10 total, but I guess up to a 10x increase between individual levels might work considering the increasing returns once you start using better equipment. – Ken Apr 17 '12 at 19:51