02 March 2008

MMORPGs Economy (part 2)

Ins and outs, revisited
Monster drops
It goes without saying that stronger monsters should, generally, drop better stuff than weaker monsters. However, there are a few exceptions. One exception is having weak (newbie) monsters drop some really good items, but with a very, very small chance (perhaps around 1/5K). This will help some lucky newbies. The second exception is that, depending on how the exp/leveling is implemented on the server, some monsters are better than others to level on. Therefore, it can be a good idea that the "good to level on" monsters drop less stuff than some weaker but more inconvenient monsters.
To add more diversity to the game fauna, you can have a few monsters of the same level but with different abilities. Example of abilities are self healing, spell casting, the ability to go invisible, and so on.

Player made items
Making items over and over again to level up is not the most fun thing in the world, and it can produce an over abundance of items, which as discussed previously is not good. For the manufacturing system, there are a few things to consider: Can a player make items everywhere in the game, or do they have to be in a certain workshop? If there are workshops in the game, should some of them give better experience than others? For example, you can make a hard to reach workshop that will give +15% experience.
You can implement schools, where you don't get any of the produced items, but get more experience in return, which helps with the over production problem.

To reduce the amount of items in the game, you can make it so that each time you fail at making an item, you lose the ingredients. The failure rate would depend on your level + a random factor.
Finally, you can introduce a concept of "item quality", for example if your skill is much higher than the skill required to produce an item, you have a chance to produce an improved version of that item (a more powerful sword, a more protective armor, etc.)

Collecting resources from the environment, tips and tricks
Do not put the expensive ores right next to a shop, workshop, and storage.
If possible, do not place resources right next to each other, especially if they are needed to created the same item or perform the same task.
Consider making the resources that should be rare actually be rare, by either placing a limit on how many can be harvested each turn/hour/day or by requiring expensive items to harvest each resource, all this in addition to a higher harvesting level needed to harvest them.
Depending on the game type, an interesting but hard to implement idea is to put a limited quantity of resources in a mine. When the mine is exhausted, players would have to find and build another mine. Or perhaps go to some god and perform a ritual to rehabilitate the exhausted mine.

Broken items
If you are going to implement a system where items breaks, you will have to decide what should happen with the broken items. They can either disappear from the game, or degrade to a weaker version. Of course, you can have both in the game, where the weaker items just disappear, and the more expensive items degrade. The fate of the degraded items can vary with your design, but there are a few common uses for them:
a. Use them for a quest. This can make the quests harder, especially if the quest asks for an expensive item that it's hard to degrade.
b. Have an NPC that fixes them for a fee. Maybe allow the NPC to sometimes destroy the items in a failed attempt to repair them, and keep the fee.
c. Allow the players to fix them, maybe even have a repair skill in the game. Obviously, allow some chance for failure, based on their skills and on how hard it is to repair it.
d. Make other items with them, or use them as parts to repair other items (for example, two broken armors + some metal = new armor)
e. Recycling plant: You go to a recycling plant with the broken item + a fee, and get back the metal required for that item.

Shops
Buying and selling items to and from NPCs is most likely going to be a big part of your economy. It is, therefore, important to do it right. While the possibilities are virtually endless, I'm going to give you a few ideas:
a. Set an affiliation (or faction) for the players and the NPCs, based on their race and/or quests. If a player and an NPC with a similar affiliation interact, the prices should be better, and those with opposite affiliations should either have worse prices, or refuse to buy or sell at all. One thing to be careful about if you are going to do that is the fact that in a free game people might have multiple characters of different affiliations, and mule the items in such a manner to use the best character for the job.
b. Some NPCs can require a player to complete a quest in order to buy or sell items.
c. Some NPCs can buy and sell an infinite amount of items, others can buy and sell only the items they have from the players, while others can be set to buy and sell only a certain quantity per day. Finally, some other NPCs can keep track of how many items they bought or sold to/from a player during one day, and only allow a limited quantity. Of course, you will have to be careful about players that mule. For the NPCs selling a limited global quantity of items per day, you will have to implement some measures so that players from a time zone won't exhaust the NPCs, and when others start playing for the day, they will find all the stores open with a full stock. A solution to this problem is distributing the items quantity per hour, rather than per day.

