google-deepmind / google-deepmind/open_spiel

Add Parameterized N-Player Social Dilemma Games with Dynamic and Stochastic Payoffs

Open
#1,431 16 comments 0 reactions 0 assignees View on GitHub
contribution welcome
Dominant language
C++
Stars
5.5k
Forks
1.2k
Avg merge
2d 8h
Merged PRs (30d)
4

Description

**Description**

OpenSpiel currently includes several matrix and social dilemma games that are primarily limited to fixed 2-player settings with static payoff structures. While these are valuable for theoretical analysis, many real-world multi-agent reinforcement learning (MARL) problems involve:

- More than two agents
- Changing payoff dynamics over time
- Stochastic or noisy rewards

This issue proposes adding a parameterized social dilemma game that generalizes existing matrix games to better support modern MARL research and benchmarking.

**Proposed Change**

Introduce a new game, tentatively named param_social_dilemma, with the following capabilities:

**1. Variable Number of Agents (N-Player)**

- Support configurable agent counts (N ≥ 2)
- Maintain compatibility with OpenSpiel’s simultaneous-move game API

**2. Dynamic Payoff Matrices**

- Allow payoff matrices to:
- Change across timesteps or episodes
- Be generated from parameterized functions
- Enable experiments on non-stationary environments

**3. Stochastic Rewards**

- Add optional reward noise (e.g., Gaussian or discrete distributions)
- Useful for robustness and exploration studies

**4. Python API Exposure**

- Expose all parameters via the Python interface:
- Number of agents
- Payoff configuration
- Stochastic reward settings

**Implementation Location**

**Core game logic:**

`open_spiel/games/`

**Python bindings and API:**

`open_spiel/python/games/`

**Tests and examples:**

```
open_spiel/tests/
open_spiel/python/examples/
```

**Potential Deliverables**

- New game implementation: `param_social_dilemma`
- Python bindings with clear documentation

**Unit tests covering:**

- Different agent counts
- Deterministic vs stochastic rewards

- Example script demonstrating MARL usage

**Willingness to Contribute**

I’m happy to take this up and iterate based on maintainer feedback, starting with a minimal version (static N-player game) and progressively adding dynamic and stochastic extensions.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.