1 / 16
文档名称:

王宇航******@mail.ustc.edu.cn图文新版.ppt

格式:ppt   大小:715KB   页数:16页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

王宇航******@mail.ustc.edu.cn图文新版.ppt

上传人:412702457 2018/9/17 文件大小:715 KB

下载得到文件列表

王宇航******@mail.ustc.edu.cn图文新版.ppt

相关文档

文档介绍

文档介绍:WE2009底层结构说明书
王宇航
******@.
1
行为决策流程
Client::MainLoop()[]
Player::Run ()[]
DecisionTree::Decision()[]
main()[]
Client::RunNormal()[]
Coach::Run()[]
DecisionTree::Search()[
Coach::DoDecisionMaking()[]
普通球员这里主要返回行为(6种基本动作之一)。也可以返回
视觉或通讯决策。裁判主要作出通讯决策。
2
视觉决策部分
视觉决策可以贯穿整个行为决策始终,
也可以单独建立一个文件来处理。
09Base中视觉决策为Player::Run()中
执行DecisionTree::Decision()后面的一
段代码。
相信打过CS的同学知道看不到对手位置的后果……
3
听觉处理接口
municateSystem::Update()
[]
代码中预留了几个空函数,仅做参考。大家可以根据自己球队的情况修改。
通讯部分虽然也很重要,不过如果没有精力处理,可以暂不考虑。
(一个良好的通讯系统是对有限视觉与感知的最佳扩充)
4
介绍一些常用类
PlayerState:[]中定义
从属关系不再熬述,大家可以查看代码。一般的IDE都有很好的追踪能力。
该类为球员状态的虚拟,其中包括球员位置,速度,身体方向,脖子角度等信息。
WorldState:[]中定义
该类中包含server中的球、球员模型,
以及server发来的一些客观赛场信息如特殊模式,比赛时间等。
(这里客观表述比较含糊,而且事实上信息的分类
也很难使它们有明显的区分度,在这里找不到的信息,尝试到其他地方找找看吧)
5
Agent:[]中定义
该类可理解为是对一个Client功能的虚拟。类中包含基本的
收发信息接口。函数名与功能是相关联的,大家查看代码应
该不难理解作用。
下面举个例子,比如在Agent作用域内增加代码:
(90);
那么当程序运行到该处时,会拟定一条发给server的指令,
作用是右转90度。而何时如何发送,我们暂不关心。
而惯性的影响已在底层部分处理,所以这里可以直接传入
我们需要球员实际相对自身转动的角度。
6
Strategy:[]中定义
该类中含有一些通过简单计算后得到的(可能)常用的量。如谁是最快拿到球的队友、自己的截球点在哪等。不过请
大家不要过分依赖这些量,比如当你觉得这个类中提供的
信息已影响到部分决策判断时,不妨自己写些函数来算这
些量。
PositionInfo:[]中定义
该类中主要包含与位置相关的信息,如球员相对身体的角
度、球距某球员的距离等。
7
介绍一些常用的工具函数位置
较为常用的工具函数主要在Geometry和Utilities两个
文件中。例如对一个角度的标准化(把720度变换为0度)、
求某条直线与射线的交点等。
其中Geometry中的函数主要处理平面几何问题。
这里额外解释一个从名字不大容易猜出功能的函数
Line::GetProjectPoint,该函数传入一个点,返回直线上
距该点最近的点。
8
实例
下面结合一些例子来说明球队运作的整套流程。
下面举的例子将较为详细,主要目的是为大家回去后提
供些可能的帮助,在这里只做些口头的简要说明。
下面的流程可以在单步调试过程中慢慢熟悉。
9
我们从main()函数开始。
WE2009_Base的命令行参数:
-team_name “队名”–host “server IP” Enter/–goalie on/-coach on
比如在WE2009_Base的binary目录下输入:
./WE2009_Base –team name “WE2009_E630”-host .

,通过
Logplayer看到的队名为WE2009_E630
如果在上述命令后面再加参数-goalie on,那么上场的这个队员将
成为守门员。
上述命令每执行一次只能使一个Client连接到server,如果要上
整支球队,需要启动12次。自动上队可以通过脚本来完成,
WE2