Proper Testing
No matter how good your economy looks on the paper (or on your screen), once you actually implement it and players start playing your game, you will notice a lot of shortcomings. Testing games is notoriously hard, big companies pay people (Beta Testers) to play the game and find problems. But when it comes to a MMO, it becomes economically unfeasible to pay thousands of people for a few months to test the game and report bugs and flaws. This is exactly why many MMOs have an Open Beta stage, where you can play for free for a while. As a side note, Open Betas for pay to play games also acts as a viral marketing tool, many players will be attracted by the free aspect of the beta, then continue to pay for the game because they are now addicted.
Unfortunately, the independent developer does not have the marketing resources to advertise and hype their unfinished game the same way a big company does. So what a small indie team can do is have some in-house testing (which has a very limited value), then release the game and hope for the players to come and find bugs. Only that by the time the economy problems become apparent, it is generally too late; a lot of people in the game are way too rich, there is a huge items surplus in the game, and the new players have no chance against those who started just a few months before.
What can be done about it? Well, there are a few things that can save you from a lot of headache:

1. Create daily backups. Not only they can be very useful if you have a hardware crash, but they can save you and your players a lot of frustration. For example, let's assume you make a change to a formula, and due to either a typo or because you didn't anticipate the outcome, the whole economy is ruined overnight. Maybe by mistake you added an extra 0 to the price of a flower, so people become rich by selling tons of those flowers to the flower shop. Or maybe you added a new sword in the game, without realizing that it can be used to kill the strongest monster in the game and get massive drops in minutes. If you have backups, you can always rectify the mistake and restore the state of the game to what it was before the update. Of course, players don't like rollbacks, but they would rather have a 1 day rollback than have the whole economy ruined. It actually happened to us last year. We implemented some special days, and one of them increased the chance of manufacturing rare items. Well, due to the fact that we didn't have enough time to properly test it, we had a 'small' bug. The nature of the special days in Eternal Lands is that they are random, relatively rare, and many (which means that one special day will, on average, happen once every few months). And so it happened that this special day of increased rare manufacturing started while I wasn't home.
The 'small' bug made it that everyone had a close to 100% chance to make rare items. I originally made it so that the increase would be something around +5% of the initial chance. One other developer found the problem only 20 minutes after it started and did a manual override to change this day to some other kind of day. When I got home, I used my logs to see how many rare items we are talking about. We had many thousands, which is about 100000% greater than normal. We had to do a rollback, and most of the players agreed that a rollback is necessary. Given the fact that we had daily backups, most of the players only lost a day or less of work, which is not that bad, considering that it was the first (and last) rollback in more than a year.

2. Make it clear to the players that the game is Beta, which means that prices, formulas and drops can and will change at your discretion. In fact, it is a good idea in the early stage of the public testing to change stuff pretty often, or else the players would take things for granted, and then, when you want to change something, they will complain a lot. As the game advances and you get more players with different skills and higher experience, you will notice that some things do not work the way you expected, so other adjustments must be made. But as the game advances and time goes by, the prices and formulas should work pretty well already, and your priority should be adding new stuff; changing things all the time in the later stage of the beta test can be frustrating for the players. Imagine living in a world where the milk price fluctuates by 500% every week. You wouldn't like to live in such a world, yes?
The trick is to find an equilibrium between changing old things and adding new things, and this is not something I can help you with, every game is different.

3. In the late stages of the beta, if you want to change things you should change them slowly. For example, if a potion gives +20 dexterity and you think that the proper value should be +10, first reduce it to +15 and see what happens. It might turn out that +15 is enough, and you don't really need to reduce it all the way to +10.

