dota service是通过grpc播放dota 2的服务
dotaservice的Python项目详细描述
dotaservice
注意:在k8s环境中使用dotaservice的项目是DotaClientrepo。
dota service是通过grpc播放dota 2的服务。有一类python绑定 以及示例,这样您就可以像使用openai健身房api一样玩dota。
它功能齐全,超轻。启动dotaobs = env.reset()
需要5秒,
环境中的每个obs = env.step(action)
都需要10到30毫秒。
您甚至可以设置render=True
的配置,并且可以观看游戏的实况播放。每场比赛
在有dota演示(重播)和控制台日志的地方关联uuid和文件夹。
在本地运行dotaservice
运行dotaservice以便以后可以将客户端连接到它。每台服务器只有一个客户端 支持,并且每个虚拟机只有一个dotaservice(例如本地或每个docker容器一个)。
python3 -m dotaservice
>>> Serving on 127.0.0.1:13337
运行分布式dotaservice
要运行两个dockerservice实例,一个在端口13337
上,另一个在13338
,f.e.run:
docker run -dp 13337:13337 ds docker run -dp 13338:13337 ds
您可以运行任意数量,直到端口或IP地址用完为止。如果你穿着 你那条漂亮的裤子,用库伯内特斯来部署数百万人。
客户代码
fromgrpclib.clientimportChannelfromprotobuf.DotaService_grpcimportDotaServiceStubfromprotobuf.DotaService_pb2importActionfromprotobuf.DotaService_pb2importConfig# Connect to the DotaService.env=DotaServiceStub(Channel('127.0.0.1',13337))# Get the initial observation.observation=awaitenv.reset(Config())foriinrange(8):# Sample an action from the action protobufaction=Action.MoveToLocation(x=..,y=..,z=..)# Take an action, returning the resulting observation.observation=awaitenv.step(action)
这对于提供一个强化学习的环境是非常有用的,它的服务方面使得它
特别适用于分布式训练。我计划提供一个客户端python
这个模块(PyDota
)模仿典型的openai健身房api。也许我都不会做皮多塔
GRPC客户端就足够了。
要求
- Python3.7
- unix:macos,ubuntu。还提供了dockerfile,请参见:docker/README.md。
安装
从pypi安装:
pip3 install dotaservice
用于开发;从源安装:
pip3 install -e .
(可选)编译python的protos(从存储库根目录运行):
python3 -m grpc_tools.protoc -I. --python_out=. --python_grpc_out=. --grpc_python_out=. dotaservice/protos/*.proto
注释
我的开发人员注释:NOTES.md。
致谢
- OpenAI DOTA工作组
- Karpathy
- 简·伊万内基
- Nostrademous