An innovative matchmaking system designed to create balanced, enjoyable matches in MOBA games, featuring sophisticated performance analysis and dynamic MMR adjustments. The system moves beyond traditional 50/50 win-rate forcing to focus on game quality, player development, and role-specific performance metrics.
project/
├── README.md
├── LICENSE
├── requirements.txt
├── setup.py
├── docs/
│ ├── API.md
│ ├── CONTRIBUTING.md
│ ├── METRICS.md
│ └── EXAMPLES.md
├── src/
│ └── moba_matchmaking/
│ ├── __init__.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── player.py
│ │ ├── match.py
│ │ └── metrics.py
│ ├── analysis/
│ │ ├── __init__.py
│ │ ├── performance.py
│ │ └── exceptional.py
│ ├── matchmaking/
│ │ ├── __init__.py
│ │ ├── algorithm.py
│ │ └── quality.py
│ └── utils/
│ ├── __init__.py
│ ├── safety.py
│ └── logging.py
├── tests/
│ ├── __init__.py
│ ├── test_performance.py
│ ├── test_matchmaking.py
│ └── test_metrics.py
└── examples/
├── basic_usage.py
└── advanced_scenarios.py
- Match Outcome (80%)
- Basic win/loss MMR adjustment
- Team contribution factors
- Game impact assessment
- Individual Performance (20%)
- Role-specific metrics
- Performance relative to expectations
- Context-aware evaluation
role_weights = {
'carry': {
'farm_efficiency': 0.3,
'damage_output': 0.3,
'survival': 0.2,
'objective_focus': 0.2
},
'mid': {
'farm_efficiency': 0.25,
'damage_output': 0.3,
'map_presence': 0.25,
'objective_focus': 0.2
},
'offlane': {
'space_creation': 0.3,
'survival': 0.25,
'damage_output': 0.25,
'objective_focus': 0.2
},
'soft_support': {
'map_presence': 0.3,
'utility': 0.3,
'teamfight_impact': 0.2,
'vision_control': 0.2
},
'hard_support': {
'vision_control': 0.3,
'utility': 0.3,
'survival': 0.2,
'teamfight_impact': 0.2
}
}
-
Combat Metrics
- Damage share analysis
- KDA efficiency
- Teamfight contribution
- Target prioritization
-
Resource Management
- Farm efficiency relative to role
- Map resource control
- Experience optimization
- Item timing benchmarks
-
Strategic Impact
- Map presence
- Objective control
- Space creation
- Vision game
-
Team Contribution
- Utility score
- Save impact
- Setup effectiveness
- Sacrifice value
# Clone the repository
git clone https://github.com/yourusername/moba-matchmaking.git
# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Run tests
pytest tests/
from moba_matchmaking import MetricsCalculator, MatchMaker
from moba_matchmaking.core import Player, Match, GameMetrics
# Initialize calculator
calculator = MetricsCalculator()
# Create player metrics
metrics = GameMetrics(
kills=10,
deaths=2,
assists=15,
last_hits=300,
gpm=650,
teamfight_participation=0.8
)
# Calculate performance
performance = calculator.calculate_overall_performance(
metrics=metrics,
game_data={'duration': 2400, 'team_damage': 50000},
role='carry'
)
# Initialize matchmaker
matchmaker = MatchMaker()
# Find optimal match
match = matchmaker.find_match()
# config.yml
metrics:
roles:
carry:
farm_efficiency: 0.3
damage_output: 0.3
survival: 0.2
objective_focus: 0.2
# ... other roles
performance:
exceptional_threshold: 0.9
excellent_threshold: 0.8
very_good_threshold: 0.7
matchmaking:
min_quality_threshold: 0.8
max_skill_difference: 500
team_size: 5
safety:
max_consecutive_exceptional: 3
time_window_hours: 24
minimum_game_duration: 25
# Create development environment
python -m venv venv
source venv/bin/activate
# Install development dependencies
pip install -r requirements-dev.txt
# Run tests with coverage
pytest --cov=moba_matchmaking tests/
- Follow PEP 8
- Use type hints
- Document all public methods
- Write unit tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues: For bug reports and feature requests
- Email: [email protected]
- Discord: Join our community
- MOBA game developers and communities
- Research papers on matchmaking systems
- Contributing developers and testers