SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4860|回复: 0
打印 上一主题 下一主题

[ai] AI执行环境

[复制链接]

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
跳转到指定楼层
楼主
发表于 2020-9-5 19:11:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
AI执行环境指的是AI执行时需要的相关数据结构。具体就是这些数据结构是哪些,它们是如何被构造,被析构。


要分析以上执行环境中各数据结构关系,比较好的办法是分板manager::play_turn的执行流程.

一、准备AI执行环境(假设第一次执行)
1.1:根据side_num从ai_map_定位出holder对象;
1.2:检测到holder成员ai_是NULL,意味着需要构造composite_ai对象。构造ai_composite对象。
1.3:根据config生成stage对象,由config生成stage要分两步骤。
1.3.1:由config生成engine对象。stage这个config的engine=cpp,创建对应的engine_cpp对象,这个对象放在readonly_context_impl内;
1.3.2:由engine生成stage对象。stage这个config的name=testing_ai_default::fallback,创建对应的testing_ai_default::fallback_to_other_ai对象,这个对象放在ai_composite内。
1.4:testing_ai_default::fallback_to_other_ai构造完成后,生成内部ai_ptr对象。stage这个config中的[ai]标签是空,即ai_algorithm字段值是空字段,这时构造对应的ai_default对象。
1.5:由1.2出来的ai_composite指针返回给调用程序,即manger::play_turn中的ai_obj。

二、执行AI行为
2.1:调用ai_composite中所有stage的do_play_stage方法。由于ai_composite只有一个stage,即testing_ai_default::fallback_to_other_ai对象,调用这对象上的do_play_stage方法;
2.2:fallback_to_other_ai::do_play_stage调用内部成员fallback_ai_的play_turn方法。fallback_ai_就是ai_default对象。
2.3:ai_default::play_turn调用主要AI函数do_move。
2.4:所有stage的do_play_stage被调用后,清空unit_stages_chche_。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2025-5-1 22:48 , Processed in 0.054884 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表