Skip to content
This repository has been archived by the owner on Apr 2, 2022. It is now read-only.

Latest commit

 

History

History
207 lines (131 loc) · 6 KB

【重要】工作总结.md

File metadata and controls

207 lines (131 loc) · 6 KB

THUAI3.0整体进展总结规划

总结之前所有文字记录

通信

已完成

  1. 基于事件驱动,将收到信息传输给逻辑部分进行实时处理
  2. 计算通信延时
  3. 断线重连

未完成

  1. Agent限制玩家发信速率
  2. Agent设置缓冲区存储最新的Server发送的数据,可以和逻辑沟通采用某种方式实现增量更新(自增id+主动请求全量数据?),可能要加入数据校验?
  3. Server可能要和逻辑商量一下多线程发数据怎么实现
  4. 给Client提供时延信息
  5. 游戏开始前主动退出机制??

CAPI

目标框架:C++11及以上

建议选手开发平台VS2019(尽可能兼容VS2017)

已完成

未完成

  1. 解决C++上使用HPSocket的困难以及Protobuf的使用,形成方便的项目Pipeline,可能需要一些自动化的脚本,这些在各种dll的链接上可能存在困难。同时要注意要在Windows上与Linux上同时调通,使用相同的API。可以参考往届比赛的代码设计。
  2. 选手接口需要使用多线程设计(通信+AI),通信线程负责监听Agent发送的消息与发送信息,AI线程死循环执行选手代码。这里有几点要注意,多线程资源需要合适的互斥访问(参考往届),Debug断点时如果继续更新数据可能会影响玩家Debug,可以加入暂停通信的方法,同样因为Debug的原因,尽量使得AI为主进程。
  3. 游戏结束后的退出机制。
  4. 通过逻辑组的配置文件生成常量表(用Python实现,或者直接读json??)
  5. 游戏延时的获取??
  6. 分发

逻辑

已完成

  1. 走路+走路贴墙
  2. 基本类的设计
  3. 消息队列
  4. 定时器

未完成

  1. Debug接口
  2. 回放文件
  3. 多线程定时给Client发增量/全量消息
  4. 消息Proto格式确定
  5. 碰撞处理,加入力?
  6. 减人物尺寸,避免卡墙/或者加大地图
  7. 走路实现方法修改,增强连续性
  8. 人物其他动作(放置、使用道具、做菜)
  9. 道具、食材、烹饪工具、游戏角色、全局参数的配置文件化
  10. 道具(直接近战使用的、放地上的)、食材、烹饪(独占策略:开始煮后其他人不能拿走,煮熟后有一定保护时间,煮太久了糊了)等机制的实现
  11. 任务发布、提交与分数计算系统
  12. 垃圾桶(处理不要的东西)
  13. 战争迷雾
  14. 空投、传送门
  15. 游戏开始前主动退出游戏??
  16. 实现房间机制(在目录下创建lock文件告知网站当前加入人数情况等信息)

交互

已完成

  1. 与通信逻辑的对接
  2. 人物移动

未完成

  1. GUI(程序退出、角色状态)
  2. WASD操作
  3. 地图重新设计
  4. 场景模型、人物模型、菜品模型、工作台模型、垃圾桶模型、道具模型等
  5. Ob视角与回放
  6. 聊天功能
  7. 音效??
  8. 战争迷雾

更新器

目标框架:WPF

已完成

  1. 核心技术验证

未完成

  1. 依赖库的检查??下载与安装指导
  2. Unity程序下载
  3. Server、Agent下载
  4. Client项目的下载
  5. 以上需要支持手动指定存放位置
  6. 热更新
  7. 文件完整性校验
  8. 新版本更新提示与更新信息显示
  9. 支持科协官网登录(可能需要网站组帮忙)
  10. 支持代码提交
  11. 支持查看积分情况

启动器

目标框架:WPF

已完成

  1. 核心技术的验证

未完成

  1. 比赛模式启动带参数的Server(可选),Agent(必须),Client(AI+Unity/Only Unity/Only AI)或回放模式(指定回放文件,启动Unity Ob视角)

    如果本地启动,自动匹配Server/Agent/Client的端口;远程连接,需要通过网站API获取房间情况并显示(加入/新建),然后对应的开启Agent与Client。

  2. 启动参数预估:Server(端口、游戏速度、Debug模式?、随机数种子、队伍数量、每队玩家数量、发信速率)Agent(端口、指令速度限制、模式??)Unity Client(是否可操作、端口、是否Ob、回放文件路径(或者在Unity里面选择))AI(端口)

  3. 更新器与启动器可以整合为一个

  4. 设计界面

测试

目标框架:MSTest

只测试逻辑部分

已完成

未完成

根据逻辑设计,待定,主要用于各种道具作用等复杂边缘场景?游戏主体逻辑可能不太需要?

Circle CI

部署

已完成

未完成

  1. 各个部分的打包与打包自动化(通过CI?)

赛题规则游戏设计

已完成

  1. 人数2队伍数4出生在4个角,采用定时计分方式。
  2. 系统定时发布任务,玩家从指定地点收集食材,在工作台合成后提交到中心提交处获得分数,同时完成任务。
  3. 玩家可以拾取道具互相攻击
  4. 同一团队两个AI应该独立运行,通过提供的通信接口交换信息

未完成

  1. 道具设计(加/减移动速度、无敌、摧毁/击落他人物品、眩晕、陷阱、提高/降低特定地块食物产出速度、得分翻倍/减半、增大/减小视野)
  2. 角色设计
  3. 合成路线图设计

网站

已完成

未完成

  1. 报名、组队
  2. 提交代码
  3. 方便的上传打包后的文件、更新版本、提供下载所需的元数据、API等等(更新),最好支持增量/全量两种
  4. 房间机制:通过API可以新建房间、获取当前房间信息、自动关闭空房间、加入房间(每个房间对应一个)、退出房间??每个房间对应一个容器
  5. 动态伸缩??

其他

已完成

  1. 整体框架升级到.Net Core 3.0。

未完成

  1. 各个组在对应项目的Readme.md中写点东西,至少挂名。
  2. 游戏起名字。
  3. .Net Core 3.0 Runtime分发,文档修改。
  4. Unity需要的依赖分发?
  5. 完善架构与对接中的对接细节,主要是消息Proto、房间机制下与网站的通信文件
  6. 样例AI

赛后工作

整理代码,文档化整体设计,争取成为THUAI史上经典开发模板