EOMM

This is a toy reproduction of the paper (WWW'17) EOMM: An Engagement Optimized Matchmaking.

English / 中文

关于本项目

本项目是对论文(WWW’17) EOMM: An Engagement Optimized Matchmaking的复现。

We are research engineers working on game matchmaking optimization domain. The idea of EOMM paper is interesting, so we reproduced the framework and the matchmaking procedure, according to the description in the paper.

1. 运行代码

- 快速运行匹配仿真

$ cd EOMM
$ pip install -r requirements.txt  # use pip3 if you have both python2 and python3 in your environment
$ python main.py  # log file will be generated into ./log folder

仿真过程可以从控制台看到,也可以从./log文件夹下找到日志文件。

- 代码结构

EOMM
├── EOMM.py                   # the matchmakers, including WorstMM, SkillMM, RandomMM, EOMM
├── Matchmaking_simulator.py  # the matchmaking simulator
├── main.py                   # the main process to run a simulation
├── log                       # folder to keep log files

- 修改仿真参数

In the file main.py, you can edit the variables

An example:

round_num=10000, player_num=100
matchmakers = [RandomMM(), SkillMM(), WorstMM(), EOMM()]
  1. At each round, we create a pool of 100 players;

  2. The matchmakers (RandomMM, SkillMM, WorstMM, EOMM) apply on these 100 players; we calculate the retain players of each matchmaker as its performance;
  3. We take the average retain of the 10000 matchmaking rounds as the performance of the matchmaker on 100 players

Now you can play around with the codes.

2. 论文算法简述

Argument: the intuitive assumption that a fair game is best player experience sometimes fails, and matchmaking based on fairness is not optimal for engagement.

Goal: maximize overall player engagement

EOMM:

Limits: it applies to 1-vs-1 matches only.

从匹配系统的角度来说,公平的比赛不一定是用户体验/用户参与度最高的。本文针对最大化用户参与度的目标进行匹配过程的建模。EOMM的匹配过程为:

该算法仅适用1-vs-1玩法的匹配。

3. 关于图匹配算法实现

The graph matching problem is sovled by networkx (see max_weight_matching for more details).