Files
euchre_camp/docs/GAME_GENERATION_SUMMARY.md
T
david 123df671f5 nextjs-rewrite (#5)
Reviewed-on: #5
Co-authored-by: David Gwilliam <dhgwilliam@gmail.com>
Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
2026-03-30 02:30:13 +00:00

2.6 KiB

Game Generation and ELO Rating Verification

Summary

Successfully generated 150 new games and updated player statistics to verify ELO rating calculations are working correctly.

Process

1. Generated 150 Games

  • Created generate_games.py script to generate realistic game data
  • Used 24 existing players in the database
  • Generated random but realistic scores (Euchre games typically 10-15 points)
  • Dates ranged from 0-30 days in the past
  • Games inserted into the matches table

2. Updated Player Statistics

  • Created update_player_stats.py script to recalculate player statistics
  • Reset all player stats to initial values (ELO: 1000, games: 0)
  • Processed all 184 matches (150 new + existing games)
  • Applied standard K-factor (32) ELO calculation formula
  • Updated each player's:
    • currentElo - based on wins/losses and opponent ratings
    • gamesPlayed - total games played
    • wins - number of wins
    • losses - number of losses

Results

Top 10 Players by ELO Rating

Rank Player ELO Games W/L Win Rate
1 Emily 1050 30 20/10 66.7%
2 Lucas 1044 38 24/14 63.2%
3 Mike G 1040 23 15/8 65.2%
4 Kevin 1031 33 19/14 57.6%
5 Morgan 1031 31 19/12 61.3%
6 Alissa 1018 30 18/12 60.0%
7 Emma 1017 37 21/16 56.8%
8 Sara R 1015 24 14/10 58.3%
9 Amelia 1009 35 19/16 54.3%
10 Jesse C 1002 31 16/15 51.6%

Total Statistics

  • Total Matches: 184
  • Total Players: 24
  • Average Games per Player: 30.7
  • ELO Range: 900 - 1050 (150 point spread)
  • Win Rate Range: 25.9% - 66.7%

ELO Calculation Verification

The ELO calculation follows the standard formula:

Expected Score = 1 / (1 + 10^((opponent_rating - player_rating) / 400))
ELO Change = K_FACTOR * (actual_score - expected_score)

Where:

  • K_FACTOR = 32 (standard for Euchre ratings)
  • actual_score = 1 for win, 0.5 for tie, 0 for loss
  • Scores are split evenly between team members

Files Created

  1. generate_games.py

    • Generates random game data with realistic scores
    • Inserts games into the database
  2. update_player_stats.py

    • Recalculates all player statistics based on matches
    • Updates ELO, gamesPlayed, wins, losses
  3. docs/GAME_GENERATION_SUMMARY.md

    • This document

Verification

The rankings page at /rankings correctly displays:

  • Player names
  • ELO ratings (sorted descending)
  • Games played
  • Win rates (calculated as wins/games * 100%)

The ELO ratings are working correctly with the standard K-factor formula.