Difference between revisions of "Corrupted Blood Incident"
(→Problem definition) |
(→Problem definition) |
||
(77 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | ''' | + | '''Name:''' Corrupted Blood Incident simulation, '''Author:''' Michal Frýba, [[User:Frym06|Frym06]] ([[User talk:Frym06|talk]]), '''Used tool:''' NetLogo 6.1.2 - beta2 |
World of Warcraft (WoW) is a massively multiplayer online role-playing game (MMORPG) released in 2004 by Blizzard Entertainment. Corrupted Blood was a virtual epidemic in the World of Warcraft an it began on 13 September 2005, when Blizzard introduced a new raid called Zul'Gurub. | World of Warcraft (WoW) is a massively multiplayer online role-playing game (MMORPG) released in 2004 by Blizzard Entertainment. Corrupted Blood was a virtual epidemic in the World of Warcraft an it began on 13 September 2005, when Blizzard introduced a new raid called Zul'Gurub. | ||
=Problem definition= | =Problem definition= | ||
− | [[File:Corrupted_blood.png |right| | + | [[File:Corrupted_blood.png |right|260px|thumb|The Corrupted Blood original debuff informations. Debuff was changed many times during early phases of inicent.]] |
Outbreak originated in the new dungeon Zul'Gurub and since then it is known as the "Corrupted Blood incident. Dungeon boss Hakkar was a blood god also known as the Soulflayer, who had, among his arsenal of weapons, a "debuff" spell called "Corrupted Blood." Infected players would suffer damage at regular repeating intervals, draining away their health. Debuff also damaged other near by players and rapidly spread. It was unintentionally released into the larger game world and became the first disease to affect entire servers. | Outbreak originated in the new dungeon Zul'Gurub and since then it is known as the "Corrupted Blood incident. Dungeon boss Hakkar was a blood god also known as the Soulflayer, who had, among his arsenal of weapons, a "debuff" spell called "Corrupted Blood." Infected players would suffer damage at regular repeating intervals, draining away their health. Debuff also damaged other near by players and rapidly spread. It was unintentionally released into the larger game world and became the first disease to affect entire servers. | ||
Line 12: | Line 12: | ||
The incident has helped many scientists model real-life epidemics since they would be able to draw on hard data showing how players actually responded during an outbreak. | The incident has helped many scientists model real-life epidemics since they would be able to draw on hard data showing how players actually responded during an outbreak. | ||
− | == | + | ==Game vs. real-life== |
+ | |||
+ | Unlike real life, the World of Warcraft virtual environment is specific in many ways. Among the main differences important for simulating the spread of the debuff epidemic are the following: | ||
+ | * Unlike any other real-life disease, debuff has an extremely high infectivity, spreading to all players in the spread range. | ||
+ | * Debuff also has a very rapid course. Players with low levels or health can be killed instantly. Players with higher levels can survive a certain duration of the debuff. | ||
+ | * Players have a defined amount of health (HP). If their health drops to zero they are moved to the graveyard in the form of a spirit. The spirit cannot interact with the environment or use action abilities. | ||
+ | * Death is not permanent. If a ghost player reaches the place of his death he can revive with a certain amount of health. | ||
+ | * A player character can have a "healer" class. Healers can use their abilities to increase the health of injured players or remove debuff. | ||
+ | |||
+ | |||
+ | [[File:cb_diagram.png |center|]] | ||
=Method= | =Method= | ||
+ | The NetLogo program was used to develop the simulation. NetLogo is used for agent simulations. In this case, the reactive agents represent player characters in capital city. | ||
=Model= | =Model= | ||
+ | The model represents a simplified environment of the capital. In the capital, players perform a huge number of interactions with the environment (using mailboxes, completing quests, auctions, logging into arenas and battlegrounds, improving their professions, using travel hubs and portals to travel to other cities, etc.). Due to the number of "objects" that could be the target of players' movement, the objects are not directly present in the environment and the movement is simplified as a route to random targets on the map. | ||
+ | |||
+ | The model is quite adjustable using the user settings on the Interface screen. The user can choose the following parameters: | ||
+ | * Number of players present | ||
+ | * Number of infected players at the beginning of the simulation | ||
+ | * The percentage chance that a player's character is a healer | ||
+ | * Whether healthy players should avoid being infected | ||
+ | * Whether infected players should distance themselves from other players | ||
+ | * Whether players should revive after a certain time | ||
+ | * The health threshold at which healers heal players rather than remove the Corrupted Blood debuff | ||
+ | * Set the percentage chance of making a mistake (distancing / avoiding) | ||
+ | * Whether healers should have specific classes with specific abilities and healing style | ||
+ | |||
+ | The simulation is set up with the Setup button and started with the Go button. | ||
+ | |||
+ | ==World setting== | ||
+ | |||
+ | The '''general setup''' of the world is based on the available data as follows. The distance in WoW is calculated in yards, so in the simulation one yard equals one patch. The characters move at a speed of 7 yards per second. The range of abilities (heal or spells) is higher than the distance to which the debuff spreads. All numeric data is scaled to seconds, and Poisson or Normal distribution is used for interval values (such as heal value or debuff damage). Each time the agents are moved by 7 yards (jump 1 seven times), the numeric data is recalculated. There are two types of agents. Regular characters (no special abilities) and Healer characters (can heal other players and remove debuffs). Agents can be in three states. Uninfected (may become infected), Infected (spreads debuff, cannot become infected) and Dead ("immune", not permanent). The simulation cannot be started if the specified number of infected is greater than the total number of players. The simulation is stopped if no one is infected on the map. | ||
+ | |||
+ | The '''healers-percentage''' slider determines the percentage chance that the character is set as a healer. The calculation is based on the generation of random numbers and a comparison with the settings. | ||
+ | |||
+ | '''Avoid-infected''' sets up avoiding infected characters. Uninfected agents observe the area in front of them, and if they see an infected character, they turn right. They repeat this action as long as there is an infected player in the area in front of them, or until they turn 360 degrees. Only then will he take a step forward. The viewing width is set to 180 degrees and the surveillance is set to a value higher than the infection distance. This allows healer-class characters to heal and remove debuffs without becoming infected. The range of healing abilities was reported to be greater than the infection distance. | ||
+ | |||
+ | The '''infected-distancing''' setting determines whether infected characters should be removed from other characters. The logic is that if a character is infected and registers around an uninfected player, they will stop rather than continue to their goal and risk spreading the infection. The effect of this setting has a greater effect only in combination with avoid-infected ON. | ||
+ | |||
+ | The '''revive''' setting determines whether the dead character should be revived after a certain time. According to the available information, the journey from the nearest graveyard to the city center takes approximately 15 seconds. After about this time, the character, as in the game, is brought back to life with 20% of maximum health. | ||
+ | |||
+ | The '''healing-threshold''' slider determines the percentage of remaining health that healer agents begin to heal instead of removing debuffs from infected characters. This decision is up to each player, so the default value is 50%. | ||
+ | |||
+ | Everyone makes mistakes. '''Mistake-factor''' is used to correct the perfect behavior of protectors when setting avoid infected and infected-distancing ON. Some players may choose to spread the debuff intentionally, others may not notice the infected surrounding player, and the infected player may mistakenly get too close to others. To put these situations into the model, the percentage chance of making a wrong movement of players is determined. | ||
+ | |||
+ | Setting '''various-healers''' is one of the more interesting. Healers defined in the settings above can take on different classes when set to ON. Classes can be priest, druid, paladin, shaman. Each class can specialize in healing or damage, and this will make it stronger in that role. This factor is neglected to simplify the model. Optionally, it can be partially replaced by healers-percentage settings. According to the available data, the proportion of characters with a healer class was 30%. Specifically, 10% priest, 8% druid, 6% paladin and 6% shaman. Details of the healing style of specific healer classes are described below. When set to OFF, all healers are set as a "universal healer" which corresponds to a combination of all specific classes. The spell power of all healers is derived from HPS (heal-per-second) data in dungeons and statistics of the most used spells of each class. | ||
+ | |||
+ | ==Healers== | ||
+ | The following healer classes can appear in the model based on the percentage distribution. Each class has a unique healing style. Not listed is a "universal healer" class that was built for simulation purposes. It is more or less about the balanced style of all the mentioned classes present in the game. Universal healers give very similar performance as a combination of all other classes. | ||
+ | |||
+ | ===Priest=== | ||
+ | [[File:logo_priest.jpg]] Priests focuses on healing small groups of characters with medium-strength heals. In the model, priests target 1-2 characters in the healing range with an average HPS of 220. | ||
+ | |||
+ | ===Druid=== | ||
+ | [[File:logo_druid.jpg]] Druids focus on heal-over-time abilities. They can heal medium groups of characters. In the model, druids target 1-3 characters in the healing range and apply a heal lasting 12 seconds to it. Every second, the target is then healed for an average of 71 health. Thus, they focus more on sustainable healing over time. | ||
+ | |||
+ | ===Paladin=== | ||
+ | [[File:logo_paladin.jpg]]Paladins focus on big single target heals. In the model, the plains target only one character in the healing range and heal her for an average of 350 health. | ||
+ | |||
+ | ===Shaman=== | ||
+ | [[File:logo_shaman.jpg]]Shamans focus on the chain healing of large groups of people. In the model, Shamans target 3 characters in the healing range and heal them for an average of 185 health. | ||
=Results= | =Results= | ||
+ | To get interesting results, I decided to simulate several different epidemic scenarios and with different settings of agent behavior. In all following scenarios the number of players was set to 1500 so that with a map size of 100 x 100 yards the player density was 1.5/yard to resemble crowded capital city. The initial number of infected agents was set to 5. The percentage chance that the character will be healer was set to 30% based on available data. | ||
+ | |||
+ | ==Real in-game scenario== | ||
+ | To obtain results, the model was set to be as close as possible to the situation in the game. Avoiding infected and distancing of infected was set to ON with an error factor of 50%. A higher error rate is intended to offset the possible intentional spread or inattention of players. Various classes of healers were used and the healing threshold was set at 50%. | ||
+ | |||
+ | From this setting, it could be observed that after the rapid growth of newly infected, the number stabilized after some time at the average value of 70 newly infected per second. Since death is not permanent in the game, players pursued to revive before the epidemic subsided, thus keeping the debuff in the population. In this setting, the agents managed to avert the epidemic only in very lucky cases. | ||
+ | |||
+ | [[File:cb_model.png |center|1080px|]] | ||
+ | |||
+ | ==No reviving scenario== | ||
+ | In this scenario, non-healer characters died out quickly. The Healers were able to keep each other alive and reverse the pandemic after a very, very long time. | ||
+ | |||
+ | ==Perfect behaviour scenario== | ||
+ | If the error factor is set to 0 and the avoid-infected and infected-distancing setting is ON. Agents behave perfectly and the epidemic is quickly averted with minimal losses. This also applies to an increase in density and an increase in the number of initial infected. | ||
+ | [[File:cb_avoid.png |centre|]] | ||
=Conclusion= | =Conclusion= | ||
+ | |||
+ | The simulation of the virtual Corrupted Blood epidemic is influenced by a large number of factors. The ability of players to return to life repeatedly has a great influence on the overall course of the virtual epidemic. This keeps the population density at a high value for the spread of the debuff. Another important factor is the error rate of players. At a setting of around 15%, the epidemic has already been averted at the original setting. | ||
+ | What virtual epidemics have in common with real-life epidemics is that the higher the population density, the faster it spreads. Corrupted blood debuff is very aggressive in spreading. The number of players on the map therefore has a huge impact on spreading. At lower population densities, the number of healers also plays an important role. Although they increase the duration of the debuff in the population, they quite significantly reduce the number of victims. | ||
+ | Factors which the model does not take into account for the sake of simplicity and which influenced the course of the epidemic in 2005 may be the following: | ||
+ | * NPCs (non-playable characters) could also be infected, which could not avoid the epidemic | ||
+ | * NPCs have a much greater health regeneration and health pool than the average player | ||
+ | * Some players spread the debuff intentionally | ||
+ | * healers could run out of mana, which is a resource for using spells | ||
+ | |||
+ | As a recommendation for dealing with a similar pandemic, the players should be as close as possible to the "Perfect Behavior Scenario". However, this is very difficult in practice because it significantly reduces the game experience. Players need to interact with NPCs and with each other. Playing under the conditions of such a pandemic can be fun at first but can be depressing the longer the situation lasts. And also test properly before releasing the bug :) | ||
=Code= | =Code= | ||
+ | [[File:Corrupted_blood_incident_final.nlogo]] | ||
= Resources = | = Resources = | ||
− | # | + | #[https://wowclassicpopulation.com/characters Data about population, Percentages of classes] |
− | # | + | #[https://www.mmo-champion.com/threads/1955390-Health-pools-over-expansions Average HP endgame] |
− | # | + | #[https://wow.gamepedia.com/Corrupted_Blood_(debuff) General info, Average HP] |
+ | #https://www.gamesradar.com/there-was-just-a-panic-players-scientists-and-blizzard-look-back-on-world-of-warcrafts-corrupted-blood-plague/ | ||
+ | #https://fahrplan.events.ccc.de/congress/2007/Fahrplan/attachments/984_paper.pdf |
Latest revision as of 18:50, 20 January 2021
Name: Corrupted Blood Incident simulation, Author: Michal Frýba, Frym06 (talk), Used tool: NetLogo 6.1.2 - beta2
World of Warcraft (WoW) is a massively multiplayer online role-playing game (MMORPG) released in 2004 by Blizzard Entertainment. Corrupted Blood was a virtual epidemic in the World of Warcraft an it began on 13 September 2005, when Blizzard introduced a new raid called Zul'Gurub.
Contents
Problem definition
Outbreak originated in the new dungeon Zul'Gurub and since then it is known as the "Corrupted Blood incident. Dungeon boss Hakkar was a blood god also known as the Soulflayer, who had, among his arsenal of weapons, a "debuff" spell called "Corrupted Blood." Infected players would suffer damage at regular repeating intervals, draining away their health. Debuff also damaged other near by players and rapidly spread. It was unintentionally released into the larger game world and became the first disease to affect entire servers.
The "Corrupted Blood incident" was not intentional. The biggest factor in the rapid spread of the disease was a glitch in the programming. Non-playable companions of players could became infected and could carry debuff out of the dungeon. This turned them into asymptomatic carriers and a form of vector for the debuff. As Corrupted Blood infection spread uncontrollably. During the epidemic capital cities were abandoned as players rushed to evacuate to the relative safety of the countryside, leaving urban areas filled with dead player characters.
Blizzard had to fix the problem by applying hot fixes, patches and multiple hard resets of the servers. The plague ended on 8 October 2005, when Blizzard made pets unable to be affected by Corrupted Blood debuff. Debuff could not get outside of Zul'Gurub. The incident has helped many scientists model real-life epidemics since they would be able to draw on hard data showing how players actually responded during an outbreak.
Game vs. real-life
Unlike real life, the World of Warcraft virtual environment is specific in many ways. Among the main differences important for simulating the spread of the debuff epidemic are the following:
- Unlike any other real-life disease, debuff has an extremely high infectivity, spreading to all players in the spread range.
- Debuff also has a very rapid course. Players with low levels or health can be killed instantly. Players with higher levels can survive a certain duration of the debuff.
- Players have a defined amount of health (HP). If their health drops to zero they are moved to the graveyard in the form of a spirit. The spirit cannot interact with the environment or use action abilities.
- Death is not permanent. If a ghost player reaches the place of his death he can revive with a certain amount of health.
- A player character can have a "healer" class. Healers can use their abilities to increase the health of injured players or remove debuff.
Method
The NetLogo program was used to develop the simulation. NetLogo is used for agent simulations. In this case, the reactive agents represent player characters in capital city.
Model
The model represents a simplified environment of the capital. In the capital, players perform a huge number of interactions with the environment (using mailboxes, completing quests, auctions, logging into arenas and battlegrounds, improving their professions, using travel hubs and portals to travel to other cities, etc.). Due to the number of "objects" that could be the target of players' movement, the objects are not directly present in the environment and the movement is simplified as a route to random targets on the map.
The model is quite adjustable using the user settings on the Interface screen. The user can choose the following parameters:
- Number of players present
- Number of infected players at the beginning of the simulation
- The percentage chance that a player's character is a healer
- Whether healthy players should avoid being infected
- Whether infected players should distance themselves from other players
- Whether players should revive after a certain time
- The health threshold at which healers heal players rather than remove the Corrupted Blood debuff
- Set the percentage chance of making a mistake (distancing / avoiding)
- Whether healers should have specific classes with specific abilities and healing style
The simulation is set up with the Setup button and started with the Go button.
World setting
The general setup of the world is based on the available data as follows. The distance in WoW is calculated in yards, so in the simulation one yard equals one patch. The characters move at a speed of 7 yards per second. The range of abilities (heal or spells) is higher than the distance to which the debuff spreads. All numeric data is scaled to seconds, and Poisson or Normal distribution is used for interval values (such as heal value or debuff damage). Each time the agents are moved by 7 yards (jump 1 seven times), the numeric data is recalculated. There are two types of agents. Regular characters (no special abilities) and Healer characters (can heal other players and remove debuffs). Agents can be in three states. Uninfected (may become infected), Infected (spreads debuff, cannot become infected) and Dead ("immune", not permanent). The simulation cannot be started if the specified number of infected is greater than the total number of players. The simulation is stopped if no one is infected on the map.
The healers-percentage slider determines the percentage chance that the character is set as a healer. The calculation is based on the generation of random numbers and a comparison with the settings.
Avoid-infected sets up avoiding infected characters. Uninfected agents observe the area in front of them, and if they see an infected character, they turn right. They repeat this action as long as there is an infected player in the area in front of them, or until they turn 360 degrees. Only then will he take a step forward. The viewing width is set to 180 degrees and the surveillance is set to a value higher than the infection distance. This allows healer-class characters to heal and remove debuffs without becoming infected. The range of healing abilities was reported to be greater than the infection distance.
The infected-distancing setting determines whether infected characters should be removed from other characters. The logic is that if a character is infected and registers around an uninfected player, they will stop rather than continue to their goal and risk spreading the infection. The effect of this setting has a greater effect only in combination with avoid-infected ON.
The revive setting determines whether the dead character should be revived after a certain time. According to the available information, the journey from the nearest graveyard to the city center takes approximately 15 seconds. After about this time, the character, as in the game, is brought back to life with 20% of maximum health.
The healing-threshold slider determines the percentage of remaining health that healer agents begin to heal instead of removing debuffs from infected characters. This decision is up to each player, so the default value is 50%.
Everyone makes mistakes. Mistake-factor is used to correct the perfect behavior of protectors when setting avoid infected and infected-distancing ON. Some players may choose to spread the debuff intentionally, others may not notice the infected surrounding player, and the infected player may mistakenly get too close to others. To put these situations into the model, the percentage chance of making a wrong movement of players is determined.
Setting various-healers is one of the more interesting. Healers defined in the settings above can take on different classes when set to ON. Classes can be priest, druid, paladin, shaman. Each class can specialize in healing or damage, and this will make it stronger in that role. This factor is neglected to simplify the model. Optionally, it can be partially replaced by healers-percentage settings. According to the available data, the proportion of characters with a healer class was 30%. Specifically, 10% priest, 8% druid, 6% paladin and 6% shaman. Details of the healing style of specific healer classes are described below. When set to OFF, all healers are set as a "universal healer" which corresponds to a combination of all specific classes. The spell power of all healers is derived from HPS (heal-per-second) data in dungeons and statistics of the most used spells of each class.
Healers
The following healer classes can appear in the model based on the percentage distribution. Each class has a unique healing style. Not listed is a "universal healer" class that was built for simulation purposes. It is more or less about the balanced style of all the mentioned classes present in the game. Universal healers give very similar performance as a combination of all other classes.
Priest
Priests focuses on healing small groups of characters with medium-strength heals. In the model, priests target 1-2 characters in the healing range with an average HPS of 220.
Druid
Druids focus on heal-over-time abilities. They can heal medium groups of characters. In the model, druids target 1-3 characters in the healing range and apply a heal lasting 12 seconds to it. Every second, the target is then healed for an average of 71 health. Thus, they focus more on sustainable healing over time.
Paladin
Paladins focus on big single target heals. In the model, the plains target only one character in the healing range and heal her for an average of 350 health.
Shaman
Shamans focus on the chain healing of large groups of people. In the model, Shamans target 3 characters in the healing range and heal them for an average of 185 health.
Results
To get interesting results, I decided to simulate several different epidemic scenarios and with different settings of agent behavior. In all following scenarios the number of players was set to 1500 so that with a map size of 100 x 100 yards the player density was 1.5/yard to resemble crowded capital city. The initial number of infected agents was set to 5. The percentage chance that the character will be healer was set to 30% based on available data.
Real in-game scenario
To obtain results, the model was set to be as close as possible to the situation in the game. Avoiding infected and distancing of infected was set to ON with an error factor of 50%. A higher error rate is intended to offset the possible intentional spread or inattention of players. Various classes of healers were used and the healing threshold was set at 50%.
From this setting, it could be observed that after the rapid growth of newly infected, the number stabilized after some time at the average value of 70 newly infected per second. Since death is not permanent in the game, players pursued to revive before the epidemic subsided, thus keeping the debuff in the population. In this setting, the agents managed to avert the epidemic only in very lucky cases.
No reviving scenario
In this scenario, non-healer characters died out quickly. The Healers were able to keep each other alive and reverse the pandemic after a very, very long time.
Perfect behaviour scenario
If the error factor is set to 0 and the avoid-infected and infected-distancing setting is ON. Agents behave perfectly and the epidemic is quickly averted with minimal losses. This also applies to an increase in density and an increase in the number of initial infected.
Conclusion
The simulation of the virtual Corrupted Blood epidemic is influenced by a large number of factors. The ability of players to return to life repeatedly has a great influence on the overall course of the virtual epidemic. This keeps the population density at a high value for the spread of the debuff. Another important factor is the error rate of players. At a setting of around 15%, the epidemic has already been averted at the original setting. What virtual epidemics have in common with real-life epidemics is that the higher the population density, the faster it spreads. Corrupted blood debuff is very aggressive in spreading. The number of players on the map therefore has a huge impact on spreading. At lower population densities, the number of healers also plays an important role. Although they increase the duration of the debuff in the population, they quite significantly reduce the number of victims. Factors which the model does not take into account for the sake of simplicity and which influenced the course of the epidemic in 2005 may be the following:
- NPCs (non-playable characters) could also be infected, which could not avoid the epidemic
- NPCs have a much greater health regeneration and health pool than the average player
- Some players spread the debuff intentionally
- healers could run out of mana, which is a resource for using spells
As a recommendation for dealing with a similar pandemic, the players should be as close as possible to the "Perfect Behavior Scenario". However, this is very difficult in practice because it significantly reduces the game experience. Players need to interact with NPCs and with each other. Playing under the conditions of such a pandemic can be fun at first but can be depressing the longer the situation lasts. And also test properly before releasing the bug :)
Code
File:Corrupted blood incident final.nlogo
Resources
- Data about population, Percentages of classes
- Average HP endgame
- General info, Average HP
- https://www.gamesradar.com/there-was-just-a-panic-players-scientists-and-blizzard-look-back-on-world-of-warcrafts-corrupted-blood-plague/
- https://fahrplan.events.ccc.de/congress/2007/Fahrplan/attachments/984_paper.pdf