Friday, April 4, 2008

Skilling in a DSS

Trade skills in most MMORPGs is based off of spawns of resources and creatures and your skill level to even attempt to collect those resources. If you fail you get to try again as many times as you want. This ensures that there is a large supply of specific resources, and that players know exactly where to go to get the resources they need (i.e. newbie areas have copper nodes). The problem with this is it forces high level players to go to low level zones if they get these professions late in their career, and it effectively limits new players to low level resources until they gain in player level.

In a Dynamic Spawn System (DSS) this raises a problem. High level players will never spawn low level creatures and thus can never gain basic skills to get more advanced ones. This is fixed by removing a skill requirement to skin a creature and instead basing the quality of skin attained on the skill level of the skinner. So a lvl 70 player with skill 1 skinning will only get poor quality hide and leather, but a lvl 70 player with 300 skill will get high quality leather. Not the quality of leather should be capped by the level of the mob, so a low level player skinning a low level mob will not get a very high level skin, instead he will get a low level skin.

This should also apply to mineral nodes. I like the node system that WOW uses, where minerals are available in certain areas, and are more populous in mines and rocky, mountainous areas. However, I don’t think they should be apparent what minerals they contain, instead that should be based off of the skill level of the miner, and also capped by the zone. So a high level miner in a high level area will get a really good and expensive mineral, but a low level miner in a high level area will get the same thing as if he was mining in a newbie area. Also a high level miner in the newbie area would probable get the low level ore, but there’s a better chance he would get a rare world drop off of those nodes (i.e. a special gem or some other material) that would be only mineable in the areas of that level. There should be a rare in every level bracket to encourage even high level miners to mine out those nodes, and thus also supply materials of all levels for crafting.

Skilling in these skills should be based on use. To get better at mining you have to mine, to get better at skinning you should have to skin, etc. However, I think that failing at a task should increase your skill slightly. Now this is not a point for point system like WOW, where every success gets you 1 more level in the skill, instead it should be based on skill xp, with a certain amount of xp needed for each level of skill, that is increasing (however, the skill gained from skinning mobs also increases as the quality of the product/mob skinned increases). So lvl 2 skinning might take 5 skill xp, and 3 might take 10, 4 will take 20. 5 would take 40, etc. It will become harder to skill as the skill increases, but it would be possible to skill all the way on just lvl 1 mobs…it would just take a few million times longer than skilling on higher level mobs. If you fail in skinning, you get some small amount of xp, and also you can try again, but the skin you will eventually get will be one quality level lower. So medium leather will become light leather, and light leather will become ruined scraps of leather. If you fail on a skin that would reward ruined scraps, the mob is unskinnable and despawns. Similarly if you fail on mining, the quality of the resource decreases (or the amounts) so instead of copper, you get copper dust, and if you fail again, you get no minerals and just rocks, and if you fail again, you get nothing. From a skill xp standpoint, it should be noted that the xp from a successful first skinning/mining attempt should be more than you can get by failing and then succeeding. So if getting a medium leather was worth 20xp, then failing once and getting light leather should be worth 12 xp (2 for failing and 10 for light leather) and failing twice and getting scraps should be worth 4 xp (2 for failing the first time, 1 for failing the second time, and 1 for ruined scraps).

This system does two things. First, it ensures that players can level their skills any way they want on any mob or node they want, but they will be rewarded for skilling as they level (they will have appropriate materials to sell for their level and will have the easiest skilling curve). I will make up a mock-up of a skill to demonstrate these ideas fully, but this is a pretty rough idea of what I mean by this skill system. It will make more sense when I make a full abstract of the skill system.

Wednesday, April 2, 2008

Dynamic Spawn System (DSS)

Using a dynamic spawn system seems like a difficult task that would take up countless server resources, but in reality it’s simple if you keep things limited and reduce the dynamic spawn under certain circumstances. It’s more complicated than I can explain in one post, but here are the basics.

Each player will have a number of spawn slots attached to them, for our example we will say 10. So wherever the player goes he can expect no more than 10 mobs to spawn in his immediate area if he is the only one there. The mobs that spawn in these slots will be within 3 levels of the character (so a lvl 30 character would find lvl 27-33 mobs). The level of these mobs is also affected by the zone level they are in, and mobs will only spawn in if they are appropriately leveled for that zone. For instance, a lvl 32 player going into a lvl 20-29 zone will only find lvl 29 mobs spawning around him, but a lvl 34 player will find no mobs spawning (because there are no mobs that can spawn). This is largely to prevent high level characters from spawning high level mobs in low level zones to grief newer players. Also, in cities and areas where only regular friendly NPCs would spawn, no mobs spawn. Although, special battleground or defense sites could be fun as the number of players would determine the strength of enemy attacks. Another point is that if you are a low level character going into a higher level areas, your full spawn compliment will spawn, and they will all be the minimum level for the area. A lvl 10 going into a 20-29 area will find a lot of lvl 20s around him.

When a player is mounted or traveling fast, the number of dynamic spawns is reduced by half or one quarter. That way the world still seems populated, but the server load is greatly reduced as is the likelihood mobs will knock you off your mount (which is annoying). After a mob is out of your site range (and a little additional distance) it is despawned unless it is within sight range of someone else, in which case it is assigned to them as a spawn. When you dismount the remaining mobs will spawn in slowly over the next few minutes. When spawning in, if you are standing still no mobs will spawn within normal agro range. They may still walk within agro range, but they will not spawn on top of you. Now if you are a lower level character going into a higher level area (like our lvl 10 going into the 20-29 area) mobs will spawn within your agro range, because it is much larger than if you were a level 20.

Also, each zone should have a limited number of total spawns that is independent of number of players in the area, but it should be virtually impossible for players not to spawn mobs around themselves. This is to reduce server lag. It is very likely that many characters will be in certain areas during events and the first few weeks of the server (and in the high-level areas) so these areas should have a high total spawn cap.

I’ll go in depth into individual parts and effects of this system in further posts and as I figure things out.

Tuesday, April 1, 2008

Spawning Problems in most MMORPGs

A typical MMORPG operates on a fairly simples system for mobs and NPCs. Basically, the world has a number of spawn nodes for creatures and NPCs. For example, a city will have spawn locations for each NPC in the town, and a forest will have several locations for mobs to spawn. When a mob is killed, it is queued to be replaced by a respawn after a timer expires. For NPCs in a city, the respawn is almost always the same NPC of the same level (especially in the case of vendors and important figures). For mobs, however, the level and even type of mob may be different that the previous mob occupying that spawn slot.

Now the system is pretty simple and ensures a fully populated world no matter where you are, but it also has several problems. Each mob has to be kept track of whether or not there is a player within viewing distance of it. There are only a limited amount of mobs of a certain type, making quests that involve drops or killing certain creatures more difficult if other are doing the same quest. Also, it is hard sometimes to find mobs that are appropriate for you to kill for trade skills and leveling. It’s also possible for griefing players to kill and not loot mobs for specific quests to prevent respawn.