sub2piracy
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model is an agent-based simulation of digital content consumption, focusing on how subscribers and pirates interact in a system where content availability, subscription costs, social influence, and user frustration all affect behavior. Each agent represents a user, classified either as a subscriber who legally accesses content or a pirate who bypasses payment. The model explores how content grows, is maintained, and is consumed over time, while accounting for factors such as maintenance costs, content decay, social influence, and individual loyalty or frustration.
The primary goal of the model is to understand the dynamics of content consumption in an ecosystem where economic incentives, social factors, and content availability interact. It highlights conditions under which content can flourish, stagnate, or decline, and illustrates the complex feedback loops between user behavior and system-level outcomes.
HOW IT WORKS
The model works by simulating the interactions of individual agents over time, where each agent follows a set of behavioral rules that determine their decisions and influence the system as a whole.
- Agent types: There are two types of agents: subscribers and pirates. Subscribers pay a subscription fee to access content legally, while pirates access content without paying. Agents have attributes like income, loyalty, and frustration that guide their behavior.
- Content generation and maintenance: The total available content grows proportionally to the revenue generated by subscribers. At the same time, maintenance costs reduce current content. Maintenance depends on the current amount of content, representing the effort required to manage and sustain it over time.
- Frustration and loyalty: Agents’ loyalty decreases with frustration, which is influenced by content availability, content decay, and system fragmentation. Frustration, combined with personal tendencies and social factors, determines whether agents switch between being subscribers and pirates.
- System fragmentation: The model includes a fragmentation factor representing how content is spread across multiple services or platforms. Higher fragmentation increases user frustration because agents must manage access across several sources, making it harder to find or consume desired content.
- Social influence: Agents observe their neighbors’ behaviors. The fraction of nearby pirates or subscribers influences their own likelihood of switching, representing peer pressure and social learning.
- Decision rules: Each tick, agents evaluate whether to remain subscribers or switch to piracy, or vice versa, based on a combination of loyalty, frustration, ability to pay, subscription cost, and social influence. Probabilities govern switching behavior, making the system stochastic but influenced by the current state of the network.
- Feedback loops: As agents switch types, the subscriber base changes, altering revenue and content growth. This, in turn, affects maintenance costs and frustration levels, creating feedback loops that drive the emergent dynamics of the system.
These local rules combine to produce emergent system-level patterns over time.
HOW TO USE IT
The interface tab section is split into 3 sections.
1. Settings
To run the model, use the buttons at the top of the interface:
- setup: Initializes the simulation environment and creates all agents according to the current parameter settings.
- go (one tick): Advances the simulation by a single time step.
- go (forever): Continuously runs the simulation until all agents become pirates.
You can adjust several environmental parameters:
- subscription-price: The cost that agents must pay to be a subscriber.
- enforcement-risk: Represents the likelihood of pirates being caught or deterred.
- social-influence: Determines how strongly agents are affected by their neighbors’ behavior.
- subscriber-pct: The initial proportion of agents that start as subscribers.
- fragmentation: Measures how content is distributed across multiple platforms, which can increase frustration. Lower = less split between platforms.
- base-maintenance-rate: The rate at which content is maintained and decays over time.
- sub-content-pct: The fraction of total content initially available to subscribers.
All parameters are normalized to provide consistent behavior across the simulation.
2. View
The central view displays the agents and their behaviors: subscribers have the "people" shape and pirates are "bug" shaped. Agents move and change behavior over time according to their rules, and the content environment updates dynamically.
3. Monitors and Graphs
On the right side, several monitors and graphs track key metrics:
- "subber" and "pirates" trackers: Show the number of agents in each group.
- "Subbers vs Piraters" graph: Plots the evolution of subscriber and pirate populations over time.
- "Content Count" graph: Displays total content versus subscription-accessible content, showing growth, maintenance, and consumption dynamics.
- Other Trackers: Additional values for debugging or detailed observatio.
THINGS TO NOTICE
When running the model, there are several patterns and dynamics that are especially interesting to observe:
- Content growth and maintenance: Content growth affects agent behavior over time: if subscriber revenue drops, content creation can stagnate, illustrating the balance between creation and upkeep. If revenue from subscribers drops, content creation can stagnate and the available subscriber content can decline, illustrating the balance between creation and upkeep.
- Stabilizing behavior: Over time, agents tend to settle into more stable roles as subscribers or pirates. Initially, decisions may fluctuate as agents respond to content availability, frustration, and social influence, but eventually the population reaches a pattern where most agents maintain consistent behavior, reflecting lasting adaptation to the system conditions.
- Frustration effects: Agents experiencing high frustration—due to low content availability, high fragmentation, or content decay are more likely to switch to piracy. This feedback loop can amplify shifts in the population.
- Impact of fragmentation: Higher fragmentation, where content is spread across multiple services, increases frustration and can reduce loyalty. This may lead to faster switching to piracy and lower overall subscriber engagement.
- Emergent population dynamics: The interplay of these factors can produce non-linear behaviors: plateaus, sudden drops, or oscillations in agent populations and content.
By experimenting with different parameter values and observing the behavior in the view and graphs, users can gain insight into how micro-level agent decisions produce macro-level trends in content consumption and piracy.
THINGS TO TRY
- Vary the subscription price: Increase or decrease the subscription cost to see how it affects the number of subscribers, content growth, and overall system stability. High prices may reduce subscribers and slow content growth, while low prices can encourage more subscribers. Don't forget to check the extremes.
- Adjust enforcement risk: Changing the likelihood that pirates are caught or deterred can influence switching behavior and the balance between subscribers and pirates. Observe how stronger enforcement stabilizes the subscriber base.
- Modify social influence: Increase or decrease the weight of neighbor behavior on agents’ decisions. Social influence is relatively low, so changes may have subtle effects.
- Experiment with fragmentation: Change the fragmentation factor to see how distributing content across multiple platforms affects agent frustration, loyalty, and long-term settling into roles.
- Test maintenance rate: Adjust the base maintenance rate to explore how content decay impacts the system. Higher maintenance rates can reduce total content over time, while lower rates allow content to accumulate.
- Observe long-term dynamics: Run the model for many ticks using “go (forever)” to watch how agents eventually stabilize and content reaches equilibrium levels. Pay attention to the interplay between frustration, loyalty, and social influence in producing lasting system behavior.
- Combine parameter changes: Try changing multiple parameters at once to explore more complex scenarios and see how the system responds to interacting effects.
EXTENDING THE MODEL
- Passive consumers: Introduce a third agent type that neither subscribes nor pirates. Especially in environments with high enforcement risk or high subscription costs, some users may opt out entirely rather than pay or risk piracy.
- New vs. old content and nostalgia: The model could distinguish between recently created content and older content that may eventually disappear. Agents could have a nostalgia attribute that increases as old content they value disappears. High nostalgia could increase the likelihood of agents switching to piracy to access unavailable content, capturing the emotional attachment users have to legacy media.
- Content quality and popularity: Each piece of content could be assigned a quality or popularity score, representing its desirability. Agents might preferentially engage with high-quality or popular content, which would influence both subscription loyalty and piracy behavior. This allows the model to capture how certain content can drive overall system dynamics more strongly than others.
- Heterogeneous agent sensitivity and social network structure: Agents could vary in their sensitivity to frustration, social influence, and subscription price, introducing more diversity in behavior. Additionally, replacing the simple local-neighbor interactions with a more complex social network structure would allow for clustering effects and localized variations in behavior. For example, different regions of the network could experience varying levels of enforcement risk, leading to observable patterns of piracy and subscription loyalty across the population.
NETLOGO FEATURES
All the model features have been described above.
RELATED MODELS
Nil.
CREDITS AND REFERENCES
Model developer: Dominic Braam, 2025.
Platform: Developed in NetLogo 7.0.2.
Comments and Questions
breed [subbers subber] breed [pirates pirate] globals [ switch-cost content-sub-total content-max deletion-rate content-sub-norm content-flux ] turtles-own [ income frustration acceptable-available-content initial-breed loyalty ] to setup clear-all set subscription-price 0.15 set enforcement-risk 0.7 set social-influence 0.3 set switch-cost 0.5 let base-deletion 0.01 set content-max 1000 set content-sub-total content-max * (sub-content-pct / 100) set fragmentation 0.2 set deletion-rate base-deletion - content-flux set base-maintenance-rate 0.00005 setup-turtles-grid reset-ticks end to setup-turtles-grid ask patches [ sprout 1 [ set heading 0 set income (random-float 1) ^ 2 ;; skewed toward lower incomes like an income distribution let acc-cont-raw random-normal 0.5 0.15 set acceptable-available-content max list 0 min list 1 acc-cont-raw set loyalty 1 (ifelse random 100 < subscriber-pct [set breed subbers set initial-breed subbers set frustration random-float 0.5] [set breed pirates set initial-breed pirates set frustration 0.5 + random-float 0.5] ) set pcolor grey update-appearance ] ] end to go if count pirates / count turtles = 1 [ stop ] ;; normalize content levels set content-sub-norm content-sub-total / content-max let content-pirate-norm 1 ;; all content can be pirated update-content ask turtles [ let content-acceptable-norm min list 1 (content-sub-total / (content-max * max list 0.01 acceptable-available-content)) let personal-tendency ifelse-value (breed = initial-breed) [1] [0] ;; frustration stuff START let base-decay 0.05 ;; fraction of current frustration lost per tick let base-sensitivity 0.6 ;; how strongly conditions can raise frustration let f-level (0.5 * (1 - content-acceptable-norm) + 0.4 * fragmentation + 0.1 * deletion-rate ) set f-level max list 0 min list 1 f-level ;; heterogeneity ;; derive sensitivity from income: lower-income users often more sensitive. let sens (0.5 + (1 - income) * 0.7) set sens max list 0.2 min list 1.5 sens let increase (1 - frustration) * base-sensitivity * sens * f-level let decay frustration * base-decay set frustration frustration - decay + increase set frustration max list 0 min list 1 frustration ;; frustration stuff END set loyalty max list 0.3 (loyalty - 0.005 * frustration) ;; neighbor influence calcs let nearby-subbers count (turtles-on neighbors) with [breed = subbers] let nearby-pirates count (turtles-on neighbors) with [breed = pirates] let nearby-count count (turtles-on neighbors) let nearby-pirates-pct ifelse-value (nearby-count > 0) [nearby-pirates / nearby-count] [0] let nearby-subbers-pct 1 - nearby-pirates-pct let can-afford income >= subscription-price (ifelse can-afford [ let price-factor subscription-price / max list income 0.01 let social-factor nearby-pirates-pct * social-influence let enforcement-factor 1 - enforcement-risk ;; be a pirate? let blended-tendency ((loyalty * personal-tendency) + ((1 - loyalty) * (frustration + price-factor + social-factor) / 3) / 2) let p-switch blended-tendency * enforcement-factor if random-float 1 < p-switch [ set breed pirates ] ;; be a subber? let back-social nearby-subbers-pct * social-influence let back-content content-acceptable-norm let p-back ((0.5 * (switch-cost - frustration) + 0.3 * back-social + 0.2 * back-content) + (loyalty * personal-tendency) / 2) if random-float 1 < p-back [ set breed subbers ] ] [set breed pirates] ) update-appearance ] tick end ;to update-content ; ; let revenue-factor (count subbers / count turtles) * subscription-price ; ; ;; maintenance cost grows with content ; let maintenance-cost 0.000005 * (content-sub-total ^ 1.1) ; ; ;; compute content flux ; set content-flux revenue-factor - maintenance-cost ; set content-flux max list -0.05 min list 0.05 content-flux ; clamp to reasonable bounds ; ; ;; update content ; let delta content-sub-total * content-flux ; set content-sub-total content-sub-total + delta ; if delta > 0 [set content-max content-max + delta] ; ; if content-sub-total > content-max [ set content-sub-total content-max ] ; if content-sub-total < 0 [ set content-sub-total 0 ] ;end to update-content ;; revenue from current subscribers let revenue-factor (count subbers / count turtles) * subscription-price ;; new content created this tick let new-content revenue-factor set content-sub-total content-sub-total + new-content set content-max content-max + new-content ;; track all content created ;; maintenance cost only depends on current content let maintenance-cost base-maintenance-rate * (content-sub-total ^ 1.1) set content-sub-total content-sub-total - maintenance-cost ;; clamp content to reasonable bounds if content-sub-total > content-max [ set content-sub-total content-max ] if content-sub-total < 0 [ set content-sub-total 0 ] end to update-appearance if breed = subbers [ set shape "person" set color scale-color blue income 0 1 ] if breed = pirates [ set shape "bug" set color scale-color red income 0 1 ] end
There is only one version of this model, created about 8 hours ago by Dominic Braam.
Attached files
| File | Type | Description | Last updated | |
|---|---|---|---|---|
| sub2piracy.png | preview | view | about 8 hours ago, by Dominic Braam | Download |
This model does not have any ancestors.
This model does not have any descendants.
Download this model