Design and manage TraitorSim agent archetypes with OCEAN personality traits, stat biases, and gameplay profiles.
Design and manage TraitorSim agent archetypes that define distinct personality profiles, gameplay tendencies, and demographic templates. Archetypes use the Big Five (OCEAN) personality model to create psychologically grounded AI agents with emergent social behaviors.
# View existing archetype
from src.traitorsim.core.archetypes import ARCHETYPES
print(ARCHETYPES["charismatic_leader"])
# Create new archetype
from src.traitorsim.core.archetypes import ArchetypeDefinition
new_archetype = ArchetypeDefinition(
id="paranoid_investigator",
name="The Paranoid Investigator",
description="Hyper-vigilant agent who sees patterns everywhere",
ocean_ranges={
"openness": (0.65, 0.85), # Open to theories
"conscientiousness": (0.70, 0.90), # Detail-oriented
"extraversion": (0.35, 0.55), # Reserved
"agreeableness": (0.30, 0.50), # Confrontational
"neuroticism": (0.75, 0.95) # Anxious, paranoid
},
stat_ranges={
"intellect": (0.70, 0.90),
"dexterity": (0.40, 0.60),
"social_influence": (0.35, 0.55)
},
age_range=(28, 45),
typical_occupations=["detective", "journalist", "security analyst"],
geographic_bias=["London", "Edinburgh", "Manchester"],
socioeconomic_class=["middle", "upper-middle"],
strategic_drive="Expose traitors through pattern analysis",
gameplay_tendency="Aggressive voting, frequent accusations"
)
TraitorSim uses the Big Five personality traits to modulate agent behavior:
What it measures: Receptiveness to new ideas, creativity, intellectual curiosity
In TraitorSim gameplay:
Archetype examples:
Gameplay manifestations:
What it measures: Organization, reliability, goal-directed behavior
In TraitorSim gameplay:
Archetype examples:
Gameplay manifestations:
What it measures: Sociability, assertiveness, tendency to seek stimulation
In TraitorSim gameplay:
Archetype examples:
Gameplay manifestations:
What it measures: Cooperation, trust, compassion
In TraitorSim gameplay:
Archetype examples:
Gameplay manifestations:
What it measures: Emotional instability, anxiety, stress response
In TraitorSim gameplay:
Archetype examples:
Gameplay manifestations:
ocean_ranges = {
"openness": (0.80, 0.95), # Highly creative
"conscientiousness": (0.65, 0.85),
"extraversion": (0.50, 0.70),
"agreeableness": (0.55, 0.75),
"neuroticism": (0.30, 0.50)
}
ocean_ranges = {
"openness": (0.60, 0.80),
"conscientiousness": (0.55, 0.75),
"extraversion": (0.80, 0.95), # Highly charismatic
"agreeableness": (0.20, 0.40), # Low empathy
"neuroticism": (0.15, 0.35) # Emotionally stable
}
ocean_ranges = {
"openness": (0.20, 0.40), # Rigid thinking
"conscientiousness": (0.50, 0.70),
"extraversion": (0.40, 0.60),
"agreeableness": (0.45, 0.65),
"neuroticism": (0.60, 0.85) # Anxious
}
ocean_ranges = {
"openness": (0.70, 0.90),
"conscientiousness": (0.20, 0.45), # Chaotic
"extraversion": (0.75, 0.95), # Life of party
"agreeableness": (0.60, 0.80),
"neuroticism": (0.40, 0.60)
}
ocean_ranges = {
"openness": (0.45, 0.65),
"conscientiousness": (0.50, 0.70),
"extraversion": (0.35, 0.55),
"agreeableness": (0.15, 0.35), # Resentful
"neuroticism": (0.65, 0.90) # High stress
}
ocean_ranges = {
"openness": (0.55, 0.75),
"conscientiousness": (0.45, 0.65),
"extraversion": (0.60, 0.80),
"agreeableness": (0.75, 0.95), # Extremely trusting
"neuroticism": (0.50, 0.70)
}
ocean_ranges = {
"openness": (0.75, 0.95), # Highly creative
"conscientiousness": (0.40, 0.60),
"extraversion": (0.30, 0.70), # Variable
"agreeableness": (0.50, 0.70),
"neuroticism": (0.45, 0.65)
}
ocean_ranges = {
"openness": (0.40, 0.60),
"conscientiousness": (0.60, 0.80), # Facade only
"extraversion": (0.65, 0.85),
"agreeableness": (0.45, 0.65),
"neuroticism": (0.50, 0.70)
}
ocean_ranges = {
"openness": (0.20, 0.40), # Rigid ideology
"conscientiousness": (0.75, 0.95), # Highly organized
"extraversion": (0.50, 0.70),
"agreeableness": (0.40, 0.60),
"neuroticism": (0.40, 0.60)
}
ocean_ranges = {
"openness": (0.70, 0.90),
"conscientiousness": (0.50, 0.70),
"extraversion": (0.55, 0.75),
"agreeableness": (0.80, 0.95), # Idealistic trust
"neuroticism": (0.45, 0.65)
}
ocean_ranges = {
"openness": (0.60, 0.80),
"conscientiousness": (0.65, 0.85),
"extraversion": (0.60, 0.80),
"agreeableness": (0.25, 0.45), # Moral superiority
"neuroticism": (0.30, 0.50)
}
ocean_ranges = {
"openness": (0.65, 0.85),
"conscientiousness": (0.30, 0.50), # Low moral constraint
"extraversion": (0.60, 0.80),
"agreeableness": (0.35, 0.55),
"neuroticism": (0.35, 0.55)
}
ocean_ranges = {
"openness": (0.65, 0.85),
"conscientiousness": (0.70, 0.90),
"extraversion": (0.75, 0.90), # Natural leader
"agreeableness": (0.55, 0.75),
"neuroticism": (0.35, 0.55)
}
Define the core personality concept:
Set OCEAN ranges (use ranges, not single values):
# Good: Allows variance within archetype
"openness": (0.70, 0.90)
# Bad: Too rigid
"openness": 0.80
Define stat biases:
Specify demographic templates:
Define gameplay profile:
Test with persona generation:
# Generate test personas with new archetype
python scripts/generate_skeleton_personas.py --archetype paranoid_investigator --count 2
Read the current definition:
from src.traitorsim.core.archetypes import ARCHETYPES
print(ARCHETYPES["archetype_id"])
Understand the impact:
Update src/traitorsim/core/archetypes.py:
# Modify OCEAN ranges
ARCHETYPES["charismatic_leader"]["ocean_ranges"]["extraversion"] = (0.80, 0.95)
Regenerate personas if needed:
Check archetype balance in a persona library:
import json
from collections import Counter
with open('data/personas/library/test_batch_001_personas.json') as f:
personas = json.load(f)
archetype_counts = Counter(p['archetype'] for p in personas)
print(archetype_counts)
# Good distribution (15 personas):
# {'charismatic_leader': 2, 'prodigy': 1, 'charming_sociopath': 2, ...}
# Bad distribution:
# {'charismatic_leader': 8, 'prodigy': 7} # Too narrow
Diversity guidelines:
Some trait combinations create emergent behaviors:
High E + Low A = Domineering Leader
High O + High N = Creative Paranoid
Low C + High E = Chaotic Extrovert
High C + Low A = Ruthless Strategist
High A + High N = Anxious People-Pleaser
Power Level Considerations:
High Power Archetypes (require balancing):
Balanced Archetypes:
High Risk Archetypes (challenging to play):
Balancing strategies:
❌ Setting single values instead of ranges
"openness": 0.75 # Bad: No variance
✅ Use ranges to allow personality variance
"openness": (0.70, 0.80) # Good: 10% variance
❌ Creating psychologically implausible combinations
# Bad: High conscientiousness + low intellect + high social influence
# Real people with low intellect rarely achieve high social influence
✅ Use realistic trait correlations
# Good: The Incompetent Authority has FACADE conscientiousness
# Backstory explains they maintain appearances despite low competence
❌ Ignoring demographic plausibility
age_range=(18, 22),
typical_occupations=["CEO", "judge", "surgeon"] # Implausible
✅ Match age to occupation
age_range=(45, 65),
typical_occupations=["CEO", "judge", "surgeon"] # Plausible
❌ Too many extreme archetypes
# 13 archetypes, all with neuroticism < 0.2 or > 0.8
# Real populations have normal distribution
✅ Include moderate archetypes
# Mix of extreme, moderate, and balanced archetypes
# Most archetypes should have at least one trait in 0.4-0.6 range
Group related archetypes by shared traits:
The Manipulators (Low A, High E):
The Anxious Outcasts (High N, Low E):
The Idealists (High O, High A):
The Leaders (High E, High C):
Certain archetype combinations in a game create interesting dynamics:
Charismatic Leader + Infatuated Faithful = Cult-like following
Prodigy + Smug Player = Intellectual rivalry
Charming Sociopath + Bitter Traitor = Manipulation vs. Resentment
Comedic Psychic + Quirky Outsider = Chaos alliance
Zealot + Romantic = Ideology clash
When generating persona libraries, consider these pairings for rich social dynamics.
Use this skill when:
Don't use this skill for: