本文档仅供Windows选手参考,Linux,macOS选手仿照本文档即可。
[TOC]
.\win\CAPI\cpp\文件夹下是否有lib文件夹,没有则https://cloud.tsinghua.edu.cn/d/6972138f641d4e81a446/ 下载并复制粘贴
gRPC,具体方法可以参考官方教程https://grpc.io/docs/languages/cpp/quickstart/。CAPI\cpp\API\src\AI.cpp中编写代码
AI.cpp中原来有的代码,除了void AI::play(IStudentAPI& api)和void AI::play(ITrickerAPI& api)AI.cpp内void AI::play外新增函数和变量CAPI\cpp\CAPI.sln编译,注意使用Debug模式
cmake,对CAPI\cpp\CMakeLists.txt进行编译RunCpp.cmd执行比赛代码
RunCpp.sh执行比赛代码GeneratePythonProto.cmd,以安装必要的包、并生成对应的grpc python文件CAPI\python\PyAPI\AI.py中编写代码
AI.py中原来有的代码,除了StudentPlay(self, api: IStudentAPI)和TrickerPlay(self, api: ITrickerAPI)class AI(IAI)内新增函数和变量RunPython.cmd执行比赛代码
RunPython.sh执行比赛代码右键点击.cmd或.bat文件之后,选择编辑就可以开始修改文件。通过在一行的开头加上::,可以注释掉该行。
RunServerForDebug.cmdRunPython.cmd,C++使用RunCpp.cmdRunGUIClient.cmd观看比赛启动服务器:RunServer.cmd,其内部参数可自主设定
Server脚本中参数格式一般如下:
--ip 0.0.0.0 --port 8888 --studentCount 4 --trickerCount 1 --gameTimeInSecond 600 --fileName video
--ip是服务器ipv4地址
--ip这一参数,默认值为0.0.0.0ipconfig,找到IPv4地址即可--port是服务器端口
--studentCount为本局学生个数
--trickerCount为本局捣蛋鬼个数
--gameTimeInSecond为本局最大游戏时长
--fileName为回放文件的保存名称
RunCpp.cmd或RunPython.cmd的脚本参数格式如下:
start .\CAPI\cpp\x64\Debug\API.exe -I 127.0.0.1 -P 8888 -p 0 -o -d -w
或者
start python .\CAPI\python\PyAPI\main.py -I 127.0.0.1 -P 8888 -p 0 -d -o -w
start .\CAPI\cpp\x64\Debug\API.exe或者start python .\CAPI\python\PyAPI\main.py为运行该目录下的程序(C++)/代码(python)


-I为服务器IP,一般本地为127.0.0.1,联机的话是服务器的IP
-P为服务器端口,一般为8888
-p为玩家id,一般学生为0~3,捣蛋鬼为4
-d为保存Debug日志文件(在/logs/下)
-o为将日志输出到屏幕上
-w只在开启-o的情况下生效,此时屏幕上只输出警告或报错(而日志文件依然完整保存)。
通过RunGUIClient.cmd,可以打开WPF客户端,其内部参数可自主设定,设定方式:右键-打开更多选项-编辑
--port 8888 --characterID 4 --type 2 --occupation 1
--ip是服务器ipv4地址
-port是服务器端口
--characterID为玩家id
RunGUIClient.cmd与 RunPython.cmd(或RunCpp.cmd)中学生、捣蛋鬼数量之和符合RunServer.cmd的要求RunPython.cmd(或RunCpp.cmd),则RunGUIClient.cmd中学生、捣蛋鬼数量应当符合RunServer.cmd的要求--type为玩家类型
--occupation为职业选择,参考下表
学生
| 参数 | 职业类型 |
|---|---|
| 1 | Athlete |
| 2 | Teacher |
| 3 | StraightAStudent |
| 4 | Robot(目前未实现所有功能) |
| 5 | TechOtaku(目前未实现所有功能) |
| 6 | Sunshine |
捣蛋鬼
| 参数 | 职业类型 |
|---|---|
| 1 | Assassin |
| 2 | Klee |
| 3 | ANoisyPerson |
| 4 | Idol |
通过WPF客户端,还可以观看比赛回放。在RunGUIClient.cmd中,将参数改为
start cmd /k win64\Client.exe --cl --playbackFile .\video.thuaipb --playbackSpeed 2
即可观看回放文件。其中--playbackFile后面的参数为回放文件的路径,--playbackSpeed后面的参数为回放速度,取值为1~10,1为正常速度,10为最快速度。
固定方块:红色方块代表墙,绿色方块代表草,灰色方块代表窗户,黄色带锁标志的方块代表门,浅橙红色代表隐藏校门
动态方块:蓝色方块代表大门,橙色方块代表箱子,粉色方块代表教室,上面的数字均代表进度
物件:橙色圆代表捣蛋鬼,紫色圆代表学生,且上面的编号对应学生的ID,灰色表示Robot,它的编号表示所属的TechOtaku
道具对应表如下
| 道具类型 | UI |
|---|---|
| Key3 | 🔑3 |
| Key5 | 🔑5 |
| Key6 | 🔑6 |
| AddSpeed | ⛸ |
| AddLifeOrClairaudience | 🏅 |
| AddHpOrAp | ♥ |
| ShieldOrSpear: | 🛡 |
| RecoveryFromDizziness | 🕶 |
UI:左侧为UI,表示游戏内各类信息
仅当以玩家身份启动RunGUIClient.cmd时可以使用
| 键位 | 效果 |
|---|---|
| W/NumPad8 | (Both)向上移动 |
| S/NumPad2 | (Both)向下移动 |
| D/NumPad6 | (Both)向右移动 |
| A/NumPad4 | (Both)向左移动 |
| J | (Tri)攻击,方向向上 |
| 鼠标双击某点 | (Tri)攻击,方向与从Tricker指向该点的向量相同 |
| K | (Stu)开始学习 |
| R | (Stu)开始唤醒(陷入沉迷状态的同伴) |
| T | (Stu)开始勉励(学习毅力下降的同伴) |
| G | (Stu)发出毕业请求 |
| H | (Stu)申请毕业(或称为开校门) |
| O | (Both)开(教学楼)门 |
| P | (Both)关(教学楼)门 |
| U | (Both)翻窗 |
| I | (Both)翻箱子 |
| E | (Both)结束当前行动,回到Idle状态 |
| F | (Both)随机捡起一个在周围的道具 |
| C | (Both)随机扔下一个已经持有的道具 |
| V | (Both)随机使用一个已经持有的道具 |
| B | (Both)使用0号技能 |
| N | (Both)使用1号技能 |
| M | (Both)使用2号技能 |