Wednesday, September 18, 2013

Using Evolution to Keep PvE Interesting

One of my friends and I were talking about how to make PvE more interesting in MMOs. Right now things get pretty repetitive in many MMOs because PvE doesn't tend to vary that much. After running through a mission or raid a few times things become predictable and known. Granted some have extreme variance in spawn composition but this tends to be very swingy or requires lots of developer time to balance. To make truly interesting PvE without requiring each instance to be individually balanced by hand one needs to leave the paradigm of fixed distributions and allow the game to evolve.

I know that evolve tend to quickly enter the realm of unbeatable by human players, which is completely contradictory to the idea of PvE. One needs players, of appropriate level and properly equipped, to be able to consistently conquer PvE content. Further they should be able to do it in a reasonable amount of time for the type of mission or raid it is. So instead of optimizing the computer to kill the player, each PvE event should try to optimize itself so that the player leveled & geared for the content finishes the event in a specified amount of time on average. Essentially the computer is trying to optimize what spawns to get as closed to the desired experience as possible which still having some variation to keep player's on their toes.

Lets look at an easy example from EVE Online: Incursions. In particular consider the Vanguard Incursion sites. These are high level raid events requiring around 10 people to complete. Vanguard sites require a mix of 2-3 Logistic Ships, the healer ships in EVE, and the rest are Damage Dealers. Right now they take about 10 minutes per site for a fleet of minimally skilled and equipped pilots. The problem is Incursions are very predictable. There are only 3 types of Vanguard sites and the spawns in each site have a fairly constrained set of possibilities. It is clear that right now each wave always has certain NPC ship types and simply chooses a random amount within a specified range for each.

Incursion sites become very mechanical after awhile. After enough sites one can call targets before a new wave spawns and an experienced fleet doesn't even need target calling because of how predictable things are. Overall this is a poor state of things as a top level event in EVE can be explained by a simple kill order list looked up online. Some variance to get players thinking and adapting would make Incursions more interesting and something that players actually want to keep doing instead of burning out an only using them to make ISK, the EVE currency.

Using an evolutionary program to alter the spawns and tactics of the NPCs would be a good way to add variance without having to hard code each possible spawn. The game should monitor the composition of each fleet that does a site, keeping track of relevant skill levels, ship fittings, and NPCs spawned in each wave in addition to the time the fleet takes. Then the game can preform a standard numeric minimization algorithm to generate spawns that it thinks will keep a minimally skilled fleet busy for 10 minutes. (This is done my minimizing the absolute value of completion time minus 10 minutes.)

To illustrate consider a simple Incursion site with 3 waves of NPCs where each spawn has a fixed point. Then the evolutionary algorithm is given a set of NPCs that may be used in this site. Every time a fleet enters an Incursion site it generates a set of three waves from the NPCs it is allowed to use. Given the large number of times fleets do these sites, it will allow the game to quickly go through the search space and find the collection of waves which, on average, take 10 minutes. To keep things interesting the algorithm would also do a certain amount of random experimenting which will enable it to eventually catch up with any new tactics the players devise. Thus forcing the players to keep experimenting and not rely on simple online guides.

I know that this post is a bit on the vague side and just provides a lofty overview of the idea. Over the next few posts I will try to unpack the idea more and go into the details of how it could be applied in practice.

No comments:

Post a Comment