4. Finally, it might help to do a total reset of the game (deleting the world status, and all the players items and skills) once you are confident that the economy is relatively stable (usually by the end of the beta). This is, of course, optional, but the idea behind it is that the first players might have had an unfair advantage by being able to use a system that wasn't tuned properly, possibly using bugs and exploits that were not yet fixed at that time.
If you do plan to do such a total reset, you should tell players in advance about it. Preferably, tell them before they even start the game, somewhere on the download page perhaps. And remind them about the reset every once in a while, some sort of memento mori kind of thing. :) Then, at the end of the beta, just before the big wipe, have some sort of huge PK party (if the game mechanic allows) where the winner[s] get some small prize just after the reset, so that they have a small advantage in the beginning.

The interaction between the economy and other aspects of the game
A MMO is an unitary system, where many subsystems converge to ideally create a seamless world. That can vary with the game type and design, but typically you will have a graphic subsystem (what the player sees on the screen), the network subsystem (the data flowing from the server to the clients and vice versa), the sound subsystem, the combat, and finally, the economy.

Economy vs. Combat
The economy is the soul of the game, the reason people are playing. While some would believe that the combat is the soul of many MMOs, this is generally not true. For example, many fighters like to fight so that they can loot monsters and players, then sell the loot so that they can buy various 'power ups'. You will also notice that the majority of fighters will usually not attack those who have a high blacksmith skill (replace blacksmith with any skill that a fighter needs for supplies). The reason for this is that the fighter constantly needs weapons, armors and ammunition, and the blacksmith is often the only person that can reliably and affordably supply them. If the fighters alienate those people by PKing them, it will be very difficult for the fighter to find good items for good prices. While there are many blacksmiths in the game, the more you alienate, the lower the chance is to find good items, and the more you will have to pay for them, as there will be little competition left. That is, very few will be willing to do business with you if you PK them.
Any good MMO is self policed by the players. As explained above, different classes will create all kind of symbiotic relationships. This is nice, but sometimes it can be boring, and there are a few things you can do to spice things up. My favorite is putting some expensive and rare resources in PK areas, so that the harvesters will have to go there and collect them. Most of the top fighters should not have the harvesting skill necessary for collecting those resources, of course. This can create all kind of alliances and protection fees, with the PKers guarding their allied harvesters against enemies.
If your game doesn't have PK zones, or if it is not feasible to put rare resources in PK zones, you can at least place some very high level monsters in that area, which will require the harvesters to be escorted by fighters.

Economy vs. Networking
It is generally the case in MMOs that the bandwidth for an area increases exponentially with the number of players in an area. The reason for this is that in a crowded place, each movement from each actor has to be sent to all the other actors. So it is a good idea to avoid, as much as possible, people congregating and 'camping' in areas of interest. By area of interest, I mean a place where people need to go to do something or another, such as a store, a storage, bank, workshop, and so on.
The solution is pretty simple: create multiple similar points of interest in other areas of the game. If you notice that a shop is always busy, created another shop further away. People usually don't like the lag, and they will tend to go to less crowded places if available. However, if you put a store in the middle of nowhere, chances are good very few people will go there. Just like in the real life, people don't like going too far for something they can find nearby. The malls are good examples of that; many people go to the mall because there are a lot of stores in a small place. So don't put just one store in the middle of nowhere, put 5 stores. This way, that area will lose it's status of "middle of nowhere".
If for some reason you need to place just ONE store in a remote area, and a similar store is available in a populated area, have the new store offer better prices, or perhaps a few more items. That's why people go to shop at WalMart.
Using the same rationale, spread the resources around too, don't put them all together. And, as a general advice, whenever you see a big crowd of people in an area for a few days in a row, determine why they like that spot so much and try to create an alternative in some less populated map. It might take some time for them to get used to the new spot, but they will eventually. If they don't, ask them why they don't like it (see the "player feedback" section).

