Skip to content

概述

1. 大赛概况

1.1. 本届赛题

1.1.1. 名称

未来战场

1.1.2. 背景

【科技与勇气交织的史诗】

在自动化系和软件学院学生科协精心策划的《未来战场》赛道中,你将作为一名英勇的战士,踏入这个充满挑战与机遇的战场。在这个高度自动化的近未来世界中,战争已经演变为无人化、智能化的较量。你置身于现实与虚拟的交汇点,操控着先进的无人作战系统,与来自世界各地的对手展开激烈的角逐。

你肩负着守护家园的重任,需要充分发挥智慧和勇气,运用各种高科技装备,制定出精妙的战略和战术。你编写的无人作战系统将成为得力助手,它们具备高度自主性和智能化能力,能够在战场上独当一面。然而战场危机四伏,敌人猛烈的攻击如狂风暴雨,网络病毒的侵袭更似幽灵潜行。你需要步步为营,智勇并举,才能在这场未来战争中披荆斩棘,报效家国。

每一次胜利,都是你为国家荣誉而战斗的见证;每一分成绩,都是你为国家利益而努力的回报。在这场近未来无人化战争的舞台上,你将用自己的智慧和勇气,书写下激励人心的英雄篇章!让我们共同为国家的繁荣和强大而努力,展现出新时代青年的风采与担当!

1.2. 参赛流程

1.2.1. 大赛日程

复赛时间为 2024 年 5 月 12 日,决赛时间为 5 月 23 日。选手需要在复赛时间内在网站提交代码。

1.2.2. 报名方法

【报名问卷】 请填写如下问卷 https://wj.qq.com/s2/14528984/c7b2/ ,并加入比赛选手群。问卷填写完成且有效则视为参赛。

【关于组队】

选手可在报名网站自行组队,每队不超过3人,组队截止时间与报名截止时间相同。

1.3. 奖励办法

奖项 预计奖金(元)
特等奖 8000
一等奖 5000
二等奖 3000
三等奖 1000

注:该奖励只对于自动化系和软件学院承办的“未来战场”赛道,奖励的最终解释权归主办方所有。

2. 比赛规则

2.1. 比赛流程

每场比赛均由两支队伍展开激烈对战,即场上仅存在两个无人作战系统。

2.1.1. 比赛开始前

地图上会随机分布各种资源,包括武器、弹药、护甲、药品和手榴弹。选手们需要在比赛开始前的准备时刻通过代码预先设定好起始位置,以便在比赛开始时迅速进入战斗状态。

2.1.2. 比赛过程中

比赛开始后,选手们需要通过智能算法控制无人作战系统在地图上移动,寻找并收集这些资源,以提升自身的战斗力。同时,选手们可以对其他队伍的无人作战系统发起攻击,争夺优势。

地图上会有一个不断缩小的安全区,安全区外的区域会受到网络病毒的影响。选手在安全区外每秒会受到伤害,因此需要时刻注意安全区的变化,避免被病毒侵蚀。同时,安全区的缩小也会迫使选手们逐渐靠近,增加战斗的频率和激烈程度。

2.1.3. 结束条件

比赛持续到只剩下最后一个无人作战系统存活,该系统所属的队伍即为胜利者。如果在规定的时间内,所有队伍的无人作战系统都已全部被淘汰,那么存活时间最长的队伍将获胜。

关于比赛的更多细节与规则,请参见下文。

2.2. 细节规则

2.2.1. 帧数

比赛以每秒 20 ticks(即20次更新)的速度进行。

2.2.2. 地图

大小为 256m * 256m 的平面,由 256 * 256 个边长为 1m 的方格构成,每个方格的中心位置可表示为 \((a + 0.5, b + 0.5)\)\(a,b\) 为整数。地图上随机分布有墙体和资源。墙体能抵挡部分攻击,为玩家提供庇护;资源不会刷新,可供选手收集以增强自身实力。选手需巧妙利用地形与资源,展开激烈的较量。

地图上弥漫着网络病毒,安全区会不断缩小。

2.2.2.1. 墙体

由棱长为1m的正方体组成,可以抵挡部分攻击,墙体不可被破坏

