AGT Lab Server for Game Theory Competitions - A tournament server for game theory lab competitions
Project description
AGT Server
A comprehensive tournament server for game theory lab competitions, supporting multiple game types including Rock Paper Scissors, Battle of the Sexes, Chicken, Prisoner's Dilemma, Lemonade Stand, Auctions, and more.
Features
- Multiple Game Types: Support for 9+ different game theory scenarios
- Real-time Dashboard: Web-based monitoring and control interface
- Tournament Management: Automated player matching and scoring
- Extensible Architecture: Easy to add new games and agents
- Command Line Tools: Simple CLI for server and dashboard management
- Python Package: Easy to import and integrate into your projects
Supported Games
- RPS: Rock Paper Scissors (2 players, 100 rounds)
- BOS: Battle of the Sexes (2 players, 100 rounds)
- BOSII: Battle of the Sexes II (2 players, 100 rounds)
- Chicken: Chicken Game (2 players, 100 rounds)
- PD: Prisoner's Dilemma (2 players, 100 rounds)
- Lemonade: Lemonade Stand (2 players, 100 rounds)
- Auction: Auction Game (2+ players, 100 rounds)
- ADX2D: Ad Exchange Two Day (2+ players, 100 rounds)
- ADX1D: Ad Exchange One Day (2+ players, 100 rounds)
Quick Start
Installation
From Source
git clone https://github.com/yourusername/agt-server.git
cd agt-server
pip install -e .
From PyPI (when published)
pip install agt-server
Basic Usage
Command Line Interface
Start the server:
agt-server --game rps --port 8080
Start the dashboard:
agt-dashboard --port 8081 --server-port 8080
Start both together:
python -m agt_server.cli both --game rps
Python API
import asyncio
from agt_server import AGTServer
# Create and configure server
config = {
"game_type": "rps",
"num_rounds": 100,
"num_players": 2
}
server = AGTServer(config, host="0.0.0.0", port=8080)
# Run the server
asyncio.run(server.run())
Web Dashboard
Once running, access the dashboard at:
- Dashboard: http://localhost:8081
- Server: localhost:8080
Detailed Usage
Server Configuration
The server accepts various configuration options:
config = {
"game_type": "rps", # Game to run
"num_rounds": 100, # Rounds per game
"num_players": 2, # Players per game
"allowed_games": ["rps"], # Restrict to specific games
"verbose": False # Enable debug output
}
Command Line Options
agt-server
agt-server [OPTIONS]
Options:
--host TEXT Host to bind to [default: 0.0.0.0]
--port INTEGER Port to bind to [default: 8080]
--game TEXT Game type [default: rps]
--num-rounds INTEGER Number of rounds [default: 100]
--num-players INTEGER Number of players [default: 2]
--verbose Enable verbose logging
--config PATH Custom configuration file
--help Show this message and exit
agt-dashboard
agt-dashboard [OPTIONS]
Options:
--port INTEGER Dashboard port [default: 8081]
--server-port INTEGER Server port [default: 8080]
--host TEXT Dashboard host [default: localhost]
--server-host TEXT Server host [default: localhost]
--help Show this message and exit
Custom Configuration Files
Create a JSON configuration file:
{
"game_type": "lemonade",
"num_rounds": 200,
"num_players": 4,
"verbose": true,
"allowed_games": ["lemonade", "auction"]
}
Use it with:
agt-server --config my_config.json
Development
Project Structure
agt_server/
├── core/ # Game engine and core logic
├── server/ # Tournament server
├── dashboard/ # Web dashboard
├── cli.py # Command line interface
├── __init__.py # Package initialization
└── requirements.txt
Running Tests
# Install development dependencies
pip install -e .[dev]
# Run tests
pytest tests/
Building the Package
# Build source distribution
python setup.py sdist
# Build wheel
python setup.py bdist_wheel
# Install build tools
pip install build
python -m build
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
- Documentation: Read the Docs
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Acknowledgments
- Game theory research community
- Educational institutions using AGT for teaching
- Contributors and maintainers
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agt_lab_server-0.1.3.tar.gz.
File metadata
- Download URL: agt_lab_server-0.1.3.tar.gz
- Upload date:
- Size: 3.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f3945159677cd71af4c73d1964012ca4313d18dabef0062d8df9fefe7a9823f
|
|
| MD5 |
ce68144af9ebd393fa6b5cea2bb5f597
|
|
| BLAKE2b-256 |
0d1bd99388d6d16a22bab1bb97a513f53a19c91c1cd7d5dbd264aa3bfa8342cb
|
File details
Details for the file agt_lab_server-0.1.3-py3-none-any.whl.
File metadata
- Download URL: agt_lab_server-0.1.3-py3-none-any.whl
- Upload date:
- Size: 3.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
332218053a0dce491cc8f12f9e87ca1cdb971c66ebe52643f237b1956eb06b34
|
|
| MD5 |
80b7b062d2100540faa1159ace44751a
|
|
| BLAKE2b-256 |
488c403c4541badf1d760003d8fc87a549f541334c0515b3a311938b2a2226fb
|