Some checks failed
Pre-commit / run (ubuntu-latest) (push) Has been cancelled
Deploy Sphinx documentation to Pages / build_en (ubuntu-latest, 3.10) (push) Has been cancelled
Deploy Sphinx documentation to Pages / build_zh (ubuntu-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.12) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.12) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.12) (push) Has been cancelled
116 lines
4.1 KiB
Markdown
116 lines
4.1 KiB
Markdown
# 🐺⚔️👨🌾 Nine-Player Werewolves Game
|
|
|
|
This is a nine-players werewolves game example built using AgentScope, showcasing **multi-agent interactions**,
|
|
**role-based gameplay**, and **structured output handling**.
|
|
Specifically, this game is consisted of
|
|
|
|
- three villagers 👨🌾,
|
|
- three werewolves 🐺,
|
|
- one seer 🔮,
|
|
- one witch 🧙♀️ and
|
|
- one hunter 🏹.
|
|
|
|
## ✨Changelog
|
|
|
|
- 2025-10: We update the example to support more features:
|
|
- Allow the dead players to leave messages.
|
|
- Support Chinese now.
|
|
- Support **continuous gaming** by loading and saving session states, so the same agents can play multiple games and continue learning and optimizing their strategies.
|
|
|
|
|
|
## QuickStart
|
|
|
|
Run the following command to start the game, ensuring you have set up your DashScope API key as an environment variable.
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
> Note:
|
|
> - You can adjust the language, model and other parameters in `main.py`.
|
|
> - Different models may yield different game experiences.
|
|
|
|
Running the example with AgentScope Studio provides a more interactive experience.
|
|
|
|
- Demo Video in Chinese (click to play):
|
|
|
|
[](https://cloud.video.taobao.com/vod/KxyR66_CWaWwu76OPTvOV2Ye1Gas3i5p4molJtzhn_s.mp4)
|
|
|
|
- Demo Video in English (click to play):
|
|
|
|
[](https://cloud.video.taobao.com/vod/bMiRTfxPg2vm76wEoaIP2eJfkCi8CUExHRas-1LyK1I.mp4)
|
|
|
|
## Details
|
|
|
|
The game is built with the ``ReActAgent`` in AgentScope, utilizing its ability to generate structured outputs to
|
|
control the game flow and interactions.
|
|
We also use the ``MsgHub`` and pipelines in AgentScope to manage the complex interactions like discussion and voting.
|
|
It's very interesting to see how agents play the werewolf game with different roles and objectives.
|
|
|
|
# Advanced Usage
|
|
|
|
## Change Language
|
|
|
|
The game is played in English by default. Just uncomment the following line in `game.py` to switch to Chinese.
|
|
|
|
```python
|
|
# from prompt import ChinesePrompts as Prompts
|
|
```
|
|
|
|
## Play with Agents
|
|
|
|
You can replace one of the agents with a `UserAgent` to play with AI agents.
|
|
|
|
## Change Models
|
|
|
|
Just modify the `model` parameter in `main.py` to try different models. Note you need to change the formatter at the same time to match the model's output format.
|
|
|
|
## Enable Text-to-Speech (TTS)
|
|
|
|
The game supports Text-to-Speech functionality. To enable TTS:
|
|
|
|
1. **In `main.py`**:
|
|
- Uncomment the import statement:
|
|
```python
|
|
import random
|
|
from agentscope.tts import DashScopeTTSModel
|
|
```
|
|
- Uncomment the `tts_model` parameter in the `get_official_agents` function:
|
|
```python
|
|
tts_model=DashScopeTTSModel(
|
|
api_key=os.environ.get("DASHSCOPE_API_KEY"),
|
|
model_name="qwen3-tts-flash",
|
|
voice=random.choice(["Cherry", "Serena", "Ethan", "Chelsie"]),
|
|
stream=True,
|
|
),
|
|
```
|
|
|
|
2. **In `game.py`** (optional, for moderator TTS):
|
|
- Uncomment the import statement:
|
|
```python
|
|
import random
|
|
from agentscope.tts import DashScopeTTSModel
|
|
```
|
|
- Uncomment the `tts_model` parameter in the `moderator` initialization:
|
|
```python
|
|
tts_model=DashScopeTTSModel(
|
|
api_key=os.environ.get("DASHSCOPE_API_KEY"),
|
|
model_name="qwen3-tts-flash",
|
|
voice=random.choice(["Cherry", "Serena", "Ethan", "Chelsie"]),
|
|
stream=True,
|
|
),
|
|
```
|
|
|
|
3. **Set up your API key**:
|
|
- Make sure you have set the `DASHSCOPE_API_KEY` environment variable.
|
|
|
|
After enabling TTS, the game will synthesize speech for player messages and moderator announcements, providing a more immersive audio experience.
|
|
|
|
## Further Reading
|
|
|
|
- [Structured Output](https://doc.agentscope.io/tutorial/task_agent.html#structured-output)
|
|
- [MsgHub and Pipelines](https://doc.agentscope.io/tutorial/task_pipeline.html)
|
|
- [Prompt Formatter](https://doc.agentscope.io/tutorial/task_prompt.html)
|
|
- [AgentScope Studio](https://doc.agentscope.io/tutorial/task_studio.html)
|
|
- [TTS](https://doc.agentscope.io/tutorial/task_tts.html)
|