总结之前所有文字记录
- 基于事件驱动,将收到信息传输给逻辑部分进行实时处理
- 计算通信延时
- 断线重连
- Agent限制玩家发信速率
- Agent设置缓冲区存储最新的Server发送的数据,可以和逻辑沟通采用某种方式实现增量更新(自增id+主动请求全量数据?),可能要加入数据校验?
- Server可能要和逻辑商量一下多线程发数据怎么实现
- 给Client提供时延信息
- 游戏开始前主动退出机制??
目标框架:C++11及以上
建议选手开发平台VS2019(尽可能兼容VS2017)
无
- 解决C++上使用HPSocket的困难以及Protobuf的使用,形成方便的项目Pipeline,可能需要一些自动化的脚本,这些在各种dll的链接上可能存在困难。同时要注意要在Windows上与Linux上同时调通,使用相同的API。可以参考往届比赛的代码设计。
- 选手接口需要使用多线程设计(通信+AI),通信线程负责监听Agent发送的消息与发送信息,AI线程死循环执行选手代码。这里有几点要注意,多线程资源需要合适的互斥访问(参考往届),Debug断点时如果继续更新数据可能会影响玩家Debug,可以加入暂停通信的方法,同样因为Debug的原因,尽量使得AI为主进程。
- 游戏结束后的退出机制。
- 通过逻辑组的配置文件生成常量表(用Python实现,或者直接读json??)
- 游戏延时的获取??
- 分发
- 走路+走路贴墙
- 基本类的设计
- 消息队列
- 定时器
- Debug接口
- 回放文件
- 多线程定时给Client发增量/全量消息
- 消息Proto格式确定
- 碰撞处理,加入力?
- 减人物尺寸,避免卡墙/或者加大地图
- 走路实现方法修改,增强连续性
- 人物其他动作(放置、使用道具、做菜)
- 道具、食材、烹饪工具、游戏角色、全局参数的配置文件化
- 道具(直接近战使用的、放地上的)、食材、烹饪(独占策略:开始煮后其他人不能拿走,煮熟后有一定保护时间,煮太久了糊了)等机制的实现
- 任务发布、提交与分数计算系统
- 垃圾桶(处理不要的东西)
- 战争迷雾
- 空投、传送门
- 游戏开始前主动退出游戏??
- 实现房间机制(在目录下创建lock文件告知网站当前加入人数情况等信息)
- 与通信逻辑的对接
- 人物移动
- GUI(程序退出、角色状态)
- WASD操作
- 地图重新设计
- 场景模型、人物模型、菜品模型、工作台模型、垃圾桶模型、道具模型等
- Ob视角与回放
- 聊天功能
- 音效??
- 战争迷雾
目标框架:WPF
- 核心技术验证
- 依赖库的检查??下载与安装指导
- Unity程序下载
- Server、Agent下载
- Client项目的下载
- 以上需要支持手动指定存放位置
- 热更新
- 文件完整性校验
- 新版本更新提示与更新信息显示
- 支持科协官网登录(可能需要网站组帮忙)
- 支持代码提交
- 支持查看积分情况
目标框架:WPF
- 核心技术的验证
-
比赛模式启动带参数的Server(可选),Agent(必须),Client(AI+Unity/Only Unity/Only AI)或回放模式(指定回放文件,启动Unity Ob视角)
如果本地启动,自动匹配Server/Agent/Client的端口;远程连接,需要通过网站API获取房间情况并显示(加入/新建),然后对应的开启Agent与Client。
-
启动参数预估:Server(端口、游戏速度、Debug模式?、随机数种子、队伍数量、每队玩家数量、发信速率)Agent(端口、指令速度限制、模式??)Unity Client(是否可操作、端口、是否Ob、回放文件路径(或者在Unity里面选择))AI(端口)
-
更新器与启动器可以整合为一个
-
设计界面
目标框架:MSTest
只测试逻辑部分
无
根据逻辑设计,待定,主要用于各种道具作用等复杂边缘场景?游戏主体逻辑可能不太需要?
Circle CI
无
- 各个部分的打包与打包自动化(通过CI?)
- 人数2队伍数4出生在4个角,采用定时计分方式。
- 系统定时发布任务,玩家从指定地点收集食材,在工作台合成后提交到中心提交处获得分数,同时完成任务。
- 玩家可以拾取道具互相攻击
- 同一团队两个AI应该独立运行,通过提供的通信接口交换信息
- 道具设计(加/减移动速度、无敌、摧毁/击落他人物品、眩晕、陷阱、提高/降低特定地块食物产出速度、得分翻倍/减半、增大/减小视野)
- 角色设计
- 合成路线图设计
无
- 报名、组队
- 提交代码
- 方便的上传打包后的文件、更新版本、提供下载所需的元数据、API等等(更新),最好支持增量/全量两种
- 房间机制:通过API可以新建房间、获取当前房间信息、自动关闭空房间、加入房间(每个房间对应一个)、退出房间??每个房间对应一个容器
- 动态伸缩??
- 整体框架升级到.Net Core 3.0。
- 各个组在对应项目的Readme.md中写点东西,至少挂名。
- 游戏起名字。
- .Net Core 3.0 Runtime分发,文档修改。
- Unity需要的依赖分发?
- 完善架构与对接中的对接细节,主要是消息Proto、房间机制下与网站的通信文件
- 样例AI
整理代码,文档化整体设计,争取成为THUAI史上经典开发模板