Skip to content

Commit c043f8c

Browse files
committed
docs(thuai8): 💄 make docs more builtful.
1 parent 760598a commit c043f8c

File tree

2 files changed

+146
-133
lines changed

2 files changed

+146
-133
lines changed

docs/contests/THUAI8/intro/ai_manual.md

Lines changed: 0 additions & 133 deletions
This file was deleted.
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
---
2+
title: THUAI8 西游真经劫 AI 编写手册
3+
sidebar_label: AI 编写手册
4+
---
5+
6+
## 目录
7+
8+
import TOCInline from '@theme/TOCInline';
9+
10+
<TOCInline toc={toc} />
11+
12+
## 前言
13+
14+
欢迎参加 THUAI8 西游真经劫比赛!本手册将指导你如何编写 AI 以参与这场激动人心的对抗。在开始编写 AI 之前,建议你首先阅读游戏规则文档,了解游戏的基本机制和胜利条件。
15+
16+
西游真经劫游戏要求你分别编写双方各 7 个(共 14 个)角色(包括 home)的 AI 代码,分别控制取经团队或妖怪阵营。通过资源采集、建筑建造、角色技能和团队配合,争取获得更高的得分并击败对手。
17+
18+
## 下载前准备
19+
20+
1. THUAI8 提供 C++ 和 Python 双赛道进行比赛,在准备阶段,你应该明确使用 C++ 或者 Python 进行参赛
21+
22+
2. C++ 环境配置:THUAI8 C++ 赛道使用 Visual Studio 2022(v17.13.6)进行代码编译,因此,在安装选手包之前,选手需要下载最新版本 Visual Studio 2022 或更新其至 v17.13.6 版本
23+
24+
- 更新 Visual Studio 2022:若之前安装过 Visual Studio 2022,但不为最新版,可打开 Visual Studio Installer 进行版本更新
25+
![image](../../assets/THUAI8/intro/vs.png)
26+
27+
3. Python 环境配置:确保 Python 安装版本在 3.9 以上,否则可能导致 grpc 版本更新失败
28+
29+
查看方法:在 cmd 中输入 `python --version` 查看版本
30+
31+
![图片](../../assets/THUAI8/intro/py.png)
32+
33+
## 选手包下载
34+
35+
1. 在开始编写你的 AI 代码之前,请前往赛事云盘下载选手包下载器兼启动器(Installer)并解压
36+
37+
![image](../../assets/THUAI8/intro/package.png)
38+
39+
40+
2. 运行 installer.exe(可能有警告,请点击"更多信息"-"仍然运行")
41+
42+
![image](../../assets/THUAI8/intro/installer.png)
43+
44+
45+
- 首次打开下载器后,会在 `C:\Users\用户名\Documents\` 路径下生成 `THUAI8` 文件夹,用于存储下载器的配置信息和缓存,请勿随意修改该文件夹内容。
46+
- 选择下载路径时,请确保选择一个空文件夹。
47+
- 首次下载完成后,`下载` 按钮会自动变为 `移动` 按钮,此时可以选择新的空文件夹路径进行移动操作。
48+
- 界面提供两个进度条:上方进度条显示已下载的文件数量,下方进度条显示当前文件的下载进度。
49+
- 如果下载出现问题,且 `是否已下载选手包` 复选框显示为勾选状态,请关闭下载器,删除已下载的文件,并将 `C:\Users\用户名\Documents\THUAI8\config.json` 中的 `"Installed": true` 改为 `"Installed": false`
50+
51+
3. 更新
52+
53+
更新前需要先进行检查更新操作。若显示 `Need to update` 则需要更新,反之 `Nothing to update`
54+
- **下载后不要对其他非空文件路径进行更新操作,这将会删除多余的文件**
55+
- 若未勾选,请更改 `config.json` 中的 `"Installed":false` 改为 `"Installed":true`(一般不会出现此情况)
56+
57+
第一次下载完成后,请检查更新,第一次下载的安装包通常版本较旧。
58+
59+
4. 日志
60+
- `Installer` 界面下方存在操作日志(滚动功能有些异常)
61+
- 安装目录下 `logs\installer.log` 中存在日志供参考
62+
63+
## AI 代码编写
64+
65+
### C++
66+
67+
- 选手编写 AI 代码的位置在 `CAPI/cpp/API/src/AI.cpp` 处,安装 Visual Studio 2022 最新版本后,打开位于 `CAPI/cpp` 处的 `API.sln` 解决方案即可对整个项目进行编辑
68+
69+
![图片](../../assets/THUAI8/intro/api.png)
70+
71+
- 打开项目后,在右侧**解决方案资源管理器**中,选择**源文件**,打开 AI.cpp 即可开始编写代码
72+
73+
- AI 代码编写完成后,需要编译产生 `API.exe` 以供下载器启动。选择顶部栏处的**生成-重新生成解决方案**,等待一段时间后即编译完成
74+
75+
![图片](../../assets/THUAI8/intro/Cppbuild.png)
76+
77+
- 生成成功后,**输出**窗口会提示编译成功的信息
78+
79+
![图片](../../assets/THUAI8/intro/Success.png)
80+
81+
- 此后即可使用下载器进行[调试](#下载器调试)
82+
83+
### Python
84+
- 选手编写AI代码的位置在CAPI/python/PyAPI/AI.py处
85+
![图片](../../assets/THUAI8/intro/apipy.png)
86+
- 由于python不需要编译产生可执行文件,可直接前往[调试界面](#下载器调试)
87+
88+
## 下载器调试
89+
90+
下载器集成了**选手包下载****选手包更新****本地调试****本地回放**等功能,选手可以使用下载器启动本地调试界面进行调试
91+
92+
- 打开下载器后,选择**调试**界面
93+
94+
![图片](../../assets/THUAI8/intro/Debug.png)
95+
96+
此界面中,选手可以设置启动的服务类型(Server 或 Client)
97+
98+
### Server 配置
99+
100+
- 配置 Server 时,选手可以设置服务器启动的端口 Port(一般不需要更改),本场游戏的队伍数量(一般为 2),以及每一支队伍的人数(按照需求而定,至少为 1,决赛默认为 6)。这里为方便起见,设置每队的人数为 1(即只有唐僧或九灵元圣)
101+
102+
- 保存后启动,此时 Server 正常运行如下
103+
104+
![图片](../../assets/THUAI8/intro/Server.png)
105+
106+
### Client 配置
107+
- 切换 Mode 为 Client,此时可以配置 Client 启动
108+
109+
![图片](../../assets/THUAI8/intro/image.png)
110+
111+
- 与 Server 相同,选手可以配置 Client 启动的 IP 和端口(一般不需要更改)。在此基础上,选手可以加入一定数量的对战 Client 和旁观Client(调试界面)。
112+
113+
- 点击 Add 加入对战 Client。对于不同的 Server 配置,需要加入的对战 Client 数量也不同。对于每一支队伍人数为 `x` 的情况,需要为每支队伍各加入 `x + 1` 个 Client,分别对应 PlayerID 从 `0``x`;teamID 和 SideFlag 保持一致。例如,对于每支队伍人数为 `1` 的情况,客户端加入情况应该如下配置:
114+
115+
- 勾选 Spectator 以启用简易调试界面,并确保其 ID 大于 2025(默认 2026)
116+
117+
- 选择正确的 Language,保存后即可启动 Client
118+
119+
![image](../../assets/THUAI8/intro/Avalonia.png)
120+
121+
## 常见问题
122+
123+
**Q: 如何确定角色的位置?**
124+
A: 使用 `api.GetSelfInfo()` 获取角色位置,位置是以像素为单位的坐标 $(x, y)$。
125+
126+
**Q: 如何计算两点间距离?**
127+
A: 使用欧几里得距离公式:$\text{distance} = \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}$。
128+
129+
**Q: 如何判断是否可以攻击到敌人?**
130+
A: 检查敌人是否在角色的攻击范围内:`distance <= self_info.attackRange * 1000`
131+
132+
**Q: 为什么我的 AI 在本地运行正常,提交后却失败?**
133+
A: 可能原因包括:
134+
- 代码中存在无限循环
135+
- 调试输出过多导致缓冲区溢出
136+
- 未考虑到某些边界情况
137+
138+
**Q: 如何优化AI性能?**
139+
A:
140+
- 减少不必要的 API 调用
141+
- 避免复杂计算导致的超时
142+
- 使用高效的寻路和决策算法
143+
144+
---
145+
146+
祝你在 THUAI8 西游真经劫比赛中取得好成绩!如有更多问题,欢迎在比赛交流群中讨论。

0 commit comments

Comments
 (0)