分享
狼人杀
输入“/”快速插入内容
🐺
狼人杀
用户988
用户1849
2024年5月6日修改
策略与博弈——狼人杀
🐺
狼人杀是一个策略类桌游,主要分为狼人阵营和村民阵营,玩家们最初都不知道各自身份,必须通过和其他玩家的交流、发现漏洞并推理博弈,从而尽可能投票出局敌对势力,让己方存活。
在本节中,我们将结合先前的相关模块,学习如何利用MetaGPT搭建一个“AI狼人杀”对局,并尝试让AI在这样一个策略对局中涌现出合作和欺骗行为。
快速开始
当然,你也可以直接
python examples/werewolf_game/start_game.py
来使用默认配置开始游戏
导入角色和游戏相关依赖
创建一个
werewolf.py
的文件,并输入:
代码块
Python
import asyncio
from metagpt.logs import logger
from metagpt.ext.werewolf.werewolf_game import WerewolfGame
from metagpt.ext.werewolf.roles import Guard, Seer, Villager, Werewolf, Witch, Moderator
初始化游戏信息
接下来初始化游戏基本信息,主要有以下参数,也可以通过在终端输入
python examples\werewolf_game\start_game.py --help
来查看更多参数信息,我们将在后续逐一讲解这些参数的意义:
•
role_uniq_objs
:设置游戏玩家职业,一般填入
[Villager, Werewolf, Seer, Witch, Guard]
即可(注意,0.8.1前版本还不支持不加入某些职业)
•
num_villager:村民数量,默认为2
•
num_werewolf:狼人数量,默认为2
•
shuffle:是否打乱职业顺序,默认打乱
•
add_human:是否让真人也参与游戏,默认不参与
•
use_reflection:是否让智能体对对局信息进行反思,默认开启
•
use_experience:是否让智能体根据过去自己行为优化自己的动作,默认关闭
我们创建一个各职业只有1人的对局,并只让AI参与游戏
代码块
Python
game = WerewolfGame()
# 初始化游戏设置
game_setup, players = game.env.init_game_setup(
[Villager, Werewolf, Seer, Witch, Guard],
num_werewolf=1,
num_villager=1,
add_human=False
)
players = [Moderator()] + players # 主持人加入游戏
logger.info(f"{game_setup}")
game.hire(players)
game.run_project(game_setup) # 主持人广播游戏情况
由于MetaGPT是一个异步框架,使用asyncio启动游戏:
代码块
Python
asyncio.run(game.run(n_round=100))
输入
python werewolf.py
,终端中将打印出对局相关的消息