Walls.jpg

上图展示了地图中墙体的示意图,这些墙体是根据一定的规则生成的,其形状固定而位置随机。这些墙体的生成是通过特定的代码实现的,你可以通过以下链接查看生成形状的代码:thuai-7/server/src/GameServer/GameLogic/Map/Map.Buildings.cs at main · thuasta/thuai-7 · GitHub

2.2.2.2. 安全区

安全区是一个初始半径为256m的圆形区域,其面积会随着时间的推移逐渐减小,5min后消失。安全区的圆心会随机移动,选手需要时刻关注安全区的位置,以避免受到网络病毒的伤害。在安全区外,选手每秒会受到20点真实伤害(每tick受到1点伤害),因此必须尽快进入安全区。以下是安全区示意图,红色粒子效果内较明亮区域为安全区。

Circle.jpg

2.2.5. 选手

无人作战系统具有以下属性:

  • 物理实体:直径1米的圆柱体。   > 仅限于受击判定。移动时视为质点

  • 生命值:150点,生命值耗尽后无人作战系统被淘汰。

  • 速度:每秒5米。

  • 出生点选择:游戏开始的前 200 tick 内为准备时间,游戏逻辑不会更新,选手攻击、移动、拾取等操作均不生效。选手此时可以根据地图信息在地图范围内选择一个出生点,之后无法更改。若出生点不合法(例如在墙体上)或选手没有选择,则会被系统随机分配一个合法的出生点。❗注意,在前200 Ticks 中,选手无法获得地图上的其他选手的位置信息(得到的位置总是为(0, 0))。

  • 移动:选手给出目的地坐标后,沿直线前进;运动过程中若碰到墙体,则仅保留平行于墙体的速度分量。

    正常情况下坐标计算误差不超过 \(10^{-3}\)

  • 背包容量:170个单位空间,用于存放收集到的资源。

  • 拾取:选手可以拾取 当前脚下 1×1 方格上 的资源,若背包容量充足,资源会直接放入背包,拾取后资源消失。

    如何得到当前脚下是哪一块方格呢?选手可以通过 SDK 获取自己当前的位置,然后将其向下取整即可得到当前脚下方格的坐标。

  • 攻击:无武器时拳击,CD为1游戏刻,伤害为38生命值。可拾取至多两把 不同类型 的武器(例如当无人作战系统已拾取 AWM, 则不能再拾取地图上的其他 AWM

    选手应避免目标位置和无人作战系统自身位置重合,否则无人作战系统将因无法辨认目标方位而浪费子弹,

  • 视野:无人作战系统可以获取地图上的所有信息,包括其他选手的位置、状态和资源分布。

    可获取已掷出的手雷大致位置,因此无人作战系统需要自主判断地图上可能存在的手雷。

  • 无人作战系统所有操作都是按请求结算,即无人作战系统每发起一次请求都会【立即】结算。一帧内可以进行任意多次操作。

2.3. 源码仓库

更多细节请关注科协仓库:https://github.com/thuasta/thuai-7/tree/main

3. 选手代码实现要求

3.1. 总述

选手需要写出一个完整的程序(Agent),能够完成下列基本操作,并根据战场形势决定最优策略。选手的所有逻辑包括条件判断、动态的检测与决策等)都必须在代码中完成,一旦开始对战就无法通过任何形式(如命令行)改变逻辑或手动输入命令。选手最终提交一个或多个文件(若选择使用接口,则为相应的.cpp 或 .py文件),其中必须包括所有的代码。

基本操作:选择出生地;移动 / 停止;拾取 / 丢弃资源;攻击;使用药品;使用手榴弹;获取战场信息。

3.2. 接口调用说明

选手的代码需要通过预定义的API与比赛服务器进行交互,请点击页面左方查看 Python SDK 文档C++ SDK 文档

4. 赛制说明

4.1. 初赛赛制

循环赛制,任意两个智能体之间对战4次。

4.2. 决赛赛制

循环赛制,任意两个智能体之间对战4次。

娱乐赛

初赛后,决赛前,设立娱乐赛,选手可以自由上传代码进行对战。