- 游戏服务使用ACPC的代码,以及在此基础上改出来的其他游戏服务
- 在ColosGym增加支持的游戏,需要从BaseGame中继承,实现父类的所有虚函数即可使用
- Actor是对所有客户端和服务端的交互的抽象,已提供类似与OPENAI的Gym类似的API
- 对于有特别需求的用户,建议按照游戏传输字符串的形式自行继承BaseGame继承实现子类
- 当然,也可以研究服务端的交互方式来使用socket自行实现所有交互逻辑
这个东西是用来链接另一个PokerServer进行算法训练的。
参照random_player.py 有算法训练需求的,可能需要自己实现client.py
扑克规则参照相应的.define文件,具体见ColosGym/ColosGame/PokerDefine
默认是holdem.limit.2p.reverse_blinds,具体定义如下:
GAMEDEF
limit
numPlayers = 2
numRounds = 4
blind = 10 5
raiseSize = 10 10 20 20
firstPlayer = 2 1 1 1
maxRaises = 3 4 4 4
numSuits = 4
numRanks = 13
numHoleCards = 2
numBoardCards = 0 3 1 1
END GAMEDEF
如果需要修改游戏类型,需要在GameSolver.c里面重新修改getGame()的参数。修改后重新使用setup.py重新打包。即可使用。
- 第一个玩家执黑先行,然后按照局次轮换先手。
- 越过棋盘的范围,在已有棋子上下子,都会导致失败
- 胜利reward为1,失败为0
- 其他使用方法,参照renju_examples.py
- Oberserve
[[ 1. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 1. 0. 2. 1.]
[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 2. 2.]
[ 2. 0. 0. 0. 0. 0. 2. 0. 2. 2. 1. 0. 1. 2. 1.]
[ 0. 1. 0. 2. 0. 2. 2. 1. 0. 0. 2. 2. 0. 0. 2.]
[ 1. 0. 1. 0. 0. 0. 0. 2. 1. 0. 1. 0. 1. 2. 0.]
[ 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 1.]
[ 0. 0. 0. 0. 1. 0. 0. 2. 1. 0. 0. 2. 0. 2. 1.]
[ 2. 0. 2. 0. 0. 1. 0. 2. 0. 0. 0. 0. 0. 0. 0.]
[ 1. 2. 0. 2. 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1.]
[ 0. 0. 1. 2. 0. 0. 2. 0. 0. 0. 0. 1. 2. 0. 0.]
[ 0. 0. 1. 2. 2. 1. 0. 0. 2. 2. 1. 0. 2. 2. 2.]
[ 0. 0. 0. 2. 2. 1. 0. 0. 1. 0. 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 1. 0. 2. 0. 0. 0. 0. 0. 2. 0.]
[ 0. 0. 0. 0. 2. 0. 0. 0. 1. 1. 2. 2. 0. 0. 0.]
[ 0. 1. 1. 1. 2. 0. 0. 1. 2. 2. 2. 1. 0. 0. 2.]]