Economy vs. Graphics and Sound.
This is pretty much similar with the Network, with some exceptions. If there are too many players in an area, in addition to the network latency (lag) the players with older computers (or even with some not so powerful new laptops) might experience a drastic decrease in the frame rate, which can reduce the playability of the game. In order to alleviate this problem, in addition for spreading the points of interest, you should talk with your 3d artists and make sure that such places are not graphically overloaded. The less polygons in crowded places, the better. It might not be always possible to reduce the number of polygons from the player models in a scene, but you can (and should) reduce the polygons from the static geometry. Don't put tons of unnecessary objects in/near a shop. If the shop is in a city, you might not have much of a choice, especially for the first person games, where you can see the whole city while going to the shop.
Most of the sound cards can mix only so many channels, so if you use footsteps sounds each time a player moves, you will have problems in the aforementioned places.


Player Feedback
As soon as your game is online and people start playing it, they will start expressing their opinion, whether you ask them for it or not. Somewhat ironic is the fact that those who are smarter and stronger in the game will usually not post on the forums or send e-mails complaining about things or suggesting new features. There are, of course, exceptions from this rule, but if you watch any MMO forums you will notice that most of the suggestions are worthless.
The problem is, when someone complains about some aspect of the game, the complaint will be egocentric, focused on their particular problem, and not on the overall benefit of the game. For example, some players want certain items to be cheaper so that they can afford one, without thinking that making the item cheaper will cause in-game inflation.
My personal experience with asking for feedback from the entire community (such as an open forum post) is bitter. The majority of people will NOT even bother to read your post, they will just read the title then click on the "Reply" button. And even if they do read your post, they will still think about what benefits them, and not the game as a whole.

Instead, try to find an 'advisor'. As a game developer, you will most likely not have enough time to play the game too much, and be as competitive as a player that players 8+ hours a day. This is why it is important to find a few high level players from different trades (fighter, miner, blacksmith) and ask for their opinions and thoughts in private. Usually the top players in their trade are mature and intelligent people, and they know a lot about what's going on in the game, often times much better than you do. Given the fact that MMOs are so competitive, it takes a lot of work and planning in order to become a top player. In the beginning I was surprised on how calculated were all the actions of such a player. They compute everything, even how long it takes to get from point A to point B, or the exact amount of potions and ingredients to take with them while fighting each kind of monster.
Once you found a reliable advisor, try to actually pay attention to what he or she recommends. That doesn't mean you should implement or amend whatever they recommend, and you should still check the item logs just to make sure. But, overall, it is a good idea to at least consider their advice. If you have multiple players that you can trust, try to check an idea with all of them; two heads are often better than one.


Conclusion
Designing a MMO economy is not very hard, but you need to be very careful about every change and addition you make. Sometimes it might seem like a fun job, but there will be times when you will feel like screaming and curse the day you came up with this bright idea of becoming a MMO developer.

I hope this article was helpful, and even if you will never become a 'MMO economist' it can be useful to know what kind of work goes into designing and maintaining a game.

Radu Privantu
The author can be contacted at: radu.prv at gmail.com

6 Comments:

Anonymous Lumino said...

Very well thought out, and a really interesting read, even for someone who will probably never need the information :P

3/3/08 22:06  
Anonymous Anonymous said...

Why isn't this one in the devmaster.net? Or haven't they just accepted it yet?

7/3/08 12:51  
Blogger Radu said...

I sent it to them about 1 year ago, and I didn't hear any reply, so I decided to just publish it on my blog.

8/3/08 19:15  
Anonymous Vlad said...

Great article, I hope you will post more of them.

6/6/08 11:47  
Anonymous Flameberge said...

Pretty good article. I'm also a MMO developer. Economy is hard to plan, but it's not as hard as it looks. I planned an 1.3/1 (gain/spend) system and it works perfectly.

17/6/09 11:55  
OpenID zachariahskylab said...

I keep wanting to draw parallels between the MMORPG economy and the real-life economy on planet earth...

We need more noob moderators in the real world... the kind that continue to help noobs even when they are removed from the moderator position.

The exploitation of the economy by the first-comers seems to illustrate perfectly our own economy where the rich get richer and the poor get poorer. I wish there was some way you could implement real life source code to tweak some of the injustice.

12/4/10 03:46  

Post a Comment

<< Home